Skip to content

Commit

Permalink
Remove ExceptionMiddleware import proxy from starlette.exceptions
Browse files Browse the repository at this point in the history
… module (#2826)

* Remove `ExceptionMiddleware` proxy from `starlette.exceptions` module

* remove test
  • Loading branch information
Kludex authored Dec 28, 2024
1 parent 2c98fe3 commit 856c904
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 45 deletions.
33 changes: 2 additions & 31 deletions starlette/exceptions.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,11 @@
from __future__ import annotations

import http
import typing
import warnings

__all__ = ("HTTPException", "WebSocketException")
from collections.abc import Mapping


class HTTPException(Exception):
def __init__(
self,
status_code: int,
detail: str | None = None,
headers: typing.Mapping[str, str] | None = None,
) -> None:
def __init__(self, status_code: int, detail: str | None = None, headers: Mapping[str, str] | None = None) -> None:
if detail is None:
detail = http.HTTPStatus(status_code).phrase
self.status_code = status_code
Expand All @@ -39,24 +31,3 @@ def __str__(self) -> str:
def __repr__(self) -> str:
class_name = self.__class__.__name__
return f"{class_name}(code={self.code!r}, reason={self.reason!r})"


__deprecated__ = "ExceptionMiddleware"


def __getattr__(name: str) -> typing.Any: # pragma: no cover
if name == __deprecated__:
from starlette.middleware.exceptions import ExceptionMiddleware

warnings.warn(
f"{__deprecated__} is deprecated on `starlette.exceptions`. "
f"Import it from `starlette.middleware.exceptions` instead.",
category=DeprecationWarning,
stacklevel=3,
)
return ExceptionMiddleware
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")


def __dir__() -> list[str]:
return sorted(list(__all__) + [__deprecated__]) # pragma: no cover
14 changes: 0 additions & 14 deletions tests/test_exceptions.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import warnings
from collections.abc import Generator

import pytest
Expand Down Expand Up @@ -181,19 +180,6 @@ class CustomWebSocketException(WebSocketException):
)


def test_exception_middleware_deprecation() -> None:
# this test should be removed once the deprecation shim is removed
with pytest.warns(DeprecationWarning):
from starlette.exceptions import ExceptionMiddleware # noqa: F401

with warnings.catch_warnings():
warnings.simplefilter("error")
import starlette.exceptions

with pytest.warns(DeprecationWarning):
starlette.exceptions.ExceptionMiddleware


def test_request_in_app_and_handler_is_the_same_object(client: TestClient) -> None:
response = client.post("/consume_body_in_endpoint_and_handler", content=b"Hello!")
assert response.status_code == 422
Expand Down

0 comments on commit 856c904

Please sign in to comment.