--- /dev/null
+import datetime
+from _typeshed.wsgi import StartResponse, WSGIEnvironment
+from typing import Any, Iterable, NoReturn, Protocol, Text, Tuple, Type
+
+from werkzeug.wrappers import Response
+
+class _EnvironContainer(Protocol):
+ @property
+ def environ(self) -> WSGIEnvironment: ...
+
+class HTTPException(Exception):
+ code: int | None
+ description: Text | None
+ response: Response | None
+ def __init__(self, description: Text | None = ..., response: Response | None = ...) -> None: ...
+ @classmethod
+ def wrap(cls, exception: Type[Exception], name: str | None = ...) -> Any: ...
+ @property
+ def name(self) -> str: ...
+ def get_description(self, environ: WSGIEnvironment | None = ...) -> Text: ...
+ def get_body(self, environ: WSGIEnvironment | None = ...) -> Text: ...
+ def get_headers(self, environ: WSGIEnvironment | None = ...) -> list[tuple[str, str]]: ...
+ def get_response(self, environ: WSGIEnvironment | _EnvironContainer | None = ...) -> Response: ...
+ def __call__(self, environ: WSGIEnvironment, start_response: StartResponse) -> Iterable[bytes]: ...
+
+default_exceptions: dict[int, Type[HTTPException]]
+
+class BadRequest(HTTPException):
+ code: int
+ description: Text
+
+class ClientDisconnected(BadRequest): ...
+class SecurityError(BadRequest): ...
+class BadHost(BadRequest): ...
+
+class Unauthorized(HTTPException):
+ code: int
+ description: Text
+ www_authenticate: Iterable[object] | None
+ def __init__(
+ self,
+ description: Text | None = ...,
+ response: Response | None = ...,
+ www_authenticate: None | Tuple[object, ...] | list[object] | object = ...,
+ ) -> None: ...
+
+class Forbidden(HTTPException):
+ code: int
+ description: Text
+
+class NotFound(HTTPException):
+ code: int
+ description: Text
+
+class MethodNotAllowed(HTTPException):
+ code: int
+ description: Text
+ valid_methods: Any
+ def __init__(self, valid_methods: Any | None = ..., description: Any | None = ...): ...
+
+class NotAcceptable(HTTPException):
+ code: int
+ description: Text
+
+class RequestTimeout(HTTPException):
+ code: int
+ description: Text
+
+class Conflict(HTTPException):
+ code: int
+ description: Text
+
+class Gone(HTTPException):
+ code: int
+ description: Text
+
+class LengthRequired(HTTPException):
+ code: int
+ description: Text
+
+class PreconditionFailed(HTTPException):
+ code: int
+ description: Text
+
+class RequestEntityTooLarge(HTTPException):
+ code: int
+ description: Text
+
+class RequestURITooLarge(HTTPException):
+ code: int
+ description: Text
+
+class UnsupportedMediaType(HTTPException):
+ code: int
+ description: Text
+
+class RequestedRangeNotSatisfiable(HTTPException):
+ code: int
+ description: Text
+ length: Any
+ units: str
+ def __init__(self, length: Any | None = ..., units: str = ..., description: Any | None = ...): ...
+
+class ExpectationFailed(HTTPException):
+ code: int
+ description: Text
+
+class ImATeapot(HTTPException):
+ code: int
+ description: Text
+
+class UnprocessableEntity(HTTPException):
+ code: int
+ description: Text
+
+class Locked(HTTPException):
+ code: int
+ description: Text
+
+class FailedDependency(HTTPException):
+ code: int
+ description: Text
+
+class PreconditionRequired(HTTPException):
+ code: int
+ description: Text
+
+class _RetryAfter(HTTPException):
+ retry_after: None | int | datetime.datetime
+ def __init__(
+ self, description: Text | None = ..., response: Response | None = ..., retry_after: None | int | datetime.datetime = ...
+ ) -> None: ...
+
+class TooManyRequests(_RetryAfter):
+ code: int
+ description: Text
+
+class RequestHeaderFieldsTooLarge(HTTPException):
+ code: int
+ description: Text
+
+class UnavailableForLegalReasons(HTTPException):
+ code: int
+ description: Text
+
+class InternalServerError(HTTPException):
+ def __init__(
+ self, description: Text | None = ..., response: Response | None = ..., original_exception: Exception | None = ...
+ ) -> None: ...
+ code: int
+ description: Text
+
+class NotImplemented(HTTPException):
+ code: int
+ description: Text
+
+class BadGateway(HTTPException):
+ code: int
+ description: Text
+
+class ServiceUnavailable(_RetryAfter):
+ code: int
+ description: Text
+
+class GatewayTimeout(HTTPException):
+ code: int
+ description: Text
+
+class HTTPVersionNotSupported(HTTPException):
+ code: int
+ description: Text
+
+class Aborter:
+ mapping: Any
+ def __init__(self, mapping: Any | None = ..., extra: Any | None = ...) -> None: ...
+ def __call__(self, code: int | Response, *args: Any, **kwargs: Any) -> NoReturn: ...
+
+def abort(status: int | Response, *args: Any, **kwargs: Any) -> NoReturn: ...
+
+class BadRequestKeyError(BadRequest, KeyError): ...