Skip to content

Commit c28d821

Browse files
committed
Tests: Fix compatbility with mypy 1.17 due to bump in django-stubs
Mypy version was bumped in django-stubs: * typeddjango/django-stubs#2744 The `force_uppercase_builtins` setting was deprecated in mypy 1.17. Caused test failures due to new logging. https://mypy.readthedocs.io/en/stable/changelog.html#deprecated-flag-force-uppercase-builtins
1 parent ea84340 commit c28d821

File tree

8 files changed

+36
-38
lines changed

8 files changed

+36
-38
lines changed

mypy.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ disallow_incomplete_defs = true
1313
disable_error_code = empty-body
1414
# TODO: update our test error messages to match new mypy output
1515
show_error_codes = false
16-
force_uppercase_builtins = true
1716
force_union_syntax = true
1817

1918
plugins =

tests/typecheck/test_decorators.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@
2727
main: |
2828
from rest_framework.decorators import api_view
2929
from rest_framework.request import Request
30-
@api_view() # E: Value of type variable "_RESP" of function cannot be "List[Any]"
30+
@api_view() # E: Value of type variable "_RESP" of function cannot be "list[Any]"
3131
def view_func2(request: Request) -> list: ...
3232
3333
- case: permission_classes
3434
main: |
3535
from rest_framework.decorators import permission_classes
36-
reveal_type(permission_classes) # N: Revealed type is "def (permission_classes: typing.Sequence[Union[Type[rest_framework.permissions.BasePermission], rest_framework.permissions.OperandHolder, rest_framework.permissions.SingleOperandHolder]]) -> def [_View <: def (*Any, **Any) -> django.http.response.HttpResponseBase] (_View`-1) -> _View`-1"
36+
reveal_type(permission_classes) # N: Revealed type is "def (permission_classes: typing.Sequence[Union[type[rest_framework.permissions.BasePermission], rest_framework.permissions.OperandHolder, rest_framework.permissions.SingleOperandHolder]]) -> def [_View <: def (*Any, **Any) -> django.http.response.HttpResponseBase] (_View`-1) -> _View`-1"
3737
3838
- case: permission_classes_with_operators
3939
main: |

