From 6dc2c32382840121e37d528ce18959d946445874 Mon Sep 17 00:00:00 2001 From: Brian Helba Date: Wed, 28 Oct 2020 19:21:32 -0400 Subject: [PATCH] Ensure that all registered checks take the same parameters (#499) The Django API requires that registered checks take an "app_configs" argument, which is a list of AppConfig. This is practically also passed by keyword, so all parameters should be specified with a "= ..." to indicate that they are keywords. Django always passed "app_configs" as a list, but checks can accept and use a more general more Sequence. The Django API also requires that registered checks take "**kwargs". This results in the canonical parameters of: "app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any" --- django-stubs/contrib/admin/checks.pyi | 4 +-- django-stubs/contrib/auth/checks.pyi | 6 ++-- django-stubs/contrib/contenttypes/checks.pyi | 6 ++-- django-stubs/contrib/staticfiles/checks.pyi | 4 +-- django-stubs/core/checks/async_checks.pyi | 6 ++-- django-stubs/core/checks/caches.pyi | 6 ++-- django-stubs/core/checks/model_checks.pyi | 6 ++-- django-stubs/core/checks/security/base.pyi | 28 ++++++++++--------- django-stubs/core/checks/security/csrf.pyi | 9 +++--- .../core/checks/security/sessions.pyi | 6 ++-- django-stubs/core/checks/templates.pyi | 8 ++++-- django-stubs/core/checks/translation.pyi | 6 ++-- django-stubs/core/checks/urls.pyi | 8 +++--- 13 files changed, 56 insertions(+), 47 deletions(-) diff --git a/django-stubs/contrib/admin/checks.pyi b/django-stubs/contrib/admin/checks.pyi index f34f94c..8d9ac9e 100644 --- a/django-stubs/contrib/admin/checks.pyi +++ b/django-stubs/contrib/admin/checks.pyi @@ -1,4 +1,4 @@ -from typing import Any, List, Union, Iterable, Optional +from typing import Any, List, Union, Optional, Sequence from django.contrib.admin.options import BaseModelAdmin from django.core.checks.messages import CheckMessage, Error @@ -7,7 +7,7 @@ from django.apps.config import AppConfig _CheckError = Union[str, Error] -def check_admin_app(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[_CheckError]: ... +def check_admin_app(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[_CheckError]: ... def check_dependencies(**kwargs: Any) -> List[_CheckError]: ... class BaseModelAdminChecks: diff --git a/django-stubs/contrib/auth/checks.pyi b/django-stubs/contrib/auth/checks.pyi index f2c5332..cac71bd 100644 --- a/django-stubs/contrib/auth/checks.pyi +++ b/django-stubs/contrib/auth/checks.pyi @@ -1,8 +1,8 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.core.checks.messages import CheckMessage from django.apps.config import AppConfig -def check_user_model(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[CheckMessage]: ... -def check_models_permissions(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... +def check_user_model(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[CheckMessage]: ... +def check_models_permissions(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... diff --git a/django-stubs/contrib/contenttypes/checks.pyi b/django-stubs/contrib/contenttypes/checks.pyi index 97c17fa..71701ad 100644 --- a/django-stubs/contrib/contenttypes/checks.pyi +++ b/django-stubs/contrib/contenttypes/checks.pyi @@ -1,6 +1,6 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.apps.config import AppConfig -def check_generic_foreign_keys(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... -def check_model_name_lengths(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... +def check_generic_foreign_keys(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... +def check_model_name_lengths(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... diff --git a/django-stubs/contrib/staticfiles/checks.pyi b/django-stubs/contrib/staticfiles/checks.pyi index dccf572..564e15b 100644 --- a/django-stubs/contrib/staticfiles/checks.pyi +++ b/django-stubs/contrib/staticfiles/checks.pyi @@ -1,7 +1,7 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.core.checks.messages import Error from django.apps.config import AppConfig -def check_finders(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Error]: ... +def check_finders(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Error]: ... diff --git a/django-stubs/core/checks/async_checks.pyi b/django-stubs/core/checks/async_checks.pyi index 7943909..09005ff 100644 --- a/django-stubs/core/checks/async_checks.pyi +++ b/django-stubs/core/checks/async_checks.pyi @@ -1,5 +1,7 @@ -from typing import Any +from typing import Any, Optional, Sequence + +from django.apps.config import AppConfig E001: Any -def check_async_unsafe(app_configs: Any, **kwargs: Any): ... +def check_async_unsafe(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any): ... diff --git a/django-stubs/core/checks/caches.pyi b/django-stubs/core/checks/caches.pyi index 94c8994..3e07a1e 100644 --- a/django-stubs/core/checks/caches.pyi +++ b/django-stubs/core/checks/caches.pyi @@ -1,4 +1,4 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.core.checks.messages import Error @@ -6,4 +6,6 @@ from django.apps.config import AppConfig E001: Any -def check_default_cache_is_configured(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Error]: ... +def check_default_cache_is_configured( + app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any +) -> List[Error]: ... diff --git a/django-stubs/core/checks/model_checks.pyi b/django-stubs/core/checks/model_checks.pyi index ec877ce..d73337d 100644 --- a/django-stubs/core/checks/model_checks.pyi +++ b/django-stubs/core/checks/model_checks.pyi @@ -1,8 +1,8 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.core.checks.messages import Warning from django.apps.config import AppConfig -def check_all_models(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... -def check_lazy_references(app_configs: Optional[Iterable[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... +def check_all_models(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_lazy_references(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Any]: ... diff --git a/django-stubs/core/checks/security/base.pyi b/django-stubs/core/checks/security/base.pyi index 7b67075..8b9c37e 100644 --- a/django-stubs/core/checks/security/base.pyi +++ b/django-stubs/core/checks/security/base.pyi @@ -1,4 +1,4 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.core.checks.messages import Warning @@ -19,15 +19,17 @@ W019: Any W020: Any W021: Any -def check_security_middleware(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_xframe_options_middleware(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_sts(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_sts_include_subdomains(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_sts_preload(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_content_type_nosniff(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_xss_filter(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_ssl_redirect(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_secret_key(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_debug(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_xframe_deny(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_allowed_hosts(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... +def check_security_middleware(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_xframe_options_middleware( + app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any +) -> List[Warning]: ... +def check_sts(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_sts_include_subdomains(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_sts_preload(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_content_type_nosniff(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_xss_filter(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_ssl_redirect(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_secret_key(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_debug(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_xframe_deny(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_allowed_hosts(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... diff --git a/django-stubs/core/checks/security/csrf.pyi b/django-stubs/core/checks/security/csrf.pyi index 94ca777..804ef3f 100644 --- a/django-stubs/core/checks/security/csrf.pyi +++ b/django-stubs/core/checks/security/csrf.pyi @@ -1,11 +1,10 @@ -from typing import Any, List, Iterable, Optional - -from django.core.checks.messages import Warning +from typing import Any, List, Optional, Sequence from django.apps.config import AppConfig +from django.core.checks.messages import Warning W003: Any W016: Any -def check_csrf_middleware(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_csrf_cookie_secure(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... +def check_csrf_middleware(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_csrf_cookie_secure(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... diff --git a/django-stubs/core/checks/security/sessions.pyi b/django-stubs/core/checks/security/sessions.pyi index c5f424f..e3a7c18 100644 --- a/django-stubs/core/checks/security/sessions.pyi +++ b/django-stubs/core/checks/security/sessions.pyi @@ -1,4 +1,4 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.core.checks.messages import Warning @@ -16,5 +16,5 @@ W013: Any W014: Any W015: Any -def check_session_cookie_secure(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... -def check_session_cookie_httponly(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... +def check_session_cookie_secure(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... +def check_session_cookie_httponly(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... diff --git a/django-stubs/core/checks/templates.pyi b/django-stubs/core/checks/templates.pyi index 200db76..698a575 100644 --- a/django-stubs/core/checks/templates.pyi +++ b/django-stubs/core/checks/templates.pyi @@ -1,4 +1,4 @@ -from typing import Any, List, Iterable, Optional +from typing import Any, List, Optional, Sequence from django.core.checks.messages import Error @@ -7,5 +7,7 @@ from django.apps.config import AppConfig E001: Any E002: Any -def check_setting_app_dirs_loaders(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Error]: ... -def check_string_if_invalid_is_string(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Error]: ... +def check_setting_app_dirs_loaders(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Error]: ... +def check_string_if_invalid_is_string( + app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any +) -> List[Error]: ... diff --git a/django-stubs/core/checks/translation.pyi b/django-stubs/core/checks/translation.pyi index a8a3c9f..c7bda19 100644 --- a/django-stubs/core/checks/translation.pyi +++ b/django-stubs/core/checks/translation.pyi @@ -1,7 +1,9 @@ -from typing import Any, List +from typing import Any, List, Optional, Sequence + +from django.apps.config import AppConfig from . import Error E001: Error = ... -def check_setting_language_code(app_configs: Any, **kwargs: Any) -> List[Error]: ... +def check_setting_language_code(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Error]: ... diff --git a/django-stubs/core/checks/urls.pyi b/django-stubs/core/checks/urls.pyi index c9c43ee..76a27b7 100644 --- a/django-stubs/core/checks/urls.pyi +++ b/django-stubs/core/checks/urls.pyi @@ -1,13 +1,13 @@ -from typing import Any, Callable, List, Tuple, Union, Iterable, Optional +from typing import Any, Callable, List, Tuple, Union, Optional, Sequence from django.core.checks.messages import CheckMessage, Error, Warning from django.urls.resolvers import URLPattern, URLResolver from django.apps.config import AppConfig -def check_url_config(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[CheckMessage]: ... +def check_url_config(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[CheckMessage]: ... def check_resolver(resolver: Union[Tuple[str, Callable], URLPattern, URLResolver]) -> List[CheckMessage]: ... -def check_url_namespaces_unique(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Warning]: ... +def check_url_namespaces_unique(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Warning]: ... def get_warning_for_invalid_pattern(pattern: Any) -> List[Error]: ... -def check_url_settings(app_configs: Optional[Iterable[AppConfig]], **kwargs: Any) -> List[Error]: ... +def check_url_settings(app_configs: Optional[Sequence[AppConfig]] = ..., **kwargs: Any) -> List[Error]: ... def E006(name: str) -> Error: ...