Skip to content

Commit febc04e

Browse files
authored
Upgrade to mypy 1.7.0 (#1837)
1 parent eda5787 commit febc04e

File tree

16 files changed

+30
-28
lines changed

16 files changed

+30
-28
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ We rely on different `django` and `mypy` versions:
4949

5050
| django-stubs | Mypy version | Django version | Django partial support | Python version |
5151
|----------------|--------------|----------------|------------------------|----------------|
52+
| (next version) | 1.7.x | 4.2 | 4.1, 3.2 | 3.8 - 3.12 |
5253
| 4.2.6 | 1.6.x | 4.2 | 4.1, 3.2 | 3.8 - 3.12 |
5354
| 4.2.5 | 1.6.x | 4.2 | 4.1, 3.2 | 3.8 - 3.12 |
5455
| 4.2.4 | 1.5.x | 4.2 | 4.1, 3.2 | 3.8 - 3.11 |

django-stubs/contrib/admin/utils.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def lookup_field(
6969
name: Callable | str, obj: Model, model_admin: BaseModelAdmin | None = ...
7070
) -> tuple[Field | None, str | None, Any]: ...
7171
@overload
72-
def label_for_field( # type: ignore[misc]
72+
def label_for_field( # type: ignore[overload-overlap]
7373
name: Callable | str,
7474
model: type[Model],
7575
model_admin: BaseModelAdmin | None = ...,

django-stubs/core/files/base.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ from typing_extensions import Self
99
class File(FileProxyMixin[AnyStr], IO[AnyStr]):
1010
DEFAULT_CHUNK_SIZE: int
1111
file: IO[AnyStr] | None
12-
name: str | None # type: ignore[assignment]
12+
name: str | None
1313
mode: str
1414
def __init__(self, file: IO[AnyStr] | None, name: str | None = ...) -> None: ...
1515
def __bool__(self) -> bool: ...

django-stubs/db/backends/utils.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ class CursorDebugWrapper(CursorWrapper):
6969
) -> Generator[None, None, None]: ...
7070

7171
@overload
72-
def typecast_date(s: None | Literal[""]) -> None: ... # type: ignore[misc]
72+
def typecast_date(s: None | Literal[""]) -> None: ... # type: ignore[overload-overlap]
7373
@overload
7474
def typecast_date(s: str) -> datetime.date: ...
7575
@overload
76-
def typecast_time(s: None | Literal[""]) -> None: ... # type: ignore[misc]
76+
def typecast_time(s: None | Literal[""]) -> None: ... # type: ignore[overload-overlap]
7777
@overload
7878
def typecast_time(s: str) -> datetime.time: ...
7979
@overload
80-
def typecast_timestamp(s: None | Literal[""]) -> None: ... # type: ignore[misc]
80+
def typecast_timestamp(s: None | Literal[""]) -> None: ... # type: ignore[overload-overlap]
8181
@overload
8282
def typecast_timestamp(s: str) -> datetime.datetime: ...
8383
def split_identifier(identifier: str) -> tuple[str, str]: ...

django-stubs/db/models/sql/compiler.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ class SQLCompiler:
9797
) -> Iterator[Sequence[Any]]: ...
9898
def has_results(self) -> bool: ...
9999
@overload
100-
def execute_sql( # type: ignore[misc]
100+
def execute_sql( # type: ignore[overload-overlap]
101101
self, result_type: Literal["cursor"] = ..., chunked_fetch: bool = ..., chunk_size: int = ...
102102
) -> CursorWrapper: ...
103103
@overload
104104
def execute_sql(
105105
self, result_type: Literal["no results"] | None = ..., chunked_fetch: bool = ..., chunk_size: int = ...
106106
) -> None: ...
107107
@overload
108-
def execute_sql( # type: ignore[misc]
108+
def execute_sql( # type: ignore[overload-overlap]
109109
self, result_type: Literal["single"] = ..., chunked_fetch: bool = ..., chunk_size: int = ...
110110
) -> Iterable[Sequence[Any]] | None: ...
111111
@overload

django-stubs/forms/models.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ class ModelMultipleChoiceField(ModelChoiceField):
304304

305305
def modelform_defines_fields(form_class: type[ModelForm]) -> bool: ...
306306
@overload
307-
def _get_foreign_key( # type: ignore[misc]
307+
def _get_foreign_key( # type: ignore[overload-overlap]
308308
parent_model: type[Model], model: type[Model], fk_name: str | None = ..., can_fail: Literal[True] = ...
309309
) -> ForeignKey | None: ...
310310
@overload

django-stubs/template/response.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class ContentNotRenderedError(Exception): ...
1919
class SimpleTemplateResponse(HttpResponse):
2020
content: Any
2121
closed: bool
22-
cookies: SimpleCookie[str]
22+
cookies: SimpleCookie[str] # type: ignore[type-arg]
2323
status_code: int
2424
rendering_attrs: Any
2525
template_name: _TemplateForResponseT
@@ -50,7 +50,7 @@ class TemplateResponse(SimpleTemplateResponse):
5050
closed: bool
5151
context: RequestContext
5252
context_data: dict[str, Any] | None
53-
cookies: SimpleCookie[str]
53+
cookies: SimpleCookie[str] # type: ignore[type-arg]
5454
csrf_cookie_set: bool
5555
json: functools.partial
5656
_request: HttpRequest

django-stubs/utils/encoding.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def iri_to_uri(iri: None) -> None: ...
6060
@overload
6161
def iri_to_uri(iri: str | Promise) -> str: ...
6262
@overload
63-
def uri_to_iri(uri: None) -> None: ... # type: ignore[misc]
63+
def uri_to_iri(uri: None) -> None: ... # type: ignore[overload-overlap]
6464
@overload
6565
def uri_to_iri(uri: Any) -> str: ...
6666
def escape_uri_path(path: str) -> str: ...

django-stubs/utils/formats.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ _T = TypeVar("_T")
3030
# details it works as expected (all values from Union are `localize`d to str,
3131
# while type of others is preserved)
3232
@overload
33-
def localize( # type: ignore[misc]
33+
def localize( # type: ignore[overload-overlap]
3434
value: builtin_datetime | date | time | Decimal | float | str, use_l10n: bool | None = ...
3535
) -> str: ...
3636
@overload
3737
def localize(value: _T, use_l10n: bool | None = ...) -> _T: ...
3838
@overload
39-
def localize_input( # type: ignore[misc]
39+
def localize_input( # type: ignore[overload-overlap]
4040
value: builtin_datetime | date | time | Decimal | float | str, default: str | None = ...
4141
) -> str: ...
4242
@overload

django-stubs/utils/xmlutils.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from xml.sax.saxutils import XMLGenerator
2+
from xml.sax.xmlreader import AttributesImpl
23

34
class UnserializableContentError(ValueError): ...
45

56
class SimplerXMLGenerator(XMLGenerator):
67
def addQuickElement(self, name: str, contents: str | None = ..., attrs: dict[str, str] | None = ...) -> None: ...
78
def characters(self, content: str) -> None: ...
8-
def startElement(self, name: str, attrs: dict[str, str]) -> None: ...
9+
def startElement(self, name: str, attrs: AttributesImpl) -> None: ...

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ Django==4.2.7
1212
-e .[compatible-mypy]
1313

1414
# Overrides:
15-
mypy==1.6.1
15+
mypy==1.7.0

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def find_stub_files(name: str) -> List[str]:
3232

3333
# Keep compatible-mypy major.minor version pinned to what we use in CI (requirements.txt)
3434
extras_require = {
35-
"compatible-mypy": ["mypy~=1.6.0"],
35+
"compatible-mypy": ["mypy~=1.7.0"],
3636
}
3737

3838
setup(

tests/typecheck/db/migrations/test_operations.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
2626
RunSQL(sql=["SOME SQLS", ("SOME SQLS %s, %s", [object(), "ANOTHER PARAM"])])
2727
28-
RunSQL(sql=("SOME SQL", {})) # E: Argument "sql" to "RunSQL" has incompatible type "Tuple[str, Dict[<nothing>, <nothing>]]"; expected "Union[str, Union[List[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]]], Tuple[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]], ...], Tuple[()]]]" [arg-type]
28+
RunSQL(sql=("SOME SQL", {})) # E: Argument "sql" to "RunSQL" has incompatible type "Tuple[str, Dict[Never, Never]]"; expected "Union[str, Union[List[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]]], Tuple[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]], ...], Tuple[()]]]" [arg-type]
2929
RunSQL(sql=("SOME SQL", 1)) # E: Argument "sql" to "RunSQL" has incompatible type "Tuple[str, int]"; expected "Union[str, Union[List[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]]], Tuple[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]], ...], Tuple[()]]]" [arg-type]
3030
RunSQL(sql=("SOME SQL", None)) # E: Argument "sql" to "RunSQL" has incompatible type "Tuple[str, None]"; expected "Union[str, Union[List[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]]], Tuple[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]], ...], Tuple[()]]]" [arg-type]
3131
RunSQL(sql=("SOME SQLS %(VAL)s", {1: "FOO"})) # E: Argument "sql" to "RunSQL" has incompatible type "Tuple[str, Dict[int, str]]"; expected "Union[str, Union[List[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]]], Tuple[Union[str, Tuple[str, Union[Dict[str, Any], Union[List[Any], Tuple[Any, ...], Tuple[()]], None]]], ...], Tuple[()]]]" [arg-type]

tests/typecheck/fields/test_related.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -650,8 +650,8 @@
650650
user = MyUser()
651651
reveal_type(user.book_set) # N: Revealed type is "myapp.models.Book_RelatedManager"
652652
reveal_type(user.article_set) # N: Revealed type is "myapp.models.Article_RelatedManager"
653-
reveal_type(user.book_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Book, builtins.int], *, bulk: builtins.bool =)"
654-
reveal_type(user.article_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Article, builtins.int], *, bulk: builtins.bool =)"
653+
reveal_type(user.book_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Book, builtins.int], bulk: builtins.bool =)"
654+
reveal_type(user.article_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Article, builtins.int], bulk: builtins.bool =)"
655655
reveal_type(user.book_set.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.LibraryEntityQuerySet"
656656
reveal_type(user.book_set.get()) # N: Revealed type is "myapp.models.Book"
657657
reveal_type(user.article_set.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.LibraryEntityQuerySet"

tests/typecheck/managers/querysets/test_from_queryset.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@
257257
- case: from_queryset_returns_intersection_of_manager_and_queryset
258258
main: |
259259
from myapp.models import MyModel, NewManager
260-
reveal_type(NewManager()) # N: Revealed type is "myapp.models.ModelBaseManagerFromModelQuerySet[<nothing>]"
260+
reveal_type(NewManager()) # N: Revealed type is "myapp.models.ModelBaseManagerFromModelQuerySet[Never]"
261261
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.ModelBaseManagerFromModelQuerySet[myapp.models.MyModel]"
262262
reveal_type(MyModel.objects.get()) # N: Revealed type is "myapp.models.MyModel"
263263
reveal_type(MyModel.objects.manager_only_method()) # N: Revealed type is "builtins.int"
@@ -283,12 +283,12 @@
283283
- case: from_queryset_with_class_name_provided
284284
main: |
285285
from myapp.models import MyModel, NewManager, OtherModel, OtherManager
286-
reveal_type(NewManager()) # N: Revealed type is "myapp.models.NewManager[<nothing>]"
286+
reveal_type(NewManager()) # N: Revealed type is "myapp.models.NewManager[Never]"
287287
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.NewManager[myapp.models.MyModel]"
288288
reveal_type(MyModel.objects.get()) # N: Revealed type is "myapp.models.MyModel"
289289
reveal_type(MyModel.objects.manager_only_method()) # N: Revealed type is "builtins.int"
290290
reveal_type(MyModel.objects.manager_and_queryset_method()) # N: Revealed type is "builtins.str"
291-
reveal_type(OtherManager()) # N: Revealed type is "myapp.models.X[<nothing>]"
291+
reveal_type(OtherManager()) # N: Revealed type is "myapp.models.X[Never]"
292292
reveal_type(OtherModel.objects) # N: Revealed type is "myapp.models.X[myapp.models.OtherModel]"
293293
reveal_type(OtherModel.objects.manager_only_method()) # N: Revealed type is "builtins.int"
294294
reveal_type(OtherModel.objects.manager_and_queryset_method()) # N: Revealed type is "builtins.str"
@@ -373,8 +373,8 @@
373373
from myapp.models import MyModel
374374
reveal_type(MyModel().objects) # N: Revealed type is "myapp.managers.ManagerFromModelQuerySet[myapp.models.MyModel]"
375375
reveal_type(MyModel().objects.get()) # N: Revealed type is "myapp.models.MyModel"
376-
reveal_type(MyModel().objects.base_queryset_method) # N: Revealed type is "def (param: Union[builtins.int, builtins.str]) -> <nothing>"
377-
reveal_type(MyModel().objects.base_queryset_method(2)) # N: Revealed type is "<nothing>"
376+
reveal_type(MyModel().objects.base_queryset_method) # N: Revealed type is "def (param: Union[builtins.int, builtins.str]) -> Never"
377+
reveal_type(MyModel().objects.base_queryset_method(2)) # N: Revealed type is "Never"
378378
installed_apps:
379379
- myapp
380380
files:
@@ -571,7 +571,7 @@
571571
reveal_type(MyModel.objects.reverse) # N: Revealed type is "def () -> myapp.models.MyQuerySet[myapp.models.MyModel]"
572572
reveal_type(MyModel.objects.select_for_update) # N: Revealed type is "def (nowait: builtins.bool =, skip_locked: builtins.bool =, of: typing.Sequence[builtins.str] =, no_key: builtins.bool =) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
573573
reveal_type(MyModel.objects.select_related) # N: Revealed type is "def (*fields: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
574-
reveal_type(MyModel.objects.union) # N: Revealed type is "def (*other_qs: Any, *, all: builtins.bool =) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
574+
reveal_type(MyModel.objects.union) # N: Revealed type is "def (*other_qs: Any, all: builtins.bool =) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
575575
reveal_type(MyModel.objects.using) # N: Revealed type is "def (alias: Union[builtins.str, None]) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
576576
installed_apps:
577577
- myapp
@@ -657,7 +657,7 @@
657657
- case: handles_name_collision_with_generated_type
658658
main: |
659659
from myapp.models import MyModel, BaseManagerFromModelQuerySet
660-
reveal_type(BaseManagerFromModelQuerySet()) # N: Revealed type is "myapp.models.BaseManagerFromModelQuerySet[<nothing>]"
660+
reveal_type(BaseManagerFromModelQuerySet()) # N: Revealed type is "myapp.models.BaseManagerFromModelQuerySet[Never]"
661661
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.BaseManagerFromModelQuerySet[myapp.models.MyModel]"
662662
installed_apps:
663663
- myapp
@@ -679,7 +679,7 @@
679679
main: |
680680
from myapp.models import MyModel, Generated, BaseManagerFromModelQuerySet
681681
reveal_type(BaseManagerFromModelQuerySet) # N: Revealed type is "builtins.int"
682-
reveal_type(Generated()) # N: Revealed type is "myapp.models.BaseManagerFromModelQuerySet1[<nothing>]"
682+
reveal_type(Generated()) # N: Revealed type is "myapp.models.BaseManagerFromModelQuerySet1[Never]"
683683
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.BaseManagerFromModelQuerySet1[myapp.models.MyModel]"
684684
installed_apps:
685685
- myapp

tests/typecheck/models/test_init.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@
292292
main:9: error: Incompatible types in assignment (expression has type "str", variable has type "int") [assignment]
293293
main:10: error: Incompatible types in assignment (expression has type "str", variable has type "Union[int, float]") [assignment]
294294
main:12: error: Incompatible types in assignment (expression has type "List[str]", variable has type "Sequence[Union[int, float]]") [assignment]
295-
main:13: error: Incompatible types in assignment (expression has type "List[<nothing>]", variable has type "Union[float, int, str, Combinable]") [assignment]
295+
main:13: error: Incompatible types in assignment (expression has type "List[Never]", variable has type "Union[float, int, str, Combinable]") [assignment]
296296
main:15: error: Incompatible type for "redefined_set_type" of "MyModel" (got "str", expected "int") [misc]
297297
main:15: error: Incompatible type for "redefined_union_set_type" of "MyModel" (got "str", expected "Union[int, float]") [misc]
298298
main:15: error: Incompatible type for "redefined_array_set_type" of "MyModel" (got "int", expected "Sequence[Union[int, float]]") [misc]

0 commit comments

Comments
 (0)