tests/typecheck/test_fields.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
5353
CharField(initial='', default=lambda: '')
5454
CharField(initial=None, default=4) # E: Argument "default" to "CharField" has incompatible type "int"; expected "Union[Union[str, _StrPromise], Callable[[], Union[str, _StrPromise]], _Empty, None]"
55-
CharField(initial={}, default=empty) # E: Argument "initial" to "CharField" has incompatible type "Dict[Never, Never]"; expected "Union[str, Callable[[], str], _Empty, None]"
55+
CharField(initial={}, default=empty) # E: Argument "initial" to "CharField" has incompatible type "dict[Never, Never]"; expected "Union[str, Callable[[], str], _Empty, None]"
5656
5757
x: Optional[str] = CharField().get_initial()
5858
y: Optional[int] = CharField().get_initial() # E: Incompatible types in assignment (expression has type "Optional[str]", variable has type "Optional[int]")
@@ -80,23 +80,23 @@
8080
8181
- case: MultipleChoiceField_default
8282
main: |
83-
from typing import Set, Union
83+
from typing import Union
8484
from rest_framework.fields import MultipleChoiceField
8585
86-
def int_set_callback() -> Set[int]: ...
87-
def mixed_set_callback() -> Set[Union[int, str]]: ...
86+
def int_set_callback() -> set[int]: ...
87+
def mixed_set_callback() -> set[Union[int, str]]: ...
8888
8989
MultipleChoiceField(choices=[1], default={1})
9090
MultipleChoiceField(choices=['test'], allow_null=True, default=None)
9191
MultipleChoiceField(choices=[1], default=int_set_callback)
9292
MultipleChoiceField(choices=[1, 'lulz'], default=mixed_set_callback)
93-
MultipleChoiceField(choices=[1], default=lambda: [1]) # E: Argument "default" to "MultipleChoiceField" has incompatible type "Callable[[], List[int]]"; expected "Union[Set[Union[str, int]], Set[str], Set[int], Callable[[], Union[Set[Union[str, int]], Set[str], Set[int]]], _Empty, None]" # E: Incompatible return value type (got "List[int]", expected "Union[Set[Union[str, int]], Set[str], Set[int]]")
93+
MultipleChoiceField(choices=[1], default=lambda: [1]) # E: Argument "default" to "MultipleChoiceField" has incompatible type "Callable[[], list[int]]"; expected "Union[set[Union[str, int]], set[str], set[int], Callable[[], Union[set[Union[str, int]], set[str], set[int]]], _Empty, None]" # E: Incompatible return value type (got "list[int]", expected "Union[set[Union[str, int]], set[str], set[int]]")
9494
9595
MultipleChoiceField(choices=[(1, "1"), (2, "2")], default={1})
96-
MultipleChoiceField(choices=[(1, "1"), (2, "2")], default=[1]) # E: Argument "default" to "MultipleChoiceField" has incompatible type "List[int]"; expected "Union[Set[Union[str, int]], Set[str], Set[int], Callable[[], Union[Set[Union[str, int]], Set[str], Set[int]]], _Empty, None]"
96+
MultipleChoiceField(choices=[(1, "1"), (2, "2")], default=[1]) # E: Argument "default" to "MultipleChoiceField" has incompatible type "list[int]"; expected "Union[set[Union[str, int]], set[str], set[int], Callable[[], Union[set[Union[str, int]], set[str], set[int]]], _Empty, None]"
9797
9898
MultipleChoiceField(choices=[(1, "1"), (2, "2")], initial={1})
99-
MultipleChoiceField(choices=[(1, "1"), (2, "2")], initial=[1]) # E: Argument "initial" to "MultipleChoiceField" has incompatible type "List[int]"; expected "Union[Set[Union[Union[str, _StrPromise], int]], Set[Union[str, _StrPromise]], Set[int], Callable[[], Union[Set[Union[Union[str, _StrPromise], int]], Set[Union[str, _StrPromise]], Set[int]]], _Empty, None]"
99+
MultipleChoiceField(choices=[(1, "1"), (2, "2")], initial=[1]) # E: Argument "initial" to "MultipleChoiceField" has incompatible type "list[int]"; expected "Union[set[Union[Union[str, _StrPromise], int]], set[Union[str, _StrPromise]], set[int], Callable[[], Union[set[Union[Union[str, _StrPromise], int]], set[Union[str, _StrPromise]], set[int]]], _Empty, None]"
100100
101101
- case: FileField_default
102102
main: |
@@ -123,13 +123,13 @@
123123
DictField(default={})
124124
DictField(default={'a': 1, 'b': 2})
125125
DictField(default=lambda: {'a': [], 'b': 'str'})
126-
DictField(default=[]) # E: Argument "default" to "DictField" has incompatible type "List[Never]"; expected "Union[Dict[Any, Any], Callable[[], Dict[Any, Any]], _Empty, None]"
126+
DictField(default=[]) # E: Argument "default" to "DictField" has incompatible type "list[Never]"; expected "Union[dict[Any, Any], Callable[[], dict[Any, Any]], _Empty, None]"
127127
128128
JSONField(allow_null=True, default=None)
129129
JSONField(default={})
130130
JSONField(default={'a': 1, 'b': 2})
131131
JSONField(default=lambda: {'a': [], 'b': 'str'})
132-
JSONField(default=[]) # E: Argument "default" to "JSONField" has incompatible type "List[Never]"; expected "Union[Mapping[Any, Any], Callable[[], Mapping[Any, Any]], _Empty, None]"
132+
JSONField(default=[]) # E: Argument "default" to "JSONField" has incompatible type "list[Never]"; expected "Union[Mapping[Any, Any], Callable[[], Mapping[Any, Any]], _Empty, None]"
133133
134134
- case: ListField_default
135135
main: |
@@ -139,4 +139,4 @@
139139
ListField(default=[])
140140
ListField(default=[0, 'one'])
141141
ListField(default=lambda: [])
142-
ListField(default='wät') # E: Argument "default" to "ListField" has incompatible type "str"; expected "Union[List[Any], Callable[[], List[Any]], _Empty, None]"
142+
ListField(default='wät') # E: Argument "default" to "ListField" has incompatible type "str"; expected "Union[list[Any], Callable[[], list[Any]], _Empty, None]"

