django-types 0.20.0__py3-none-any.whl → 0.21.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. django-stubs/contrib/admin/actions.pyi +2 -2
  2. django-stubs/contrib/admin/decorators.pyi +4 -3
  3. django-stubs/contrib/admin/filters.pyi +5 -5
  4. django-stubs/contrib/admin/models.pyi +23 -11
  5. django-stubs/contrib/admin/options.pyi +5 -4
  6. django-stubs/contrib/admin/sites.pyi +11 -11
  7. django-stubs/contrib/admin/utils.pyi +2 -2
  8. django-stubs/contrib/admin/views/autocomplete.pyi +2 -2
  9. django-stubs/contrib/admin/views/main.pyi +6 -6
  10. django-stubs/contrib/admindocs/middleware.pyi +2 -2
  11. django-stubs/contrib/auth/admin.pyi +2 -2
  12. django-stubs/contrib/auth/backends.pyi +22 -0
  13. django-stubs/contrib/auth/base_user.pyi +2 -2
  14. django-stubs/contrib/auth/forms.pyi +1 -1
  15. django-stubs/contrib/auth/middleware.pyi +1 -2
  16. django-stubs/contrib/auth/models.pyi +24 -2
  17. django-stubs/contrib/auth/views.pyi +1 -2
  18. django-stubs/contrib/flatpages/middleware.pyi +2 -2
  19. django-stubs/contrib/flatpages/views.pyi +3 -3
  20. django-stubs/contrib/postgres/fields/array.pyi +1 -2
  21. django-stubs/contrib/postgres/fields/citext.pyi +1 -2
  22. django-stubs/contrib/postgres/fields/hstore.pyi +1 -2
  23. django-stubs/contrib/staticfiles/finders.pyi +1 -2
  24. django-stubs/contrib/staticfiles/views.pyi +2 -2
  25. django-stubs/contrib/syndication/views.pyi +4 -4
  26. django-stubs/core/exceptions.pyi +8 -6
  27. django-stubs/core/mail/__init__.pyi +1 -1
  28. django-stubs/core/mail/backends/base.pyi +1 -0
  29. django-stubs/db/backends/utils.pyi +1 -2
  30. django-stubs/db/models/base.pyi +9 -2
  31. django-stubs/db/models/enums.pyi +2 -1
  32. django-stubs/db/models/fields/__init__.pyi +3 -3
  33. django-stubs/db/models/fields/json.pyi +2 -2
  34. django-stubs/db/models/fields/related.pyi +2 -2
  35. django-stubs/db/models/manager.pyi +2 -2
  36. django-stubs/forms/formsets.pyi +6 -6
  37. django-stubs/forms/models.pyi +3 -4
  38. django-stubs/http/request.pyi +8 -4
  39. django-stubs/shortcuts.pyi +1 -2
  40. django-stubs/template/base.pyi +1 -1
  41. django-stubs/template/context_processors.pyi +1 -2
  42. django-stubs/test/client.pyi +9 -9
  43. django-stubs/test/testcases.pyi +2 -2
  44. django-stubs/urls/base.pyi +18 -2
  45. django-stubs/utils/cache.pyi +4 -4
  46. django-stubs/utils/datastructures.pyi +2 -2
  47. django-stubs/utils/translation/__init__.pyi +5 -3
  48. django-stubs/utils/translation/trans_real.pyi +2 -2
  49. django-stubs/views/generic/edit.pyi +1 -2
  50. {django_types-0.20.0.dist-info → django_types-0.21.0.dist-info}/METADATA +6 -7
  51. {django_types-0.20.0.dist-info → django_types-0.21.0.dist-info}/RECORD +53 -53
  52. {django_types-0.20.0.dist-info → django_types-0.21.0.dist-info}/WHEEL +1 -1
  53. {django_types-0.20.0.dist-info → django_types-0.21.0.dist-info}/LICENSE.txt +0 -0
@@ -1,10 +1,10 @@
1
1
  from typing import Any
2
2
 
3
3
  from django.contrib.admin.options import ModelAdmin
4
- from django.core.handlers.wsgi import WSGIRequest
5
4
  from django.db.models.query import QuerySet
5
+ from django.http.request import HttpRequest
6
6
  from django.template.response import TemplateResponse
7
7
 
8
8
  def delete_selected(
9
- modeladmin: ModelAdmin[Any], request: WSGIRequest, queryset: QuerySet[Any]
9
+ modeladmin: ModelAdmin[Any], request: HttpRequest, queryset: QuerySet[Any]
10
10
  ) -> TemplateResponse | None: ...
