Skip to content

Commit 14c65ed

Browse files
committed
Fix CountryField type annotation to accept type[Countries] class
Fixes #482. The stub file incorrectly declared the countries parameter as accepting a Countries instance instead of a Countries class, causing mypy errors when passing custom Countries subclasses. Also removed unnecessary mypy exclusion of tests directory, which would have caught this issue earlier.
1 parent c02e4c9 commit 14c65ed

File tree

3 files changed

+5
-7
lines changed

3 files changed

+5
-7
lines changed

changes/482.bugfix.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed type annotation for `CountryField.countries` parameter in stub file to accept `type[Countries]` instead of `Countries` instance, resolving mypy errors when using custom Countries subclasses. Also removed unnecessary exclusion of tests from mypy checking.

django_countries/fields.pyi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ class CountryField(models.CharField):
113113
multiple: Literal[False] = False,
114114
null: Literal[False] = False,
115115
blank: bool = False,
116-
countries: Countries | None = None,
116+
countries: type[Countries] | None = None,
117117
countries_flag_url: str | None = None,
118118
countries_str_attr: str = "code",
119119
blank_label: str | None = None,
@@ -128,7 +128,7 @@ class CountryField(models.CharField):
128128
multiple: Literal[False] = False,
129129
null: Literal[True],
130130
blank: bool = True,
131-
countries: Countries | None = None,
131+
countries: type[Countries] | None = None,
132132
countries_flag_url: str | None = None,
133133
countries_str_attr: str = "code",
134134
blank_label: str | None = None,
@@ -145,7 +145,7 @@ class CountryField(models.CharField):
145145
blank: bool = False,
146146
multiple_sort: bool = True,
147147
multiple_unique: bool = True,
148-
countries: Countries | None = None,
148+
countries: type[Countries] | None = None,
149149
countries_flag_url: str | None = None,
150150
countries_str_attr: str = "code",
151151
**kwargs: Any,
@@ -161,7 +161,7 @@ class CountryField(models.CharField):
161161
blank: bool = True,
162162
multiple_sort: bool = True,
163163
multiple_unique: bool = True,
164-
countries: Countries | None = None,
164+
countries: type[Countries] | None = None,
165165
countries_flag_url: str | None = None,
166166
countries_str_attr: str = "code",
167167
**kwargs: Any,

pyproject.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,6 @@ exclude_lines = ["pragma: no cover", "@overload", "if TYPE_CHECKING:"]
9393
plugins = ["mypy_django_plugin.main"]
9494
disallow_untyped_calls = true
9595
python_version = "3.9"
96-
exclude = [
97-
'django_countries/tests/',
98-
]
9996

10097
[[tool.mypy.overrides]]
10198
module = "mypy_django_plugin.*"

0 commit comments

Comments
 (0)