tests/typecheck/test_filters.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
1515
- case: django_filters
1616
main: |
17-
from typing import Any, List
17+
from typing import Any
1818
from rest_framework.mixins import CreateModelMixin
1919
from rest_framework.generics import GenericAPIView, BaseFilterProtocol
2020
from rest_framework.request import Request
@@ -28,7 +28,7 @@
2828
class MyFilterBackend:
2929
def filter_queryset(self, request: Request, queryset: QuerySet[MyModel], view: APIView) -> QuerySet[MyModel]:
3030
pass
31-
def get_schema_fields(self, view: APIView) -> List[Any]:
31+
def get_schema_fields(self, view: APIView) -> list[Any]:
3232
pass
3333
def get_schema_operation_parameters(self, view: APIView) -> Any:
3434
pass

tests/typecheck/test_routers.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
- case: test_router_urls
22
main: |
3-
from typing import List, Union
3+
from typing import Union
44
55
from django.urls import path, include
66
from rest_framework.routers import SimpleRouter, DefaultRouter
@@ -11,7 +11,7 @@
1111
default = DefaultRouter()
1212
reveal_type(default.urls) # N: Revealed type is "builtins.list[Union[django.urls.resolvers.URLPattern, django.urls.resolvers.URLResolver]]"
1313
14-
urlpatterns: List[_AnyURL] = [
14+
urlpatterns: list[_AnyURL] = [
1515
path('api/', include(simple.urls)),
1616
path('api/', include((simple.urls, 'app_name'), namespace='instance_name')),
1717
path('default/', include(default.urls)),

tests/typecheck/test_serializers.yml

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
main: |
1515
from rest_framework import serializers
1616
17-
reveal_type(serializers.ModelSerializer.Meta.model) # N: Revealed type is "Type[_MT?]"
17+
reveal_type(serializers.ModelSerializer.Meta.model) # N: Revealed type is "type[_MT?]"
1818
reveal_type(serializers.ModelSerializer.Meta.fields) # N: Revealed type is "typing.Sequence[builtins.str]"
1919
reveal_type(serializers.ModelSerializer.Meta.read_only_fields) # N: Revealed type is "Union[typing.Sequence[builtins.str], None]"
2020
reveal_type(serializers.ModelSerializer.Meta.exclude) # N: Revealed type is "Union[typing.Sequence[builtins.str], None]"
@@ -25,13 +25,12 @@
2525
main: |
2626
from rest_framework import serializers
2727
from django.contrib.auth.models import User
28-
from typing import Type
2928
3029
class TestSerializer(serializers.ModelSerializer):
3130
class Meta:
3231
model = User
3332
34-
def is_meta_model(serializer: Type[serializers.ModelSerializer]) -> bool:
33+
def is_meta_model(serializer: type[serializers.ModelSerializer]) -> bool:
3534
return bool(serializer.Meta.model)
3635
3736
reveal_type(is_meta_model(TestSerializer)) # N: Revealed type is "builtins.bool"
@@ -106,7 +105,7 @@
106105
- arg: ""
107106
err: No overload variant of "ReturnList" matches argument type "TestSerializer"
108107
- arg: "[],"
109-
err: No overload variant of "ReturnList" matches argument types "List[Never]", "TestSerializer"
108+
err: No overload variant of "ReturnList" matches argument types "list[Never]", "TestSerializer"
110109
main: |
111110
from rest_framework import serializers
112111
from rest_framework.utils.serializer_helpers import ReturnList
@@ -125,7 +124,7 @@
125124
- arg: ""
126125
err: All overload variants of "ReturnList" require at least one argument
127126
- arg: "[]"
128-
err: No overload variant of "ReturnList" matches argument type "List[Never]"
127+
err: No overload variant of "ReturnList" matches argument type "list[Never]"
129128
main: |
130129
from rest_framework import serializers
131130
from rest_framework.utils.serializer_helpers import ReturnList
@@ -176,11 +175,11 @@
176175
- arg: ""
177176
err: No overload variant of "ReturnDict" matches argument type "TestSerializer"
178177
- arg: "{},"
179-
err: No overload variant of "ReturnDict" matches argument types "Dict[Never, Never]", "TestSerializer"
178+
err: No overload variant of "ReturnDict" matches argument types "dict[Never, Never]", "TestSerializer"
180179
- arg: "[],"
181-
err: No overload variant of "ReturnDict" matches argument types "List[Never]", "TestSerializer"
180+
err: No overload variant of "ReturnDict" matches argument types "list[Never]", "TestSerializer"
182181
- arg: "[('a', 'a')],"
183-
err: No overload variant of "ReturnDict" matches argument types "List[Tuple[str, str]]", "TestSerializer"
182+
err: No overload variant of "ReturnDict" matches argument types "list[tuple[str, str]]", "TestSerializer"
184183
main: |
185184
from rest_framework import serializers
186185
from rest_framework.utils.serializer_helpers import ReturnDict
@@ -195,21 +194,21 @@
195194
main:6: note: def [_KT, _VT] ReturnDict(self, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
196195
main:6: note: def [_KT, _VT] ReturnDict(self, SupportsKeysAndGetItem[_KT, _VT], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[_KT, _VT]
197196
main:6: note: def [_KT, _VT] ReturnDict(self, SupportsKeysAndGetItem[str, _VT], /, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
198-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[Tuple[_KT, _VT]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[_KT, _VT]
199-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[Tuple[str, _VT]], /, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
200-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[List[str]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[str, str]
201-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[List[bytes]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[bytes, bytes]
197+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[tuple[_KT, _VT]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[_KT, _VT]
198+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[tuple[str, _VT]], /, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
199+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[list[str]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[str, str]
200+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[list[bytes]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[bytes, bytes]
202201
203202
- case: test_return_dict_serializer_is_required
204203
parametrized:
205204
- arg: ""
206205
err: All overload variants of "ReturnDict" require at least one argument
207206
- arg: "{}"
208-
err: No overload variant of "ReturnDict" matches argument type "Dict[Never, Never]"
207+
err: No overload variant of "ReturnDict" matches argument type "dict[Never, Never]"
209208
- arg: "[]"
210-
err: No overload variant of "ReturnDict" matches argument type "List[Never]"
209+
err: No overload variant of "ReturnDict" matches argument type "list[Never]"
211210
- arg: "[('a', 'a')]"
212-
err: No overload variant of "ReturnDict" matches argument type "List[Tuple[str, str]]"
211+
err: No overload variant of "ReturnDict" matches argument type "list[tuple[str, str]]"
213212
main: |
214213
from rest_framework import serializers
215214
from rest_framework.utils.serializer_helpers import ReturnDict
@@ -224,7 +223,7 @@
224223
main:6: note: def [_KT, _VT] ReturnDict(self, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
225224
main:6: note: def [_KT, _VT] ReturnDict(self, SupportsKeysAndGetItem[_KT, _VT], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[_KT, _VT]
226225
main:6: note: def [_KT, _VT] ReturnDict(self, SupportsKeysAndGetItem[str, _VT], /, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
227-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[Tuple[_KT, _VT]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[_KT, _VT]
228-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[Tuple[str, _VT]], /, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
229-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[List[str]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[str, str]
230-
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[List[bytes]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[bytes, bytes]
226+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[tuple[_KT, _VT]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[_KT, _VT]
227+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[tuple[str, _VT]], /, *, serializer: BaseSerializer[Any], **kwargs: _VT) -> ReturnDict[str, _VT]
228+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[list[str]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[str, str]
229+
main:6: note: def [_KT, _VT] ReturnDict(self, Iterable[list[bytes]], /, *, serializer: BaseSerializer[Any]) -> ReturnDict[bytes, bytes]

tests/typecheck/test_test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from rest_framework import test, status
2222
2323
class MyTest(test.URLPatternsTestCase):
24-
urlpatterns : List[Union[URLPattern, URLResolver]] = []
24+
urlpatterns : list[Union[URLPattern, URLResolver]] = []
2525
def test_example(self) -> None:
2626
reveal_type(self.client) # N: Revealed type is "django.test.client.Client"
2727
response = self.client.get('/', format="json")

tests/typecheck/test_views.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,5 @@
7373
from rest_framework.permissions import BasePermission
7474
7575
class MyView(GenericViewSet):
76-
def get_permissions(self) -> List[BasePermission]:
76+
def get_permissions(self) -> list[BasePermission]:
7777
...

0 commit comments

Comments
 (0)