Skip to content

Commit f020509

Browse files
authored
various annotation improvements (#258)
1 parent e8e6fca commit f020509

File tree

27 files changed

+158
-174
lines changed

27 files changed

+158
-174
lines changed

dev-requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
black
22
pytest-mypy-plugins==1.1.0
33
psycopg2
4-
flake8==3.7.8
4+
flake8==3.7.9
55
flake8-pyi==19.3.0
66
isort==4.3.21
77
gitpython==3.0.5

django-stubs/contrib/admin/checks.pyi

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
from typing import Any, List, Union
1+
from typing import Any, List, Union, Iterable, Optional
22

33
from django.contrib.admin.options import BaseModelAdmin
44
from django.core.checks.messages import Error
55

6+
from django.apps.config import AppConfig
7+
68
_CheckError = Union[str, Error]
79

8-
def check_admin_app(app_configs: None, **kwargs: Any) -> List[_CheckError]: ...
10+
def check_admin_app(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[_CheckError]: ...
911
def check_dependencies(**kwargs: Any) -> List[_CheckError]: ...
1012

1113
class BaseModelAdminChecks:

django-stubs/contrib/admin/sites.pyi

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ from django.template.response import TemplateResponse
88
from django.urls.resolvers import URLResolver
99
from django.utils.functional import LazyObject
1010

11+
from django.apps.config import AppConfig
12+
1113
all_sites: Any
1214

1315
class AlreadyRegistered(Exception): ...
@@ -28,7 +30,7 @@ class AdminSite:
2830
name: str = ...
2931
_registry: Dict[Type[Model], ModelAdmin]
3032
def __init__(self, name: str = ...) -> None: ...
31-
def check(self, app_configs: None) -> List[Any]: ...
33+
def check(self, app_configs: Optional[Iterable[AppConfig]]) -> List[Any]: ...
3234
def register(
3335
self,
3436
model_or_iterable: Union[Type[Model], Iterable[Type[Model]]],
@@ -37,7 +39,7 @@ class AdminSite:
3739
) -> None: ...
3840
def unregister(self, model_or_iterable: Union[Type[Model], Iterable[Type[Model]]]) -> None: ...
3941
def is_registered(self, model: Type[Model]) -> bool: ...
40-
def add_action(self, action: Callable, name: None = ...) -> None: ...
42+
def add_action(self, action: Callable, name: Optional[str] = ...) -> None: ...
4143
def disable_action(self, name: str) -> None: ...
4244
def get_action(self, name: str) -> Callable: ...
4345
@property
@@ -52,14 +54,20 @@ class AdminSite:
5254
@property
5355
def urls(self) -> Tuple[List[URLResolver], str, str]: ...
5456
def each_context(self, request: Any): ...
55-
def password_change(self, request: WSGIRequest, extra_context: Dict[str, str] = ...) -> TemplateResponse: ...
56-
def password_change_done(self, request: WSGIRequest, extra_context: None = ...) -> TemplateResponse: ...
57+
def password_change(
58+
self, request: WSGIRequest, extra_context: Optional[Dict[str, Any]] = ...
59+
) -> TemplateResponse: ...
60+
def password_change_done(
61+
self, request: WSGIRequest, extra_context: Optional[Dict[str, Any]] = ...
62+
) -> TemplateResponse: ...
5763
def i18n_javascript(self, request: WSGIRequest, extra_context: Optional[Dict[Any, Any]] = ...) -> HttpResponse: ...
58-
def logout(self, request: WSGIRequest, extra_context: None = ...) -> TemplateResponse: ...
59-
def login(self, request: WSGIRequest, extra_context: None = ...) -> HttpResponse: ...
64+
def logout(self, request: WSGIRequest, extra_context: Optional[Dict[str, Any]] = ...) -> TemplateResponse: ...
65+
def login(self, request: WSGIRequest, extra_context: Optional[Dict[str, Any]] = ...) -> HttpResponse: ...
6066
def get_app_list(self, request: WSGIRequest) -> List[Any]: ...
61-
def index(self, request: WSGIRequest, extra_context: Optional[Dict[str, str]] = ...) -> TemplateResponse: ...
62-
def app_index(self, request: WSGIRequest, app_label: str, extra_context: None = ...) -> TemplateResponse: ...
67+
def index(self, request: WSGIRequest, extra_context: Optional[Dict[str, Any]] = ...) -> TemplateResponse: ...
68+
def app_index(
69+
self, request: WSGIRequest, app_label: str, extra_context: Optional[Dict[str, Any]] = ...
70+
) -> TemplateResponse: ...
6371

6472
class DefaultAdminSite(LazyObject): ...
6573

django-stubs/contrib/admin/utils.pyi

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ from django.contrib.auth.forms import AdminPasswordChangeForm
99
from django.core.handlers.wsgi import WSGIRequest
1010
from django.db.models.base import Model
1111
from django.db.models.deletion import Collector
12-
from django.db.models.fields.mixins import FieldCacheMixin
1312
from django.db.models.fields.reverse_related import ManyToOneRel
1413
from django.db.models.options import Options
1514
from django.db.models.query import QuerySet
1615
from django.forms.forms import BaseForm
17-
from django.utils.safestring import SafeText
1816

1917
from django.db.models.fields import Field, reverse_related
2018

@@ -27,7 +25,7 @@ def unquote(s: str) -> str: ...
2725
def flatten(fields: Any) -> List[Union[Callable, str]]: ...
2826
def flatten_fieldsets(fieldsets: Any) -> List[Union[Callable, str]]: ...
2927
def get_deleted_objects(
30-
objs: QuerySet, request: WSGIRequest, admin_site: AdminSite
28+
objs: Sequence[Optional[Model]], request: WSGIRequest, admin_site: AdminSite
3129
) -> Tuple[List[Any], Dict[Any, Any], Set[Any], List[Any]]: ...
3230

3331
class NestedObjects(Collector):
@@ -41,22 +39,14 @@ class NestedObjects(Collector):
4139
model_objs: Any = ...
4240
def __init__(self, *args: Any, **kwargs: Any) -> None: ...
4341
def add_edge(self, source: Optional[Model], target: Model) -> None: ...
44-
def collect(
45-
self,
46-
objs: Union[Sequence[Optional[Model]], QuerySet],
47-
source: Optional[Type[Model]] = ...,
48-
source_attr: Optional[str] = ...,
49-
**kwargs: Any
50-
) -> None: ...
51-
def related_objects(self, related: ManyToOneRel, objs: List[Model]) -> QuerySet: ...
52-
def nested(self, format_callback: Callable = ...) -> Union[List[SafeText], List[int]]: ...
53-
def can_fast_delete(self, *args: Any, **kwargs: Any) -> bool: ...
42+
def related_objects(self, related: ManyToOneRel, objs: Sequence[Optional[Model]]) -> QuerySet: ...
43+
def nested(self, format_callback: Callable = ...) -> List[Any]: ...
5444

5545
def model_format_dict(obj: Any): ...
5646
def model_ngettext(obj: Union[Options, QuerySet], n: Optional[int] = ...) -> str: ...
5747
def lookup_field(
5848
name: Union[Callable, str], obj: Model, model_admin: BaseModelAdmin = ...
59-
) -> Tuple[Optional[Field], Callable, Callable]: ...
49+
) -> Tuple[Optional[Field], Any, Any]: ...
6050
def label_for_field(
6151
name: Union[Callable, str],
6252
model: Type[Model],
@@ -65,16 +55,14 @@ def label_for_field(
6555
form: Optional[BaseForm] = ...,
6656
) -> Union[Tuple[Optional[str], Union[Callable, Type[str]]], str]: ...
6757
def help_text_for_field(name: str, model: Type[Model]) -> str: ...
68-
def display_for_field(
69-
value: Any, field: Union[Field, reverse_related.OneToOneRel], empty_value_display: str
70-
) -> str: ...
58+
def display_for_field(value: Any, field: Field, empty_value_display: str) -> str: ...
7159
def display_for_value(value: Any, empty_value_display: str, boolean: bool = ...) -> str: ...
7260

7361
class NotRelationField(Exception): ...
7462

7563
def get_model_from_relation(field: Union[Field, reverse_related.ForeignObjectRel]) -> Type[Model]: ...
7664
def reverse_field_path(model: Type[Model], path: str) -> Tuple[Type[Model], str]: ...
77-
def get_fields_from_path(model: Type[Model], path: str) -> List[Union[Field, FieldCacheMixin]]: ...
65+
def get_fields_from_path(model: Type[Model], path: str) -> List[Field]: ...
7866
def construct_change_message(
7967
form: AdminPasswordChangeForm, formsets: None, add: bool
8068
) -> List[Dict[str, Dict[str, List[str]]]]: ...

django-stubs/contrib/auth/base_user.pyi

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@ class BaseUserManager(models.Manager[_T]):
1313
def get_by_natural_key(self, username: Optional[str]) -> _T: ...
1414

1515
class AbstractBaseUser(models.Model):
16+
REQUIRED_FIELDS: List[str] = ...
17+
1618
password = models.CharField(max_length=128)
1719
last_login = models.DateTimeField(blank=True, null=True)
18-
19-
REQUIRED_FIELDS: List[str] = ...
20-
class Meta: ...
2120
def get_username(self) -> str: ...
2221
def natural_key(self) -> Tuple[str]: ...
2322
@property
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
from typing import Any, List
1+
from typing import Any, List, Iterable, Optional
22

33
from django.core.checks.messages import CheckMessage
44

5-
def check_user_model(app_configs: None = ..., **kwargs: Any) -> List[CheckMessage]: ...
6-
def check_models_permissions(app_configs: None = ..., **kwargs: Any) -> List[Any]: ...
5+
from django.apps.config import AppConfig
6+
7+
def check_user_model(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[CheckMessage]: ...
8+
def check_models_permissions(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ...
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
from typing import Any, List
1+
from typing import Any, List, Iterable, Optional
22

3-
def check_generic_foreign_keys(app_configs: None = ..., **kwargs: Any) -> List[Any]: ...
4-
def check_model_name_lengths(app_configs: None = ..., **kwargs: Any) -> List[Any]: ...
3+
from django.apps.config import AppConfig
4+
5+
def check_generic_foreign_keys(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ...
6+
def check_model_name_lengths(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ...

django-stubs/contrib/sites/management.pyi

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

3+
from django.apps.config import AppConfig
34
from django.apps.registry import Apps
4-
from django.contrib.sites.apps import SitesConfig
55

66
def create_default_site(
7-
app_config: SitesConfig,
7+
app_config: AppConfig,
88
verbosity: int = ...,
99
interactive: bool = ...,
1010
using: str = ...,
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
from typing import Any, List
1+
from typing import Any, List, Iterable, Optional
22

33
from django.core.checks.messages import Error
44

5-
def check_finders(app_configs: None = ..., **kwargs: Any) -> List[Error]: ...
5+
from django.apps.config import AppConfig
6+
7+
def check_finders(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Error]: ...
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
from typing import Any, List
1+
from typing import Any, List, Iterable, Optional
22

33
from django.core.checks.messages import Error
44

5+
from django.apps.config import AppConfig
6+
57
E001: Any
68

7-
def check_default_cache_is_configured(app_configs: None, **kwargs: Any) -> List[Error]: ...
9+
def check_default_cache_is_configured(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Error]: ...

0 commit comments

Comments
 (0)