Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/starlette/exceptions.py: 52%
23 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-26 06:12 +0000
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-26 06:12 +0000
1import http
2import typing
3import warnings
5__all__ = ("HTTPException", "WebSocketException")
8class HTTPException(Exception):
9 def __init__(
10 self,
11 status_code: int,
12 detail: typing.Optional[str] = None,
13 headers: typing.Optional[dict] = None,
14 ) -> None:
15 if detail is None:
16 detail = http.HTTPStatus(status_code).phrase
17 self.status_code = status_code
18 self.detail = detail
19 self.headers = headers
21 def __repr__(self) -> str:
22 class_name = self.__class__.__name__
23 return f"{class_name}(status_code={self.status_code!r}, detail={self.detail!r})"
26class WebSocketException(Exception):
27 def __init__(self, code: int, reason: typing.Optional[str] = None) -> None:
28 self.code = code
29 self.reason = reason or ""
31 def __repr__(self) -> str:
32 class_name = self.__class__.__name__
33 return f"{class_name}(code={self.code!r}, reason={self.reason!r})"
36__deprecated__ = "ExceptionMiddleware"
39def __getattr__(name: str) -> typing.Any: # pragma: no cover
40 if name == __deprecated__:
41 from starlette.middleware.exceptions import ExceptionMiddleware
43 warnings.warn(
44 f"{__deprecated__} is deprecated on `starlette.exceptions`. "
45 f"Import it from `starlette.middleware.exceptions` instead.",
46 category=DeprecationWarning,
47 stacklevel=3,
48 )
49 return ExceptionMiddleware
50 raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
53def __dir__() -> typing.List[str]:
54 return sorted(list(__all__) + [__deprecated__]) # pragma: no cover