@@ -8,6 +8,7 @@ from django.db.models.expressions import BaseExpression
8
8
  from django.http import HttpRequest, HttpResponse
9
9
 
10
10
  _M = TypeVar("_M", bound=Model)
11
+ _T = TypeVar("_T", bound=object)
11
12
 
12
13
  def action(
13
14
  function: (
@@ -17,7 +18,7 @@ def action(
17
18
  *,
18
19
  permissions: Sequence[str] | None = ...,
19
20
  description: str | None = ...,
20
- ) -> Callable[..., Any]: ...
21
+ ) -> Callable[[_T], _T]: ...
21
22
  def display(
22
23
  function: Callable[[_M], Any] | None = ...,
23
24
  *,
@@ -25,5 +26,5 @@ def display(
25
26
  ordering: str | Combinable | BaseExpression | None = ...,
26
27
  description: str | None = ...,
27
28
  empty_value: str | None = ...,
28
- ) -> Callable[..., Any]: ...
29
- def register(*models: type[Model], site: Any | None = ...) -> Callable[..., Any]: ...
29
+ ) -> Callable[[_T], _T]: ...
30
+ def register(*models: type[Model], site: Any | None = ...) -> Callable[[_T], _T]: ...
@@ -2,11 +2,11 @@ from collections.abc import Callable, Iterator
2
2
  from typing import Any
3
3
 
4
4
  from django.contrib.admin.options import ModelAdmin
5
- from django.core.handlers.wsgi import WSGIRequest
6
5
  from django.db.models.base import Model
7
6
  from django.db.models.fields import Field
8
7
  from django.db.models.fields.related import RelatedField
9
8
  from django.db.models.query import QuerySet
9
+ from django.http.request import HttpRequest
10
10
 
11
11
  class ListFilter:
12
12
  title: Any = ...
@@ -14,7 +14,7 @@ class ListFilter:
14
14
  used_parameters: Any = ...
15
15
  def __init__(
16
16
  self,
17
- request: WSGIRequest,
17
+ request: HttpRequest,
18
18
  params: dict[str, str],
19
19
  model: type[Model],
20
20
  model_admin: ModelAdmin[Any],
@@ -39,7 +39,7 @@ class FieldListFilter(ListFilter):
39
39
  def __init__(
40
40
  self,
41
41
  field: Field[Any, Any],
42
- request: WSGIRequest,
42
+ request: HttpRequest,
43
43
  params: dict[str, str],
44
44
  model: type[Model],
45
45
  model_admin: ModelAdmin[Any],
@@ -56,7 +56,7 @@ class FieldListFilter(ListFilter):
56
56
  def create(
57
57
  cls,
58
58
  field: Field[Any, Any],
59
- request: WSGIRequest,
59
+ request: HttpRequest,
60
60
  params: dict[str, str],
61
61
  model: type[Model],
62
62
  model_admin: ModelAdmin[Any],
@@ -78,7 +78,7 @@ class RelatedFieldListFilter(FieldListFilter):
78
78
  def field_choices(
79
79
  self,
80
80
  field: RelatedField[Any, Any],
81
- request: WSGIRequest,
81
+ request: HttpRequest,
82
82
  model_admin: ModelAdmin[Any],
83
83
  ) -> list[tuple[str, str]]: ...
84
84
 
@@ -1,10 +1,11 @@
1
- import datetime as dt
1
+ from collections.abc import Iterable
2
2
  from typing import Any, ClassVar, TypeVar
3
3
  from typing_extensions import Self
4
- from uuid import UUID
5
4
 
5
+ from django.contrib.auth.models import User
6
6
  from django.contrib.contenttypes.models import ContentType
7
7
  from django.db import models
8
+ from django.utils import timezone as timezone
8
9
 
9
10
  ADDITION: int
10
11
  CHANGE: int
@@ -14,26 +15,37 @@ ACTION_FLAG_CHOICES: list[tuple[int, str]]
14
15
  _LogEntryT = TypeVar("_LogEntryT", bound=LogEntry)
15
16
 
16
17
  class LogEntryManager(models.Manager[_LogEntryT]):
18
+ use_in_migrations: bool
19
+ # Deprecated in favor of log_actions
17
20
  def log_action(
18
21
  self,
19
22
  user_id: int,
20
23
  content_type_id: int,
21
- object_id: int | str | UUID,
24
+ object_id: Any,
22
25
  object_repr: str,
23
26
  action_flag: int,
24
27
  change_message: str | list[Any] = ...,
25
28
  ) -> _LogEntryT: ...
29
+ def log_actions(
30
+ self,
31
+ user_id: int,
32
+ queryset: Iterable[models.Model],
33
+ action_flag: int,
34
+ change_message: str | list[Any] = ...,
35
+ *,
36
+ single_object: bool = ...,
37
+ ) -> _LogEntryT | list[_LogEntryT]: ...
26
38
 
27
39
  class LogEntry(models.Model):
28
- objects: ClassVar[LogEntryManager[Self]] # type: ignore[assignment]
40
+ action_time = models.DateTimeField()
41
+ user = models.ForeignKey[User]
42
+ content_type = models.ForeignKey[ContentType]
43
+ object_id = models.TextField(blank=True, null=True)
44
+ object_repr = models.CharField()
45
+ action_flag = models.PositiveSmallIntegerField()
46
+ change_message = models.TextField(blank=True)
29
47
 
30
- action_time: models.DateTimeField[dt.datetime]
31
- user: models.ForeignKey[Any]
32
- content_type: models.ForeignKey[ContentType | None]
33
- object_id: models.TextField[str | None]
34
- object_repr: models.CharField[str]
35
- action_flag: models.PositiveSmallIntegerField[int]
36
- change_message: models.TextField[str]
48
+ objects: ClassVar[LogEntryManager[Self]] # type: ignore[assignment]
37
49
 
38
50
  def is_addition(self) -> bool: ...
39
51
  def is_change(self) -> bool: ...
@@ -1,7 +1,7 @@
1
1
  from collections import OrderedDict
2
- from collections.abc import Callable, Iterator, Mapping, Sequence
3
- from typing import Any, Generic, Iterable, TypeVar
4
- from typing_extensions import Literal, TypedDict
2
+ from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
3
+ from typing import Any, Generic, Literal, TypeVar
4
+ from typing_extensions import TypedDict
5
5
 
6
6
  from django.contrib.admin.filters import ListFilter
7
7
  from django.contrib.admin.helpers import ActionForm
@@ -17,6 +17,7 @@ from django.db.models.fields import Field
17
17
  from django.db.models.fields.related import ForeignKey, ManyToManyField, RelatedField
18
18
  from django.db.models.options import Options
19
19
  from django.db.models.query import QuerySet
20
+ from django.forms.fields import Field as FormField
20
21
  from django.forms.fields import TypedChoiceField
21
22
  from django.forms.forms import BaseForm
22
23
  from django.forms.models import (
@@ -92,7 +93,7 @@ class BaseModelAdmin(Generic[_ModelT]):
92
93
  def check(self, **kwargs: Any) -> list[CheckMessage]: ...
93
94
  def formfield_for_dbfield(
94
95
  self, db_field: Field[Any, Any], request: HttpRequest | None, **kwargs: Any
95
- ) -> Field[Any, Any] | None: ...
96
+ ) -> FormField | None: ...
96
97
  def formfield_for_choice_field(
97
98
  self, db_field: Field[Any, Any], request: HttpRequest | None, **kwargs: Any
98
99
  ) -> TypedChoiceField: ...
@@ -3,8 +3,8 @@ from typing import Any
3
3
 
4
4
  from django.apps.config import AppConfig
5
5
  from django.contrib.admin.options import ModelAdmin
6
- from django.core.handlers.wsgi import WSGIRequest
7
6
  from django.db.models.base import Model
7
+ from django.http.request import HttpRequest
8
8
  from django.http.response import HttpResponse
9
9
  from django.template.response import TemplateResponse
10
10
  from django.urls.resolvers import URLResolver
@@ -53,7 +53,7 @@ class AdminSite:
53
53
  def empty_value_display(self) -> Any: ...
54
54
  @empty_value_display.setter
55
55
  def empty_value_display(self, empty_value_display: Any) -> None: ...
56
- def has_permission(self, request: WSGIRequest) -> bool: ...
56
+ def has_permission(self, request: HttpRequest) -> bool: ...
57
57
  def admin_view(
58
58
  self, view: Callable[..., Any], cacheable: bool = ...
59
59
  ) -> Callable[..., Any]: ...
@@ -62,30 +62,30 @@ class AdminSite:
62
62
  def urls(self) -> tuple[list[URLResolver], str, str]: ...
63
63
  def each_context(self, request: Any) -> Any: ...
64
64
  def password_change(
65
- self, request: WSGIRequest, extra_context: dict[str, Any] | None = ...
65
+ self, request: HttpRequest, extra_context: dict[str, Any] | None = ...
66
66
  ) -> TemplateResponse: ...
67
67
  def password_change_done(
68
- self, request: WSGIRequest, extra_context: dict[str, Any] | None = ...
68
+ self, request: HttpRequest, extra_context: dict[str, Any] | None = ...
69
69
  ) -> TemplateResponse: ...
70
70
  def i18n_javascript(
71
- self, request: WSGIRequest, extra_context: dict[Any, Any] | None = ...
71
+ self, request: HttpRequest, extra_context: dict[Any, Any] | None = ...
72
72
  ) -> HttpResponse: ...
73
73
  def logout(
74
- self, request: WSGIRequest, extra_context: dict[str, Any] | None = ...
74
+ self, request: HttpRequest, extra_context: dict[str, Any] | None = ...
75
75
  ) -> TemplateResponse: ...
76
76
  def login(
77
- self, request: WSGIRequest, extra_context: dict[str, Any] | None = ...
77
+ self, request: HttpRequest, extra_context: dict[str, Any] | None = ...
78
78
  ) -> HttpResponse: ...
79
79
  def _build_app_dict(
80
- self, request: WSGIRequest, label: str | None = ...
80
+ self, request: HttpRequest, label: str | None = ...
81
81
  ) -> dict[str, Any]: ...
82
- def get_app_list(self, request: WSGIRequest) -> list[Any]: ...
82
+ def get_app_list(self, request: HttpRequest) -> list[Any]: ...
83
83
  def index(
84
- self, request: WSGIRequest, extra_context: dict[str, Any] | None = ...
84
+ self, request: HttpRequest, extra_context: dict[str, Any] | None = ...
85
85
  ) -> TemplateResponse: ...
86
86
  def app_index(
87
87
  self,
88
- request: WSGIRequest,
88
+ request: HttpRequest,
89
89
  app_label: str,
90
90
  extra_context: dict[str, Any] | None = ...,
91
91
  ) -> TemplateResponse: ...
@@ -7,7 +7,6 @@ from uuid import UUID
7
7
  from django.contrib.admin.options import BaseModelAdmin
8
8
  from django.contrib.admin.sites import AdminSite
9
9
  from django.contrib.auth.forms import AdminPasswordChangeForm
10
- from django.core.handlers.wsgi import WSGIRequest
11
10
  from django.db.models.base import Model
12
11
  from django.db.models.deletion import Collector
13
12
  from django.db.models.fields import Field, reverse_related
@@ -15,6 +14,7 @@ from django.db.models.fields.reverse_related import ManyToOneRel
15
14
  from django.db.models.options import Options
16
15
  from django.db.models.query import QuerySet
17
16
  from django.forms.forms import BaseForm
17
+ from django.http.request import HttpRequest
18
18
 
19
19
  class FieldIsAForeignKeyColumnName(Exception): ...
20
20
 
@@ -25,7 +25,7 @@ def unquote(s: str) -> str: ...
25
25
  def flatten(fields: Any) -> list[Callable[..., Any] | str]: ...
26
26
  def flatten_fieldsets(fieldsets: Any) -> list[Callable[..., Any] | str]: ...
27
27
  def get_deleted_objects(
28
- objs: Sequence[Model | None], request: WSGIRequest, admin_site: AdminSite
28
+ objs: Sequence[Model | None], request: HttpRequest, admin_site: AdminSite
29
29
  ) -> tuple[list[Any], dict[Any, Any], set[Any], list[Any]]: ...
30
30
 
31
31
  class NestedObjects(Collector):
@@ -1,10 +1,10 @@
1
1
  from typing import Any
2
2
 
3
3
  from django.contrib.admin.options import ModelAdmin
4
- from django.core.handlers.wsgi import WSGIRequest
4
+ from django.http.request import HttpRequest
5
5
  from django.views.generic.list import BaseListView
6
6
 
7
7
  class AutocompleteJsonView(BaseListView):
8
8
  model_admin: ModelAdmin[Any] = ...
9
9
  term: Any = ...
10
- def has_perm(self, request: WSGIRequest, obj: None = ...) -> bool: ...
10
+ def has_perm(self, request: HttpRequest, obj: None = ...) -> bool: ...
@@ -6,13 +6,13 @@ from django.contrib.admin.filters import ListFilter, SimpleListFilter
6
6
  from django.contrib.admin.options import IS_POPUP_VAR as IS_POPUP_VAR # noqa: F401
7
7
  from django.contrib.admin.options import TO_FIELD_VAR as TO_FIELD_VAR
8
8
  from django.contrib.admin.options import ModelAdmin
9
- from django.core.handlers.wsgi import WSGIRequest
10
9
  from django.db.models.base import Model
11
10
  from django.db.models.expressions import Combinable, CombinedExpression, OrderBy
12
11
  from django.db.models.options import Options
13
12
  from django.db.models.query import QuerySet
14
13
  from django.forms.formsets import BaseFormSet
15
14
  from django.forms.models import ModelForm
15
+ from django.http.request import HttpRequest
16
16
 
17
17
  ALL_VAR: str
18
18
  ORDER_VAR: str
@@ -51,7 +51,7 @@ class ChangeList:
51
51
  formset: BaseFormSet[ModelForm] | None
52
52
  def __init__(
53
53
  self,
54
- request: WSGIRequest,
54
+ request: HttpRequest,
55
55
  model: type[Model],
56
56
  list_display: list[Callable[..., Any] | str] | tuple[str],
57
57
  list_display_links: list[Callable[..., Any]] | list[str] | tuple[str] | None,
@@ -67,7 +67,7 @@ class ChangeList:
67
67
  ) -> None: ...
68
68
  def get_filters_params(self, params: None = ...) -> dict[str, str]: ...
69
69
  def get_filters(
70
- self, request: WSGIRequest
70
+ self, request: HttpRequest
71
71
  ) -> tuple[list[ListFilter], bool, dict[str, bool | str], bool]: ...
72
72
  def get_query_string(
73
73
  self,
@@ -82,15 +82,15 @@ class ChangeList:
82
82
  can_show_all: Any = ...
83
83
  multi_page: Any = ...
84
84
  paginator: Any = ...
85
- def get_results(self, request: WSGIRequest) -> None: ...
85
+ def get_results(self, request: HttpRequest) -> None: ...
86
86
  def get_ordering_field(
87
87
  self, field_name: Callable[..., Any] | str
88
88
  ) -> CombinedExpression | str | None: ...
89
89
  def get_ordering(
90
- self, request: WSGIRequest, queryset: QuerySet[Any]
90
+ self, request: HttpRequest, queryset: QuerySet[Any]
91
91
  ) -> list[OrderBy | Combinable | str]: ...
92
92
  def get_ordering_field_columns(self) -> OrderedDict[Any, Any]: ...
93
- def get_queryset(self, request: WSGIRequest) -> QuerySet[Any]: ...
93
+ def get_queryset(self, request: HttpRequest) -> QuerySet[Any]: ...
94
94
  def apply_select_related(self, qs: QuerySet[Any]) -> QuerySet[Any]: ...
95
95
  def has_related_field_in_list_display(self) -> bool: ...
96
96
  def url_for_result(self, result: Model) -> str: ...
@@ -1,14 +1,14 @@
1
1
  from collections.abc import Callable
2
2
  from typing import Any
3
3
 
4
- from django.core.handlers.wsgi import WSGIRequest
4
+ from django.http.request import HttpRequest
5
5
  from django.http.response import HttpResponse
6
6
  from django.utils.deprecation import MiddlewareMixin
7
7
 
8
8
  class XViewMiddleware(MiddlewareMixin):
9
9
  def process_view(
10
10
  self,
11
- request: WSGIRequest,
11
+ request: HttpRequest,
12
12
  view_func: Callable[..., Any],
13
13
  view_args: tuple[Any, ...],
14
14
  view_kwargs: dict[Any, Any],
@@ -2,7 +2,7 @@ from collections.abc import Callable
2
2
  from typing import Any, TypeVar
3
3
 
4
4
  from django.contrib import admin
5
- from django.core.handlers.wsgi import WSGIRequest
5
+ from django.http.request import HttpRequest
6
6
  from django.http.response import HttpResponse
7
7
 
8
8
  _F = TypeVar("_F", bound=Callable[..., Any])
@@ -18,5 +18,5 @@ class UserAdmin(admin.ModelAdmin[Any]):
18
18
  add_form: Any = ...
19
19
  change_password_form: Any = ...
20
20
  def user_change_password(
21
- self, request: WSGIRequest, id: str, form_url: str = ...
21
+ self, request: HttpRequest, id: str, form_url: str = ...
22
22
  ) -> HttpResponse: ...
@@ -17,22 +17,43 @@ class BaseBackend:
17
17
  password: str | None = ...,
18
18
  **kwargs: Any
19
19
  ) -> AbstractBaseUser | None: ...
20
+ async def aauthenticate(
21
+ self,
22
+ request: HttpRequest,
23
+ username: str | None = ...,
24
+ password: str | None = ...,
25
+ **kwargs: Any
26
+ ) -> AbstractBaseUser | None: ...
20
27
  def get_user(self, user_id: int) -> AbstractBaseUser | None: ...
28
+ async def aget_user(self, user_id: int) -> AbstractBaseUser | None: ...
21
29
  def get_user_permissions(
22
30
  self, user_obj: _AnyUser, obj: Model | None = ...
23
31
  ) -> set[str]: ...
32
+ async def aget_user_permissions(
33
+ self, user_obj: _AnyUser, obj: Model | None = ...
34
+ ) -> set[str]: ...
24
35
  def get_group_permissions(
25
36
  self, user_obj: _AnyUser, obj: Model | None = ...
26
37
  ) -> set[str]: ...
38
+ async def aget_group_permissions(
39
+ self, user_obj: _AnyUser, obj: Model | None = ...
40
+ ) -> set[str]: ...
27
41
  def get_all_permissions(
28
42
  self, user_obj: _AnyUser, obj: Model | None = ...
29
43
  ) -> set[str]: ...
44
+ async def aget_all_permissions(
45
+ self, user_obj: _AnyUser, obj: Model | None = ...
46
+ ) -> set[str]: ...
30
47
  def has_perm(
31
48
  self, user_obj: _AnyUser, perm: str, obj: Model | None = ...
32
49
  ) -> bool: ...
50
+ async def ahas_perm(
51
+ self, user_obj: _AnyUser, perm: str, obj: Model | None = ...
52
+ ) -> bool: ...
33
53
 
34
54
  class ModelBackend(BaseBackend):
35
55
  def has_module_perms(self, user_obj: _AnyUser, app_label: str) -> bool: ...
56
+ async def ahas_module_perms(self, user_obj: _AnyUser, app_label: str) -> bool: ...
36
57
  def user_can_authenticate(self, user: _AnyUser | None) -> bool: ...
37
58
  def with_perm(
38
59
  self,
@@ -48,5 +69,6 @@ class RemoteUserBackend(ModelBackend):
48
69
  create_unknown_user: bool = ...
49
70
  def clean_username(self, username: str) -> str: ...
50
71
  def configure_user(self, request: HttpRequest, user: User) -> User: ...
72
+ async def aconfigure_user(self, request: HttpRequest, user: User) -> User: ...
51
73
 
52
74
  class AllowAllUsersRemoteUserBackend(RemoteUserBackend): ...
@@ -1,5 +1,4 @@
1
- from typing import Any, TypeVar
2
- from typing_extensions import Literal
1
+ from typing import Any, Literal, TypeVar
3
2
 
4
3
  from django.db import models
5
4
  from django.db.models.base import Model
@@ -15,6 +14,7 @@ class BaseUserManager(models.Manager[_ModelT]):
15
14
  self, length: int = ..., allowed_chars: str = ...
16
15
  ) -> str: ...
17
16
  def get_by_natural_key(self, username: str) -> _ModelT: ...
17
+ async def aget_by_natural_key(self, username: str) -> _ModelT: ...
18
18
 
19
19
  class AbstractBaseUser(models.Model):
20
20
  REQUIRED_FIELDS: list[str] = ...
@@ -35,7 +35,7 @@ class AuthenticationForm(forms.Form):
35
35
  password: Any = ...
36
36
  error_messages: Any = ...
37
37
  request: WSGIRequest = ...
38
- user_cache: None = ...
38
+ user_cache: AbstractBaseUser | None = ...
39
39
  username_field: Any = ...
40
40
  def __init__(self, request: Any = ..., *args: Any, **kwargs: Any) -> None: ...
41
41
  def confirm_login_allowed(self, user: AbstractBaseUser) -> None: ...
@@ -1,9 +1,8 @@
1
1
  from django.contrib.auth.models import AnonymousUser, User
2
- from django.core.handlers.wsgi import WSGIRequest
3
2
  from django.http.request import HttpRequest
4
3
  from django.utils.deprecation import MiddlewareMixin
5
4
 
6
- def get_user(request: WSGIRequest) -> AnonymousUser | User: ...
5
+ def get_user(request: HttpRequest) -> AnonymousUser | User: ...
7
6
 
8
7
  class AuthenticationMiddleware(MiddlewareMixin):
9
8
  def process_request(self, request: HttpRequest) -> None: ...
@@ -1,6 +1,6 @@
1
1
  from collections.abc import Iterable
2
- from typing import Any, ClassVar, TypeVar
3
- from typing_extensions import Literal, Never, Self
2
+ from typing import Any, ClassVar, Literal, TypeVar
3
+ from typing_extensions import Never, Self
4
4
 
5
5
  from django.contrib.auth.backends import ModelBackend
6
6
  from django.contrib.auth.base_user import AbstractBaseUser as AbstractBaseUser
@@ -58,6 +58,13 @@ class UserManager(BaseUserManager[_T]):
58
58
  password: str | None = ...,
59
59
  **extra_fields: Any,
60
60
  ) -> _T: ...
61
+ async def acreate_user(
62
+ self,
63
+ username: str,
64
+ email: str | None = ...,
65
+ password: str | None = ...,
66
+ **extra_fields: Any,
67
+ ) -> _T: ...
61
68
  def create_superuser(
62
69
  self,
63
70
  username: str,
@@ -65,6 +72,13 @@ class UserManager(BaseUserManager[_T]):
65
72
  password: str | None,
66
73
  **extra_fields: Any,
67
74
  ) -> _T: ...
75
+ async def acreate_superuser(
76
+ self,
77
+ username: str,
78
+ email: str | None,
79
+ password: str | None,
80
+ **extra_fields: Any,
81
+ ) -> _T: ...
68
82
  def with_perm(
69
83
  self,
70
84
  perm: str | Permission,
@@ -79,11 +93,19 @@ class PermissionsMixin(models.Model):
79
93
  groups = models.ManyToManyField[Group, Any](Group)
80
94
  user_permissions = models.ManyToManyField[Permission, Any](Permission)
81
95
  def get_user_permissions(self, obj: Model | None = ...) -> set[str]: ...
96
+ async def aget_user_permissions(self, obj: Model | None = ...) -> set[str]: ...
82
97
  def get_group_permissions(self, obj: Model | None = ...) -> set[str]: ...
98
+ async def aget_group_permissions(self, obj: Model | None = ...) -> set[str]: ...
83
99
  def get_all_permissions(self, obj: Model | None = ...) -> set[str]: ...
100
+ async def aget_all_permissions(self, obj: Model | None = ...) -> set[str]: ...
84
101
  def has_perm(self, perm: str, obj: Model | None = ...) -> bool: ...
102
+ async def ahas_perm(self, perm: str, obj: Model | None = ...) -> bool: ...
85
103
  def has_perms(self, perm_list: Iterable[str], obj: Model | None = ...) -> bool: ...
104
+ async def ahas_perms(
105
+ self, perm_list: Iterable[str], obj: Model | None = ...
106
+ ) -> bool: ...
86
107
  def has_module_perms(self, app_label: str) -> bool: ...
108
+ async def ahas_module_perms(self, app_label: str) -> bool: ...
87
109
 
88
110
  class AbstractUser(AbstractBaseUser, PermissionsMixin):
89
111
  username_validator: UnicodeUsernameValidator = ...
@@ -2,7 +2,6 @@ from typing import Any
2
2
 
3
3
  from django.contrib.auth.base_user import AbstractBaseUser
4
4
  from django.contrib.auth.forms import AuthenticationForm
5
- from django.core.handlers.wsgi import WSGIRequest
6
5
  from django.http.request import HttpRequest
7
6
  from django.http.response import HttpResponseRedirect
8
7
  from django.template.response import TemplateResponse
@@ -27,7 +26,7 @@ class LogoutView(SuccessURLAllowedHostsMixin, TemplateView):
27
26
  redirect_field_name: Any = ...
28
27
  extra_context: Any = ...
29
28
  def post(
30
- self, request: WSGIRequest, *args: Any, **kwargs: Any
29
+ self, request: HttpRequest, *args: Any, **kwargs: Any
31
30
  ) -> TemplateResponse: ...
32
31
  def get_next_page(self) -> str | None: ...
33
32
 
@@ -1,8 +1,8 @@
1
- from django.core.handlers.wsgi import WSGIRequest
1
+ from django.http.request import HttpRequest
2
2
  from django.http.response import HttpResponse
3
3
  from django.utils.deprecation import MiddlewareMixin
4
4
 
5
5
  class FlatpageFallbackMiddleware(MiddlewareMixin):
6
6
  def process_response(
7
- self, request: WSGIRequest, response: HttpResponse
7
+ self, request: HttpRequest, response: HttpResponse
8
8
  ) -> HttpResponse: ...
@@ -1,8 +1,8 @@
1
1
  from django.contrib.flatpages.models import FlatPage
2
- from django.core.handlers.wsgi import WSGIRequest
2
+ from django.http.request import HttpRequest
3
3
  from django.http.response import HttpResponse
4
4
 
5
5
  DEFAULT_TEMPLATE: str
6
6
 
7
- def flatpage(request: WSGIRequest, url: str) -> HttpResponse: ...
8
- def render_flatpage(request: WSGIRequest, f: FlatPage) -> HttpResponse: ...
7
+ def flatpage(request: HttpRequest, url: str) -> HttpResponse: ...
8
+ def render_flatpage(request: HttpRequest, f: FlatPage) -> HttpResponse: ...
@@ -1,6 +1,5 @@
1
1
  from collections.abc import Callable, Iterable
2
- from typing import Any, Generic, TypeVar, overload
3
- from typing_extensions import Literal
2
+ from typing import Any, Generic, Literal, TypeVar, overload
4
3
 
5
4
  from django.db.models.expressions import Combinable
6
5
  from django.db.models.fields import Field, _ErrorMessagesToOverride, _ValidatorCallable
@@ -1,6 +1,5 @@
1
1
  from collections.abc import Callable, Iterable
2
- from typing import Any, TypeVar, overload
3
- from typing_extensions import Literal
2
+ from typing import Any, Literal, TypeVar, overload
4
3
 
5
4
  from django.db.models.fields import CharField, EmailField, TextField
6
5
 
@@ -1,6 +1,5 @@
1
1
  from collections.abc import Callable, Iterable
2
- from typing import Any, Generic, TypeVar, overload
3
- from typing_extensions import Literal
2
+ from typing import Any, Generic, Literal, TypeVar, overload
4
3
 
5
4
  from django.db.models import Field, Transform
6
5
 
@@ -1,6 +1,5 @@
1
1
  from collections.abc import Iterable, Iterator, Mapping
2
- from typing import Any, overload
3
- from typing_extensions import Literal
2
+ from typing import Any, Literal, overload
4
3
 
5
4
  from django.core.checks.messages import CheckMessage
6
5
  from django.core.files.storage import Storage
@@ -1,8 +1,8 @@
1
1
  from typing import Any
2
2
 
3
- from django.core.handlers.wsgi import WSGIRequest
3
+ from django.http.request import HttpRequest
4
4
  from django.http.response import FileResponse
5
5
 
6
6
  def serve(
7
- request: WSGIRequest, path: str, insecure: bool = ..., **kwargs: Any
7
+ request: HttpRequest, path: str, insecure: bool = ..., **kwargs: Any
8
8
  ) -> FileResponse: ...
@@ -1,8 +1,8 @@
1
1
  from typing import Any
2
2
 
3
3
  from django.core.exceptions import ObjectDoesNotExist
4
- from django.core.handlers.wsgi import WSGIRequest
5
4
  from django.db.models.base import Model
5
+ from django.http.request import HttpRequest
6
6
  from django.http.response import HttpResponse
7
7
  from django.utils.feedgenerator import Enclosure, SyndicationFeed
8
8
  from django.utils.safestring import SafeText
@@ -16,7 +16,7 @@ class Feed:
16
16
  title_template: Any = ...
17
17
  description_template: Any = ...
18
18
  def __call__(
19
- self, request: WSGIRequest, *args: Any, **kwargs: Any
19
+ self, request: HttpRequest, *args: Any, **kwargs: Any
20
20
  ) -> HttpResponse: ...
21
21
  def item_title(self, item: Model) -> SafeText: ...
22
22
  def item_description(self, item: Model) -> str: ...
@@ -24,6 +24,6 @@ class Feed:
24
24
  def item_enclosures(self, item: Model) -> list[Enclosure]: ...
25
25
  def feed_extra_kwargs(self, obj: None) -> dict[Any, Any]: ...
26
26
  def item_extra_kwargs(self, item: Model) -> dict[Any, Any]: ...
27
- def get_object(self, request: WSGIRequest, *args: Any, **kwargs: Any) -> None: ...
27
+ def get_object(self, request: HttpRequest, *args: Any, **kwargs: Any) -> None: ...
28
28
  def get_context_data(self, **kwargs: Any) -> dict[str, Any]: ...
29
- def get_feed(self, obj: None, request: WSGIRequest) -> SyndicationFeed: ...
29
+ def get_feed(self, obj: None, request: HttpRequest) -> SyndicationFeed: ...
@@ -26,6 +26,13 @@ class FieldError(Exception): ...
26
26
 
27
27
  NON_FIELD_ERRORS: str
28
28
 
29
+ ValidationErrorMessageArg = (
30
+ str
31
+ | ValidationError
32
+ | dict[str, ValidationErrorMessageArg]
33
+ | list[ValidationErrorMessageArg]
34
+ )
35
+
29
36
  class ValidationError(Exception):
30
37
  error_dict: dict[str, list[ValidationError]] | None
31
38
  error_list: list[ValidationError] | None
@@ -34,12 +41,7 @@ class ValidationError(Exception):
34
41
  params: Mapping[str, Any] | None
35
42
  def __init__(
36
43
  self,
37
- message: (
38
- ValidationError
39
- | dict[str, ValidationError | list[str]]
40
- | list[ValidationError | str]
41
- | str
42
- ),
44
+ message: ValidationErrorMessageArg,
43
45
  code: str | None = ...,
44
46
  params: Mapping[str, Any] | None = ...,
45
47
  ) -> None: ...