Skip to content

Commit 8030ad3

Browse files
Update middleware types (#2884)
1 parent 2a63c3d commit 8030ad3

File tree

5 files changed

+52
-10
lines changed

5 files changed

+52
-10
lines changed
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from typing import Any
1+
from typing import ClassVar
22

33
from django.http.request import HttpRequest
4-
from django.http.response import HttpResponse
4+
from django.http.response import HttpResponse, HttpResponseBase, HttpResponseRedirectBase
55
from django.utils.deprecation import MiddlewareMixin
66

77
class RedirectFallbackMiddleware(MiddlewareMixin):
8-
response_gone_class: Any
9-
response_redirect_class: Any
8+
response_gone_class: ClassVar[type[HttpResponseBase]]
9+
response_redirect_class: ClassVar[type[HttpResponseRedirectBase]]
1010
def process_response(self, request: HttpRequest, response: HttpResponse) -> HttpResponse: ...

django-stubs/middleware/common.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from typing import Any
1+
from typing import ClassVar
22

33
from django.http.request import HttpRequest
4-
from django.http.response import HttpResponseBase, HttpResponsePermanentRedirect
4+
from django.http.response import HttpResponseBase, HttpResponsePermanentRedirect, HttpResponseRedirectBase
55
from django.utils.deprecation import MiddlewareMixin
66

77
class CommonMiddleware(MiddlewareMixin):
8-
response_redirect_class: Any
8+
response_redirect_class: ClassVar[type[HttpResponseRedirectBase]]
99
def process_request(self, request: HttpRequest) -> HttpResponsePermanentRedirect | None: ...
1010
def should_redirect_with_slash(self, request: HttpRequest) -> bool: ...
1111
def get_full_path_with_slash(self, request: HttpRequest) -> str: ...

django-stubs/middleware/locale.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from typing import Any
1+
from typing import ClassVar
22

33
from django.http.request import HttpRequest
4-
from django.http.response import HttpResponseBase
4+
from django.http.response import HttpResponseBase, HttpResponseRedirectBase
55
from django.utils.deprecation import MiddlewareMixin
66

77
class LocaleMiddleware(MiddlewareMixin):
8-
response_redirect_class: Any
8+
response_redirect_class: ClassVar[type[HttpResponseRedirectBase]]
99
def process_request(self, request: HttpRequest) -> None: ...
1010
def process_response(self, request: HttpRequest, response: HttpResponseBase) -> HttpResponseBase: ...

tests/assert_type/middleware/__init__.py

Whitespace-only changes.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from django.contrib.redirects.middleware import RedirectFallbackMiddleware
2+
from django.http.response import (
3+
FileResponse,
4+
HttpResponse,
5+
HttpResponseGone,
6+
HttpResponsePermanentRedirect,
7+
HttpResponseRedirect,
8+
HttpResponseRedirectBase,
9+
)
10+
from django.middleware.common import CommonMiddleware
11+
from django.middleware.locale import LocaleMiddleware
12+
13+
14+
class CustomCommonMiddleware(CommonMiddleware):
15+
response_redirect_class = HttpResponsePermanentRedirect
16+
17+
18+
class BrokenCustomCommonMiddleware(CommonMiddleware):
19+
response_redirect_class = FileResponse # type:ignore[assignment] # pyright: ignore[reportAssignmentType]
20+
21+
22+
class CustomLocaleMiddleware(LocaleMiddleware):
23+
response_redirect_class = HttpResponseRedirect
24+
25+
26+
class BrokenCustomLocaleMiddleware(CommonMiddleware):
27+
response_redirect_class = FileResponse # type:ignore[assignment] # pyright: ignore[reportAssignmentType]
28+
29+
30+
class CustomRedirectFallbackMiddleware(RedirectFallbackMiddleware):
31+
response_redirect_class = HttpResponseRedirect
32+
response_gone_class = HttpResponseGone
33+
34+
35+
class CustomRedirectFallbackMiddleware2(RedirectFallbackMiddleware):
36+
response_redirect_class = HttpResponseRedirectBase
37+
response_gone_class = HttpResponse
38+
39+
40+
class BrokenCustomRedirectFallbackMiddleware(RedirectFallbackMiddleware):
41+
response_redirect_class = HttpResponse # type:ignore[assignment] # pyright: ignore[reportAssignmentType]
42+
response_gone_class = 12 # type:ignore[assignment] # pyright: ignore[reportAssignmentType]

0 commit comments

Comments
 (0)