mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-07 12:44:29 +08:00
Merge branch 'master' into queryset_in_bulk
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from typing import Any, Callable, Dict, List, Optional, Sequence, Set, Tuple, Type, Union, Iterator
|
from typing import Any, Callable, Dict, Iterator, List, Optional, Sequence, Set, Tuple, Type, Union
|
||||||
|
|
||||||
from django.contrib.admin.filters import ListFilter
|
from django.contrib.admin.filters import ListFilter
|
||||||
from django.contrib.admin.models import LogEntry
|
from django.contrib.admin.models import LogEntry
|
||||||
@@ -8,7 +8,6 @@ from django.contrib.admin.views.main import ChangeList
|
|||||||
from django.contrib.auth.forms import AdminPasswordChangeForm
|
from django.contrib.auth.forms import AdminPasswordChangeForm
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.core.checks.messages import Error
|
from django.core.checks.messages import Error
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from django.db.models.base import Model
|
from django.db.models.base import Model
|
||||||
from django.db.models.fields.related import ForeignKey, ManyToManyField, RelatedField
|
from django.db.models.fields.related import ForeignKey, ManyToManyField, RelatedField
|
||||||
@@ -17,12 +16,13 @@ from django.db.models.query import QuerySet
|
|||||||
from django.forms.fields import TypedChoiceField
|
from django.forms.fields import TypedChoiceField
|
||||||
from django.forms.models import ModelChoiceField, ModelMultipleChoiceField
|
from django.forms.models import ModelChoiceField, ModelMultipleChoiceField
|
||||||
from django.forms.widgets import Media
|
from django.forms.widgets import Media
|
||||||
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse, HttpResponseBase, HttpResponseRedirect, JsonResponse
|
from django.http.response import HttpResponse, HttpResponseBase, HttpResponseRedirect, JsonResponse
|
||||||
|
from django.template.response import TemplateResponse
|
||||||
from django.urls.resolvers import URLPattern
|
from django.urls.resolvers import URLPattern
|
||||||
from django.utils.safestring import SafeText
|
from django.utils.safestring import SafeText
|
||||||
|
|
||||||
from django.db.models.fields import Field
|
from django.db.models.fields import Field
|
||||||
from django.template.response import TemplateResponse
|
|
||||||
|
|
||||||
IS_POPUP_VAR: str
|
IS_POPUP_VAR: str
|
||||||
TO_FIELD_VAR: str
|
TO_FIELD_VAR: str
|
||||||
@@ -58,40 +58,40 @@ class BaseModelAdmin:
|
|||||||
def check(self, **kwargs: Any) -> List[Union[str, Error]]: ...
|
def check(self, **kwargs: Any) -> List[Union[str, Error]]: ...
|
||||||
def __init__(self) -> None: ...
|
def __init__(self) -> None: ...
|
||||||
def formfield_for_dbfield(
|
def formfield_for_dbfield(
|
||||||
self, db_field: Field, request: Optional[WSGIRequest], **kwargs: Any
|
self, db_field: Field, request: Optional[HttpRequest], **kwargs: Any
|
||||||
) -> Optional[Field]: ...
|
) -> Optional[Field]: ...
|
||||||
def formfield_for_choice_field(
|
def formfield_for_choice_field(
|
||||||
self, db_field: Field, request: Optional[WSGIRequest], **kwargs: Any
|
self, db_field: Field, request: Optional[HttpRequest], **kwargs: Any
|
||||||
) -> TypedChoiceField: ...
|
) -> TypedChoiceField: ...
|
||||||
def get_field_queryset(
|
def get_field_queryset(
|
||||||
self, db: None, db_field: RelatedField, request: Optional[WSGIRequest]
|
self, db: None, db_field: RelatedField, request: Optional[HttpRequest]
|
||||||
) -> Optional[QuerySet]: ...
|
) -> Optional[QuerySet]: ...
|
||||||
def formfield_for_foreignkey(
|
def formfield_for_foreignkey(
|
||||||
self, db_field: ForeignKey, request: Optional[WSGIRequest], **kwargs: Any
|
self, db_field: ForeignKey, request: Optional[HttpRequest], **kwargs: Any
|
||||||
) -> Optional[ModelChoiceField]: ...
|
) -> Optional[ModelChoiceField]: ...
|
||||||
def formfield_for_manytomany(
|
def formfield_for_manytomany(
|
||||||
self, db_field: ManyToManyField, request: Optional[WSGIRequest], **kwargs: Any
|
self, db_field: ManyToManyField, request: Optional[HttpRequest], **kwargs: Any
|
||||||
) -> ModelMultipleChoiceField: ...
|
) -> ModelMultipleChoiceField: ...
|
||||||
def get_autocomplete_fields(self, request: WSGIRequest) -> Tuple: ...
|
def get_autocomplete_fields(self, request: HttpRequest) -> Tuple: ...
|
||||||
def get_view_on_site_url(self, obj: Optional[Model] = ...) -> Optional[str]: ...
|
def get_view_on_site_url(self, obj: Optional[Model] = ...) -> Optional[str]: ...
|
||||||
def get_empty_value_display(self) -> SafeText: ...
|
def get_empty_value_display(self) -> SafeText: ...
|
||||||
def get_exclude(self, request: WSGIRequest, obj: Optional[Model] = ...) -> Any: ...
|
def get_exclude(self, request: HttpRequest, obj: Optional[Model] = ...) -> Any: ...
|
||||||
def get_fields(self, request: WSGIRequest, obj: Optional[Model] = ...) -> Sequence[Union[Callable, str]]: ...
|
def get_fields(self, request: HttpRequest, obj: Optional[Model] = ...) -> Sequence[Union[Callable, str]]: ...
|
||||||
def get_fieldsets(
|
def get_fieldsets(
|
||||||
self, request: WSGIRequest, obj: Optional[Model] = ...
|
self, request: HttpRequest, obj: Optional[Model] = ...
|
||||||
) -> List[Tuple[Optional[str], Dict[str, Any]]]: ...
|
) -> List[Tuple[Optional[str], Dict[str, Any]]]: ...
|
||||||
def get_ordering(self, request: WSGIRequest) -> Union[List[str], Tuple]: ...
|
def get_ordering(self, request: HttpRequest) -> Union[List[str], Tuple]: ...
|
||||||
def get_readonly_fields(self, request: WSGIRequest, obj: Optional[Model] = ...) -> Union[List[str], Tuple]: ...
|
def get_readonly_fields(self, request: HttpRequest, obj: Optional[Model] = ...) -> Union[List[str], Tuple]: ...
|
||||||
def get_prepopulated_fields(self, request: WSGIRequest, obj: Optional[Model] = ...) -> Dict[str, Tuple[str]]: ...
|
def get_prepopulated_fields(self, request: HttpRequest, obj: Optional[Model] = ...) -> Dict[str, Tuple[str]]: ...
|
||||||
def get_queryset(self, request: WSGIRequest) -> QuerySet: ...
|
def get_queryset(self, request: HttpRequest) -> QuerySet: ...
|
||||||
def get_sortable_by(self, request: WSGIRequest) -> Union[List[Callable], List[str], Tuple]: ...
|
def get_sortable_by(self, request: HttpRequest) -> Union[List[Callable], List[str], Tuple]: ...
|
||||||
def lookup_allowed(self, lookup: str, value: str) -> bool: ...
|
def lookup_allowed(self, lookup: str, value: str) -> bool: ...
|
||||||
def to_field_allowed(self, request: WSGIRequest, to_field: str) -> bool: ...
|
def to_field_allowed(self, request: HttpRequest, to_field: str) -> bool: ...
|
||||||
def has_add_permission(self, request: WSGIRequest, obj: Optional[Model] = ...) -> bool: ...
|
def has_add_permission(self, request: HttpRequest, obj: Optional[Model] = ...) -> bool: ...
|
||||||
def has_change_permission(self, request: WSGIRequest, obj: Optional[Model] = ...) -> bool: ...
|
def has_change_permission(self, request: HttpRequest, obj: Optional[Model] = ...) -> bool: ...
|
||||||
def has_delete_permission(self, request: WSGIRequest, obj: Optional[Model] = ...) -> bool: ...
|
def has_delete_permission(self, request: HttpRequest, obj: Optional[Model] = ...) -> bool: ...
|
||||||
def has_view_permission(self, request: WSGIRequest, obj: Optional[Model] = ...) -> bool: ...
|
def has_view_permission(self, request: HttpRequest, obj: Optional[Model] = ...) -> bool: ...
|
||||||
def has_module_permission(self, request: WSGIRequest) -> bool: ...
|
def has_module_permission(self, request: HttpRequest) -> bool: ...
|
||||||
|
|
||||||
class ModelAdmin(BaseModelAdmin):
|
class ModelAdmin(BaseModelAdmin):
|
||||||
formfield_overrides: Any
|
formfield_overrides: Any
|
||||||
@@ -127,54 +127,54 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
opts: Options = ...
|
opts: Options = ...
|
||||||
admin_site: AdminSite = ...
|
admin_site: AdminSite = ...
|
||||||
def __init__(self, model: Type[Model], admin_site: Optional[AdminSite]) -> None: ...
|
def __init__(self, model: Type[Model], admin_site: Optional[AdminSite]) -> None: ...
|
||||||
def get_inline_instances(self, request: WSGIRequest, obj: Optional[Model] = ...) -> List[InlineModelAdmin]: ...
|
def get_inline_instances(self, request: HttpRequest, obj: Optional[Model] = ...) -> List[InlineModelAdmin]: ...
|
||||||
def get_urls(self) -> List[URLPattern]: ...
|
def get_urls(self) -> List[URLPattern]: ...
|
||||||
@property
|
@property
|
||||||
def urls(self) -> List[URLPattern]: ...
|
def urls(self) -> List[URLPattern]: ...
|
||||||
@property
|
@property
|
||||||
def media(self) -> Media: ...
|
def media(self) -> Media: ...
|
||||||
def get_model_perms(self, request: WSGIRequest) -> Dict[str, bool]: ...
|
def get_model_perms(self, request: HttpRequest) -> Dict[str, bool]: ...
|
||||||
def get_form(self, request: Any, obj: Optional[Any] = ..., change: bool = ..., **kwargs: Any): ...
|
def get_form(self, request: Any, obj: Optional[Any] = ..., change: bool = ..., **kwargs: Any): ...
|
||||||
def get_changelist(self, request: WSGIRequest, **kwargs: Any) -> Type[ChangeList]: ...
|
def get_changelist(self, request: HttpRequest, **kwargs: Any) -> Type[ChangeList]: ...
|
||||||
def get_changelist_instance(self, request: WSGIRequest) -> ChangeList: ...
|
def get_changelist_instance(self, request: HttpRequest) -> ChangeList: ...
|
||||||
def get_object(self, request: WSGIRequest, object_id: str, from_field: None = ...) -> Optional[Model]: ...
|
def get_object(self, request: HttpRequest, object_id: str, from_field: None = ...) -> Optional[Model]: ...
|
||||||
def get_changelist_form(self, request: Any, **kwargs: Any): ...
|
def get_changelist_form(self, request: Any, **kwargs: Any): ...
|
||||||
def get_changelist_formset(self, request: Any, **kwargs: Any): ...
|
def get_changelist_formset(self, request: Any, **kwargs: Any): ...
|
||||||
def get_formsets_with_inlines(self, request: WSGIRequest, obj: Optional[Model] = ...) -> Iterator[Any]: ...
|
def get_formsets_with_inlines(self, request: HttpRequest, obj: Optional[Model] = ...) -> Iterator[Any]: ...
|
||||||
def get_paginator(
|
def get_paginator(
|
||||||
self,
|
self,
|
||||||
request: WSGIRequest,
|
request: HttpRequest,
|
||||||
queryset: QuerySet,
|
queryset: QuerySet,
|
||||||
per_page: int,
|
per_page: int,
|
||||||
orphans: int = ...,
|
orphans: int = ...,
|
||||||
allow_empty_first_page: bool = ...,
|
allow_empty_first_page: bool = ...,
|
||||||
) -> Paginator: ...
|
) -> Paginator: ...
|
||||||
def log_addition(self, request: WSGIRequest, object: Model, message: Any) -> LogEntry: ...
|
def log_addition(self, request: HttpRequest, object: Model, message: Any) -> LogEntry: ...
|
||||||
def log_change(self, request: WSGIRequest, object: Model, message: Any) -> LogEntry: ...
|
def log_change(self, request: HttpRequest, object: Model, message: Any) -> LogEntry: ...
|
||||||
def log_deletion(self, request: WSGIRequest, object: Model, object_repr: str) -> LogEntry: ...
|
def log_deletion(self, request: HttpRequest, object: Model, object_repr: str) -> LogEntry: ...
|
||||||
def action_checkbox(self, obj: Model) -> SafeText: ...
|
def action_checkbox(self, obj: Model) -> SafeText: ...
|
||||||
def get_actions(self, request: WSGIRequest) -> OrderedDict: ...
|
def get_actions(self, request: HttpRequest) -> OrderedDict: ...
|
||||||
def get_action_choices(
|
def get_action_choices(
|
||||||
self, request: WSGIRequest, default_choices: List[Tuple[str, str]] = ...
|
self, request: HttpRequest, default_choices: List[Tuple[str, str]] = ...
|
||||||
) -> List[Tuple[str, str]]: ...
|
) -> List[Tuple[str, str]]: ...
|
||||||
def get_action(self, action: Union[Callable, str]) -> Tuple[Callable, str, str]: ...
|
def get_action(self, action: Union[Callable, str]) -> Tuple[Callable, str, str]: ...
|
||||||
def get_list_display(self, request: WSGIRequest) -> Sequence[str]: ...
|
def get_list_display(self, request: HttpRequest) -> Sequence[str]: ...
|
||||||
def get_list_display_links(self, request: WSGIRequest, list_display: Sequence[str]) -> Optional[Sequence[str]]: ...
|
def get_list_display_links(self, request: HttpRequest, list_display: Sequence[str]) -> Optional[Sequence[str]]: ...
|
||||||
def get_list_filter(self, request: WSGIRequest) -> Sequence[str]: ...
|
def get_list_filter(self, request: HttpRequest) -> Sequence[str]: ...
|
||||||
def get_list_select_related(self, request: WSGIRequest) -> Sequence[str]: ...
|
def get_list_select_related(self, request: HttpRequest) -> Sequence[str]: ...
|
||||||
def get_search_fields(self, request: WSGIRequest) -> List[str]: ...
|
def get_search_fields(self, request: HttpRequest) -> List[str]: ...
|
||||||
def get_search_results(
|
def get_search_results(
|
||||||
self, request: WSGIRequest, queryset: QuerySet, search_term: str
|
self, request: HttpRequest, queryset: QuerySet, search_term: str
|
||||||
) -> Tuple[QuerySet, bool]: ...
|
) -> Tuple[QuerySet, bool]: ...
|
||||||
def get_preserved_filters(self, request: WSGIRequest) -> str: ...
|
def get_preserved_filters(self, request: HttpRequest) -> str: ...
|
||||||
def _get_edited_object_pks(self, request: WSGIRequest, prefix: str) -> List[str]: ...
|
def _get_edited_object_pks(self, request: HttpRequest, prefix: str) -> List[str]: ...
|
||||||
def _get_list_editable_queryset(self, request: WSGIRequest, prefix: str) -> QuerySet: ...
|
def _get_list_editable_queryset(self, request: HttpRequest, prefix: str) -> QuerySet: ...
|
||||||
def construct_change_message(
|
def construct_change_message(
|
||||||
self, request: WSGIRequest, form: AdminPasswordChangeForm, formsets: None, add: bool = ...
|
self, request: HttpRequest, form: AdminPasswordChangeForm, formsets: None, add: bool = ...
|
||||||
) -> List[Dict[str, Dict[str, List[str]]]]: ...
|
) -> List[Dict[str, Dict[str, List[str]]]]: ...
|
||||||
def message_user(
|
def message_user(
|
||||||
self,
|
self,
|
||||||
request: WSGIRequest,
|
request: HttpRequest,
|
||||||
message: str,
|
message: str,
|
||||||
level: Union[int, str] = ...,
|
level: Union[int, str] = ...,
|
||||||
extra_tags: str = ...,
|
extra_tags: str = ...,
|
||||||
@@ -182,8 +182,8 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
) -> None: ...
|
) -> None: ...
|
||||||
def save_form(self, request: Any, form: Any, change: Any): ...
|
def save_form(self, request: Any, form: Any, change: Any): ...
|
||||||
def save_model(self, request: Any, obj: Any, form: Any, change: Any) -> None: ...
|
def save_model(self, request: Any, obj: Any, form: Any, change: Any) -> None: ...
|
||||||
def delete_model(self, request: WSGIRequest, obj: Model) -> None: ...
|
def delete_model(self, request: HttpRequest, obj: Model) -> None: ...
|
||||||
def delete_queryset(self, request: WSGIRequest, queryset: QuerySet) -> None: ...
|
def delete_queryset(self, request: HttpRequest, queryset: QuerySet) -> None: ...
|
||||||
def save_formset(self, request: Any, form: Any, formset: Any, change: Any) -> None: ...
|
def save_formset(self, request: Any, form: Any, formset: Any, change: Any) -> None: ...
|
||||||
def save_related(self, request: Any, form: Any, formsets: Any, change: Any) -> None: ...
|
def save_related(self, request: Any, form: Any, formsets: Any, change: Any) -> None: ...
|
||||||
def render_change_form(
|
def render_change_form(
|
||||||
@@ -196,52 +196,51 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
obj: Optional[Any] = ...,
|
obj: Optional[Any] = ...,
|
||||||
): ...
|
): ...
|
||||||
def response_add(
|
def response_add(
|
||||||
self, request: WSGIRequest, obj: Model, post_url_continue: Optional[str] = ...
|
self, request: HttpRequest, obj: Model, post_url_continue: Optional[str] = ...
|
||||||
) -> HttpResponse: ...
|
) -> HttpResponse: ...
|
||||||
def response_change(self, request: WSGIRequest, obj: Model) -> HttpResponse: ...
|
def response_change(self, request: HttpRequest, obj: Model) -> HttpResponse: ...
|
||||||
def response_post_save_add(self, request: WSGIRequest, obj: Model) -> HttpResponseRedirect: ...
|
def response_post_save_add(self, request: HttpRequest, obj: Model) -> HttpResponseRedirect: ...
|
||||||
def response_post_save_change(self, request: WSGIRequest, obj: Model) -> HttpResponseRedirect: ...
|
def response_post_save_change(self, request: HttpRequest, obj: Model) -> HttpResponseRedirect: ...
|
||||||
def response_action(self, request: WSGIRequest, queryset: QuerySet) -> Optional[HttpResponseBase]: ...
|
def response_action(self, request: HttpRequest, queryset: QuerySet) -> Optional[HttpResponseBase]: ...
|
||||||
def response_delete(self, request: WSGIRequest, obj_display: str, obj_id: int) -> HttpResponse: ...
|
def response_delete(self, request: HttpRequest, obj_display: str, obj_id: int) -> HttpResponse: ...
|
||||||
def render_delete_form(self, request: Any, context: Any): ...
|
def render_delete_form(self, request: Any, context: Any): ...
|
||||||
def get_inline_formsets(
|
def get_inline_formsets(
|
||||||
self, request: WSGIRequest, formsets: List[Any], inline_instances: List[Any], obj: Optional[Model] = ...
|
self, request: HttpRequest, formsets: List[Any], inline_instances: List[Any], obj: Optional[Model] = ...
|
||||||
) -> List[Any]: ...
|
) -> List[Any]: ...
|
||||||
def get_changeform_initial_data(self, request: WSGIRequest) -> Dict[str, str]: ...
|
def get_changeform_initial_data(self, request: HttpRequest) -> Dict[str, str]: ...
|
||||||
def changeform_view(
|
def changeform_view(
|
||||||
self,
|
self,
|
||||||
request: WSGIRequest,
|
request: HttpRequest,
|
||||||
object_id: Optional[str] = ...,
|
object_id: Optional[str] = ...,
|
||||||
form_url: str = ...,
|
form_url: str = ...,
|
||||||
extra_context: Optional[Dict[str, bool]] = ...,
|
extra_context: Optional[Dict[str, bool]] = ...,
|
||||||
) -> Any: ...
|
) -> Any: ...
|
||||||
def autocomplete_view(self, request: WSGIRequest) -> JsonResponse: ...
|
def autocomplete_view(self, request: HttpRequest) -> JsonResponse: ...
|
||||||
def add_view(self, request: WSGIRequest, form_url: str = ..., extra_context: None = ...) -> HttpResponse: ...
|
def add_view(self, request: HttpRequest, form_url: str = ..., extra_context: None = ...) -> HttpResponse: ...
|
||||||
def change_view(
|
def change_view(
|
||||||
self, request: WSGIRequest, object_id: str, form_url: str = ..., extra_context: Optional[Dict[str, bool]] = ...
|
self, request: HttpRequest, object_id: str, form_url: str = ..., extra_context: Optional[Dict[str, bool]] = ...
|
||||||
) -> HttpResponse: ...
|
) -> HttpResponse: ...
|
||||||
def changelist_view(
|
def changelist_view(
|
||||||
self, request: WSGIRequest, extra_context: Optional[Dict[str, str]] = ...
|
self, request: HttpRequest, extra_context: Optional[Dict[str, str]] = ...
|
||||||
) -> TemplateResponse: ...
|
) -> TemplateResponse: ...
|
||||||
def get_deleted_objects(
|
def get_deleted_objects(
|
||||||
self, objs: QuerySet, request: WSGIRequest
|
self, objs: QuerySet, request: HttpRequest
|
||||||
) -> Tuple[List[Any], Dict[Any, Any], Set[Any], List[Any]]: ...
|
) -> Tuple[List[Any], Dict[Any, Any], Set[Any], List[Any]]: ...
|
||||||
def delete_view(self, request: WSGIRequest, object_id: str, extra_context: None = ...) -> Any: ...
|
def delete_view(self, request: HttpRequest, object_id: str, extra_context: None = ...) -> Any: ...
|
||||||
def history_view(self, request: WSGIRequest, object_id: str, extra_context: None = ...) -> HttpResponse: ...
|
def history_view(self, request: HttpRequest, object_id: str, extra_context: None = ...) -> HttpResponse: ...
|
||||||
|
|
||||||
class InlineModelAdmin(BaseModelAdmin):
|
class InlineModelAdmin(BaseModelAdmin):
|
||||||
model: Any = ...
|
model: Any = ...
|
||||||
fk_name: Any = ...
|
fk_name: Any = ...
|
||||||
formset: Any = ...
|
formset: Any = ...
|
||||||
extra: int = ...
|
extra: int = ...
|
||||||
min_num: Any = ...
|
min_num: Optional[int] = ...
|
||||||
max_num: Any = ...
|
max_num: Optional[int] = ...
|
||||||
template: Any = ...
|
template: str = ...
|
||||||
verbose_name: Any = ...
|
verbose_name: Optional[str] = ...
|
||||||
verbose_name_plural: Any = ...
|
verbose_name_plural: Optional[str] = ...
|
||||||
can_delete: bool = ...
|
can_delete: bool = ...
|
||||||
show_change_link: bool = ...
|
show_change_link: bool = ...
|
||||||
checks_class: Any = ...
|
|
||||||
classes: Any = ...
|
classes: Any = ...
|
||||||
admin_site: Any = ...
|
admin_site: Any = ...
|
||||||
parent_model: Any = ...
|
parent_model: Any = ...
|
||||||
@@ -250,18 +249,10 @@ class InlineModelAdmin(BaseModelAdmin):
|
|||||||
def __init__(self, parent_model: Union[Type[Model], Model], admin_site: AdminSite) -> None: ...
|
def __init__(self, parent_model: Union[Type[Model], Model], admin_site: AdminSite) -> None: ...
|
||||||
@property
|
@property
|
||||||
def media(self) -> Media: ...
|
def media(self) -> Media: ...
|
||||||
def get_extra(self, request: WSGIRequest, obj: Optional[Model] = ..., **kwargs: Any) -> int: ...
|
def get_extra(self, request: HttpRequest, obj: Optional[Model] = ..., **kwargs: Any) -> int: ...
|
||||||
def get_min_num(self, request: WSGIRequest, obj: Optional[Model] = ..., **kwargs: Any) -> None: ...
|
def get_min_num(self, request: HttpRequest, obj: Optional[Model] = ..., **kwargs: Any) -> Optional[int]: ...
|
||||||
def get_max_num(self, request: WSGIRequest, obj: Optional[Model] = ..., **kwargs: Any) -> Optional[int]: ...
|
def get_max_num(self, request: HttpRequest, obj: Optional[Model] = ..., **kwargs: Any) -> Optional[int]: ...
|
||||||
fields: Any = ...
|
|
||||||
def get_formset(self, request: Any, obj: Optional[Any] = ..., **kwargs: Any): ...
|
def get_formset(self, request: Any, obj: Optional[Any] = ..., **kwargs: Any): ...
|
||||||
def get_queryset(self, request: WSGIRequest) -> QuerySet: ...
|
|
||||||
def has_change_permission(self, request: WSGIRequest, obj: Optional[Model] = ...) -> bool: ...
|
|
||||||
def has_delete_permission(self, request: WSGIRequest, obj: Optional[Model] = ...) -> bool: ...
|
|
||||||
def has_view_permission(self, request: WSGIRequest, obj: Optional[Model] = ...) -> bool: ...
|
|
||||||
|
|
||||||
class StackedInline(InlineModelAdmin):
|
class StackedInline(InlineModelAdmin): ...
|
||||||
template: str = ...
|
class TabularInline(InlineModelAdmin): ...
|
||||||
|
|
||||||
class TabularInline(InlineModelAdmin):
|
|
||||||
template: str = ...
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse
|
from django.http.response import HttpResponse
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
|
|
||||||
class RedirectFallbackMiddleware(MiddlewareMixin):
|
class RedirectFallbackMiddleware(MiddlewareMixin):
|
||||||
response_gone_class: Any = ...
|
response_gone_class: Any = ...
|
||||||
response_redirect_class: Any = ...
|
response_redirect_class: Any = ...
|
||||||
def process_response(self, request: WSGIRequest, response: HttpResponse) -> HttpResponse: ...
|
def process_response(self, request: HttpRequest, response: HttpResponse) -> HttpResponse: ...
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Any, Dict, Optional
|
from typing import Any, Dict, Optional, Type
|
||||||
|
|
||||||
|
from django.contrib.sessions.backends.base import SessionBase
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
class BaseSessionManager(models.Manager):
|
class BaseSessionManager(models.Manager):
|
||||||
creation_counter: int
|
|
||||||
model: None
|
|
||||||
name: None
|
|
||||||
def encode(self, session_dict: Dict[str, int]) -> str: ...
|
def encode(self, session_dict: Dict[str, int]) -> str: ...
|
||||||
def save(self, session_key: str, session_dict: Dict[str, int], expire_date: datetime) -> AbstractBaseSession: ...
|
def save(self, session_key: str, session_dict: Dict[str, int], expire_date: datetime) -> AbstractBaseSession: ...
|
||||||
|
|
||||||
class AbstractBaseSession(models.Model):
|
class AbstractBaseSession(models.Model):
|
||||||
session_key: Any = ...
|
expire_date: datetime
|
||||||
session_data: Any = ...
|
session_data: str
|
||||||
expire_date: Any = ...
|
session_key: str
|
||||||
objects: Any = ...
|
objects: Any = ...
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_session_store_class(cls) -> None: ...
|
def get_session_store_class(cls) -> Optional[Type[SessionBase]]: ...
|
||||||
def get_decoded(self) -> Dict[str, int]: ...
|
def get_decoded(self) -> Dict[str, int]: ...
|
||||||
|
|||||||
@@ -1,18 +1,4 @@
|
|||||||
from typing import Any, Optional, Type
|
|
||||||
|
|
||||||
from django.contrib.sessions.backends.db import SessionStore
|
|
||||||
from django.contrib.sessions.base_session import AbstractBaseSession, BaseSessionManager
|
from django.contrib.sessions.base_session import AbstractBaseSession, BaseSessionManager
|
||||||
|
|
||||||
class SessionManager(BaseSessionManager):
|
class SessionManager(BaseSessionManager): ...
|
||||||
creation_counter: int
|
class Session(AbstractBaseSession): ...
|
||||||
model: None
|
|
||||||
name: None
|
|
||||||
use_in_migrations: bool = ...
|
|
||||||
|
|
||||||
class Session(AbstractBaseSession):
|
|
||||||
expire_date: datetime.datetime
|
|
||||||
session_data: str
|
|
||||||
session_key: str
|
|
||||||
objects: Any = ...
|
|
||||||
@classmethod
|
|
||||||
def get_session_store_class(cls) -> Type[SessionStore]: ...
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Dict, Optional
|
from typing import Dict
|
||||||
|
|
||||||
from django.core.signing import JSONSerializer as BaseJSONSerializer
|
from django.core.signing import JSONSerializer as BaseJSONSerializer
|
||||||
from django.db.models.base import Model
|
from django.db.models.base import Model
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ PING_URL: str
|
|||||||
|
|
||||||
class SitemapNotFound(Exception): ...
|
class SitemapNotFound(Exception): ...
|
||||||
|
|
||||||
def ping_google(sitemap_url: None = ..., ping_url: str = ...) -> None: ...
|
def ping_google(sitemap_url: Optional[str] = ..., ping_url: str = ...) -> None: ...
|
||||||
|
|
||||||
class Sitemap:
|
class Sitemap:
|
||||||
limit: int = ...
|
limit: int = ...
|
||||||
@@ -22,14 +22,14 @@ class Sitemap:
|
|||||||
def paginator(self) -> Paginator: ...
|
def paginator(self) -> Paginator: ...
|
||||||
def get_urls(
|
def get_urls(
|
||||||
self, page: Union[int, str] = ..., site: Optional[Union[Site, RequestSite]] = ..., protocol: Optional[str] = ...
|
self, page: Union[int, str] = ..., site: Optional[Union[Site, RequestSite]] = ..., protocol: Optional[str] = ...
|
||||||
) -> List[Dict[str, Optional[Union[datetime, Model, str]]]]: ...
|
) -> List[Dict[str, Any]]: ...
|
||||||
|
|
||||||
class GenericSitemap(Sitemap):
|
class GenericSitemap(Sitemap):
|
||||||
priority: None = ...
|
priority: Optional[float] = ...
|
||||||
changefreq: None = ...
|
changefreq: Optional[str] = ...
|
||||||
queryset: QuerySet = ...
|
queryset: QuerySet = ...
|
||||||
date_field: None = ...
|
date_field: None = ...
|
||||||
protocol: None = ...
|
protocol: Optional[str] = ...
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
info_dict: Dict[str, Union[datetime, QuerySet, str]],
|
info_dict: Dict[str, Union[datetime, QuerySet, str]],
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from typing import Any, Callable, Dict, Optional, Type, Union
|
from typing import Callable, Dict, Optional, Type, Union
|
||||||
|
|
||||||
|
from django.http.request import HttpRequest
|
||||||
|
from django.template.response import TemplateResponse
|
||||||
|
|
||||||
from django.contrib.sitemaps import GenericSitemap, Sitemap
|
from django.contrib.sitemaps import GenericSitemap, Sitemap
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
|
||||||
from django.template.response import TemplateResponse
|
|
||||||
|
|
||||||
def x_robots_tag(func: Callable) -> Callable: ...
|
def x_robots_tag(func: Callable) -> Callable: ...
|
||||||
def index(
|
def index(
|
||||||
request: WSGIRequest,
|
request: HttpRequest,
|
||||||
sitemaps: Dict[str, Union[Type[Sitemap], Sitemap]],
|
sitemaps: Dict[str, Union[Type[Sitemap], Sitemap]],
|
||||||
template_name: str = ...,
|
template_name: str = ...,
|
||||||
content_type: str = ...,
|
content_type: str = ...,
|
||||||
sitemap_url_name: str = ...,
|
sitemap_url_name: str = ...,
|
||||||
) -> TemplateResponse: ...
|
) -> TemplateResponse: ...
|
||||||
def sitemap(
|
def sitemap(
|
||||||
request: WSGIRequest,
|
request: HttpRequest,
|
||||||
sitemaps: Union[Dict[str, Type[Sitemap]], Dict[str, GenericSitemap], OrderedDict],
|
sitemaps: Union[Dict[str, Type[Sitemap]], Dict[str, GenericSitemap], OrderedDict],
|
||||||
section: Optional[str] = ...,
|
section: Optional[str] = ...,
|
||||||
template_name: str = ...,
|
template_name: str = ...,
|
||||||
|
|||||||
2
django-stubs/core/cache/__init__.pyi
vendored
2
django-stubs/core/cache/__init__.pyi
vendored
@@ -1,7 +1,7 @@
|
|||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from typing import Any, Callable, Dict, Union
|
from typing import Any, Callable, Dict, Union
|
||||||
|
|
||||||
from django.core.cache.backends.base import BaseCache as BaseCache
|
from .backends.base import BaseCache as BaseCache
|
||||||
|
|
||||||
DEFAULT_CACHE_ALIAS: str
|
DEFAULT_CACHE_ALIAS: str
|
||||||
|
|
||||||
|
|||||||
4
django-stubs/core/cache/utils.pyi
vendored
4
django-stubs/core/cache/utils.pyi
vendored
@@ -1,5 +1,5 @@
|
|||||||
from typing import Any, List, Optional, Union
|
from typing import Any, Iterable, Optional
|
||||||
|
|
||||||
TEMPLATE_FRAGMENT_KEY_TEMPLATE: str
|
TEMPLATE_FRAGMENT_KEY_TEMPLATE: str
|
||||||
|
|
||||||
def make_template_fragment_key(fragment_name: str, vary_on: Optional[Union[List[int], List[str]]] = ...) -> str: ...
|
def make_template_fragment_key(fragment_name: str, vary_on: Optional[Iterable[Any]] = ...) -> str: ...
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Any, Callable
|
from typing import Any, Callable
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse, HttpResponseBase
|
from django.http.response import HttpResponse, HttpResponseBase
|
||||||
|
|
||||||
logger: Any
|
logger: Any
|
||||||
@@ -13,5 +13,5 @@ class BaseHandler:
|
|||||||
def load_middleware(self) -> None: ...
|
def load_middleware(self) -> None: ...
|
||||||
def make_view_atomic(self, view: Callable) -> Callable: ...
|
def make_view_atomic(self, view: Callable) -> Callable: ...
|
||||||
def get_exception_response(self, request: Any, resolver: Any, status_code: Any, exception: Any): ...
|
def get_exception_response(self, request: Any, resolver: Any, status_code: Any, exception: Any): ...
|
||||||
def get_response(self, request: WSGIRequest) -> HttpResponseBase: ...
|
def get_response(self, request: HttpRequest) -> HttpResponseBase: ...
|
||||||
def process_exception_by_middleware(self, exception: Exception, request: WSGIRequest) -> HttpResponse: ...
|
def process_exception_by_middleware(self, exception: Exception, request: HttpRequest) -> HttpResponse: ...
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
from typing import Any, Callable
|
from typing import Any, Callable
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse
|
from django.http.response import HttpResponse
|
||||||
from django.urls.resolvers import URLResolver
|
from django.urls.resolvers import URLResolver
|
||||||
|
|
||||||
def convert_exception_to_response(get_response: Callable) -> Callable: ...
|
def convert_exception_to_response(get_response: Callable) -> Callable: ...
|
||||||
def response_for_exception(request: WSGIRequest, exc: Exception) -> HttpResponse: ...
|
def response_for_exception(request: HttpRequest, exc: Exception) -> HttpResponse: ...
|
||||||
def get_exception_response(
|
def get_exception_response(
|
||||||
request: WSGIRequest, resolver: URLResolver, status_code: int, exception: Exception, sender: None = ...
|
request: HttpRequest, resolver: URLResolver, status_code: int, exception: Exception, sender: None = ...
|
||||||
) -> HttpResponse: ...
|
) -> HttpResponse: ...
|
||||||
def handle_uncaught_exception(request: Any, resolver: Any, exc_info: Any): ...
|
def handle_uncaught_exception(request: Any, resolver: Any, exc_info: Any): ...
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
from typing import Any, List, Optional, Tuple
|
from typing import Any, List, Optional, Tuple
|
||||||
|
|
||||||
from django.core.mail.backends.base import BaseEmailBackend
|
from .backends.base import BaseEmailBackend
|
||||||
from django.core.mail.message import DEFAULT_ATTACHMENT_MIME_TYPE as DEFAULT_ATTACHMENT_MIME_TYPE
|
from .message import (
|
||||||
from django.core.mail.message import BadHeaderError as BadHeaderError
|
BadHeaderError as BadHeaderError,
|
||||||
from django.core.mail.message import EmailMessage as EmailMessage
|
DEFAULT_ATTACHMENT_MIME_TYPE as DEFAULT_ATTACHMENT_MIME_TYPE,
|
||||||
from django.core.mail.message import EmailMultiAlternatives as EmailMultiAlternatives
|
EmailMessage as EmailMessage,
|
||||||
from django.core.mail.message import SafeMIMEMultipart as SafeMIMEMultipart
|
EmailMultiAlternatives as EmailMultiAlternatives,
|
||||||
from django.core.mail.message import SafeMIMEText as SafeMIMEText
|
SafeMIMEMultipart as SafeMIMEMultipart,
|
||||||
from django.core.mail.message import forbid_multi_line_headers as forbid_multi_line_headers
|
SafeMIMEText as SafeMIMEText,
|
||||||
from django.core.mail.utils import DNS_NAME as DNS_NAME
|
forbid_multi_line_headers as forbid_multi_line_headers,
|
||||||
from django.core.mail.utils import CachedDnsName as CachedDnsName
|
)
|
||||||
|
from .utils import CachedDnsName as CachedDnsName, DNS_NAME as DNS_NAME
|
||||||
|
|
||||||
def get_connection(backend: Optional[str] = ..., fail_silently: bool = ..., **kwds: Any) -> BaseEmailBackend: ...
|
def get_connection(backend: Optional[str] = ..., fail_silently: bool = ..., **kwds: Any) -> BaseEmailBackend: ...
|
||||||
def send_mail(
|
def send_mail(
|
||||||
@@ -18,17 +19,17 @@ def send_mail(
|
|||||||
from_email: Optional[str],
|
from_email: Optional[str],
|
||||||
recipient_list: List[str],
|
recipient_list: List[str],
|
||||||
fail_silently: bool = ...,
|
fail_silently: bool = ...,
|
||||||
auth_user: None = ...,
|
auth_user: Optional[str] = ...,
|
||||||
auth_password: None = ...,
|
auth_password: Optional[str] = ...,
|
||||||
connection: Optional[BaseEmailBackend] = ...,
|
connection: Optional[BaseEmailBackend] = ...,
|
||||||
html_message: Optional[str] = ...,
|
html_message: Optional[str] = ...,
|
||||||
) -> int: ...
|
) -> int: ...
|
||||||
def send_mass_mail(
|
def send_mass_mail(
|
||||||
datatuple: List[Tuple[str, str, str, List[str]]],
|
datatuple: List[Tuple[str, str, str, List[str]]],
|
||||||
fail_silently: bool = ...,
|
fail_silently: bool = ...,
|
||||||
auth_user: None = ...,
|
auth_user: Optional[str] = ...,
|
||||||
auth_password: None = ...,
|
auth_password: Optional[str] = ...,
|
||||||
connection: BaseEmailBackend = ...,
|
connection: Optional[BaseEmailBackend] = ...,
|
||||||
) -> int: ...
|
) -> int: ...
|
||||||
def mail_admins(
|
def mail_admins(
|
||||||
subject: str,
|
subject: str,
|
||||||
@@ -45,4 +46,4 @@ def mail_managers(
|
|||||||
html_message: Optional[str] = ...,
|
html_message: Optional[str] = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
|
|
||||||
outbox = [EmailMessage()]
|
outbox: List[EmailMessage] = ...
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import email
|
from email._policybase import Policy
|
||||||
from email.mime.message import MIMEMessage
|
from email.mime.message import MIMEMessage
|
||||||
from email.mime.multipart import MIMEMultipart
|
from email.mime.multipart import MIMEMultipart
|
||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union, Sequence
|
||||||
|
|
||||||
from django.core.mail.backends.base import BaseEmailBackend
|
from django.core.mail.backends.base import BaseEmailBackend
|
||||||
from django.utils.safestring import SafeText
|
from django.utils.safestring import SafeText
|
||||||
@@ -27,14 +27,14 @@ class MIMEMixin:
|
|||||||
class SafeMIMEMessage(MIMEMixin, MIMEMessage):
|
class SafeMIMEMessage(MIMEMixin, MIMEMessage):
|
||||||
defects: List[Any]
|
defects: List[Any]
|
||||||
epilogue: None
|
epilogue: None
|
||||||
policy: email._policybase.Compat32
|
policy: Policy
|
||||||
preamble: None
|
preamble: None
|
||||||
def __setitem__(self, name: str, val: str) -> None: ...
|
def __setitem__(self, name: str, val: str) -> None: ...
|
||||||
|
|
||||||
class SafeMIMEText(MIMEMixin, MIMEText):
|
class SafeMIMEText(MIMEMixin, MIMEText):
|
||||||
defects: List[Any]
|
defects: List[Any]
|
||||||
epilogue: None
|
epilogue: None
|
||||||
policy: email._policybase.Compat32
|
policy: Policy
|
||||||
preamble: None
|
preamble: None
|
||||||
encoding: str = ...
|
encoding: str = ...
|
||||||
def __init__(self, _text: str, _subtype: str = ..., _charset: str = ...) -> None: ...
|
def __init__(self, _text: str, _subtype: str = ..., _charset: str = ...) -> None: ...
|
||||||
@@ -44,7 +44,7 @@ class SafeMIMEText(MIMEMixin, MIMEText):
|
|||||||
class SafeMIMEMultipart(MIMEMixin, MIMEMultipart):
|
class SafeMIMEMultipart(MIMEMixin, MIMEMultipart):
|
||||||
defects: List[Any]
|
defects: List[Any]
|
||||||
epilogue: None
|
epilogue: None
|
||||||
policy: email._policybase.Compat32
|
policy: Policy
|
||||||
preamble: None
|
preamble: None
|
||||||
encoding: str = ...
|
encoding: str = ...
|
||||||
def __init__(
|
def __init__(
|
||||||
@@ -71,12 +71,12 @@ class EmailMessage:
|
|||||||
subject: str = ...,
|
subject: str = ...,
|
||||||
body: Optional[str] = ...,
|
body: Optional[str] = ...,
|
||||||
from_email: Optional[str] = ...,
|
from_email: Optional[str] = ...,
|
||||||
to: Optional[Union[List[str], Tuple[str, str], str]] = ...,
|
to: Optional[Union[Sequence[str], str]] = ...,
|
||||||
bcc: Optional[Union[List[str], Tuple[str], str]] = ...,
|
bcc: Optional[Union[Sequence[str], str]] = ...,
|
||||||
connection: Optional[BaseEmailBackend] = ...,
|
connection: Optional[BaseEmailBackend] = ...,
|
||||||
attachments: Optional[Union[List[Tuple[str, str]], List[MIMEText]]] = ...,
|
attachments: Optional[Union[List[Tuple[str, str]], List[MIMEText]]] = ...,
|
||||||
headers: Optional[Dict[str, str]] = ...,
|
headers: Optional[Dict[str, str]] = ...,
|
||||||
cc: Optional[Union[List[str], Tuple[str, str], str]] = ...,
|
cc: Optional[Union[Sequence[str], str]] = ...,
|
||||||
reply_to: Optional[Union[List[Optional[str]], str]] = ...,
|
reply_to: Optional[Union[List[Optional[str]], str]] = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def get_connection(self, fail_silently: bool = ...) -> BaseEmailBackend: ...
|
def get_connection(self, fail_silently: bool = ...) -> BaseEmailBackend: ...
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ class Node:
|
|||||||
parents: Set[Any] = ...
|
parents: Set[Any] = ...
|
||||||
def __init__(self, key: Tuple[str, str]) -> None: ...
|
def __init__(self, key: Tuple[str, str]) -> None: ...
|
||||||
def __lt__(self, other: Union[Tuple[str, str], Node]) -> bool: ...
|
def __lt__(self, other: Union[Tuple[str, str], Node]) -> bool: ...
|
||||||
def __hash__(self) -> int: ...
|
|
||||||
def __getitem__(self, item: int) -> str: ...
|
def __getitem__(self, item: int) -> str: ...
|
||||||
def add_child(self, child: Node) -> None: ...
|
def add_child(self, child: Node) -> None: ...
|
||||||
def add_parent(self, parent: Node) -> None: ...
|
def add_parent(self, parent: Node) -> None: ...
|
||||||
@@ -19,13 +18,9 @@ class Node:
|
|||||||
def descendants(self) -> List[Tuple[str, str]]: ...
|
def descendants(self) -> List[Tuple[str, str]]: ...
|
||||||
|
|
||||||
class DummyNode(Node):
|
class DummyNode(Node):
|
||||||
children: Set[Any]
|
|
||||||
key: Tuple[str, str]
|
|
||||||
parents: Set[Any]
|
|
||||||
origin: Any = ...
|
origin: Any = ...
|
||||||
error_message: Any = ...
|
error_message: Any = ...
|
||||||
def __init__(self, key: Tuple[str, str], origin: Union[Migration, str], error_message: str) -> None: ...
|
def __init__(self, key: Tuple[str, str], origin: Union[Migration, str], error_message: str) -> None: ...
|
||||||
__class__: Any = ...
|
|
||||||
def promote(self) -> None: ...
|
def promote(self) -> None: ...
|
||||||
def raise_error(self) -> None: ...
|
def raise_error(self) -> None: ...
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
from typing import Any, Dict, Optional, Set, Tuple, Union, Sequence
|
from typing import Any, Dict, Optional, Sequence, Set, Tuple, Union
|
||||||
|
|
||||||
from django.db import DefaultConnectionProxy
|
|
||||||
from django.db.backends.base.base import BaseDatabaseWrapper
|
from django.db.backends.base.base import BaseDatabaseWrapper
|
||||||
from django.db.backends.sqlite3.base import DatabaseWrapper
|
|
||||||
from django.db.migrations.migration import Migration, SwappableTuple
|
from django.db.migrations.migration import Migration, SwappableTuple
|
||||||
from django.db.migrations.state import ProjectState
|
from django.db.migrations.state import ProjectState
|
||||||
|
|
||||||
|
from django.db import DefaultConnectionProxy
|
||||||
|
|
||||||
MIGRATIONS_MODULE_NAME: str
|
MIGRATIONS_MODULE_NAME: str
|
||||||
|
|
||||||
class MigrationLoader:
|
class MigrationLoader:
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ class Migration:
|
|||||||
name: str = ...
|
name: str = ...
|
||||||
app_label: str = ...
|
app_label: str = ...
|
||||||
def __init__(self, name: str, app_label: str) -> None: ...
|
def __init__(self, name: str, app_label: str) -> None: ...
|
||||||
def __hash__(self) -> int: ...
|
|
||||||
def mutate_state(self, project_state: ProjectState, preserve: bool = ...) -> ProjectState: ...
|
def mutate_state(self, project_state: ProjectState, preserve: bool = ...) -> ProjectState: ...
|
||||||
def apply(
|
def apply(
|
||||||
self, project_state: ProjectState, schema_editor: BaseDatabaseSchemaEditor, collect_sql: bool = ...
|
self, project_state: ProjectState, schema_editor: BaseDatabaseSchemaEditor, collect_sql: bool = ...
|
||||||
@@ -24,6 +23,6 @@ class Migration:
|
|||||||
|
|
||||||
class SwappableTuple(tuple):
|
class SwappableTuple(tuple):
|
||||||
setting: str = ...
|
setting: str = ...
|
||||||
def __new__(cls: Type[SwappableTuple], value: Tuple[str, str], setting: str) -> SwappableTuple: ...
|
def __new__(cls, value: Tuple[str, str], setting: str) -> SwappableTuple: ...
|
||||||
|
|
||||||
def swappable_dependency(value: str) -> SwappableTuple: ...
|
def swappable_dependency(value: str) -> SwappableTuple: ...
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
# Stubs for django.db.migrations.operations (Python 3.6)
|
|
||||||
#
|
|
||||||
# NOTE: This dynamically typed stub was automatically generated by stubgen.
|
|
||||||
|
|
||||||
from .fields import (
|
from .fields import (
|
||||||
AddField as AddField,
|
AddField as AddField,
|
||||||
AlterField as AlterField,
|
AlterField as AlterField,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, List, Optional, Type
|
from typing import Any, List
|
||||||
|
|
||||||
class Operation:
|
class Operation:
|
||||||
reversible: bool = ...
|
reversible: bool = ...
|
||||||
@@ -6,7 +6,6 @@ class Operation:
|
|||||||
atomic: bool = ...
|
atomic: bool = ...
|
||||||
elidable: bool = ...
|
elidable: bool = ...
|
||||||
serialization_expand_args: Any = ...
|
serialization_expand_args: Any = ...
|
||||||
def __new__(cls: Type[Operation], *args: Any, **kwargs: Any) -> Operation: ...
|
|
||||||
def deconstruct(self): ...
|
def deconstruct(self): ...
|
||||||
def state_forwards(self, app_label: Any, state: Any) -> None: ...
|
def state_forwards(self, app_label: Any, state: Any) -> None: ...
|
||||||
def database_forwards(self, app_label: Any, schema_editor: Any, from_state: Any, to_state: Any) -> None: ...
|
def database_forwards(self, app_label: Any, schema_editor: Any, from_state: Any, to_state: Any) -> None: ...
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ class ModelOperation(Operation):
|
|||||||
def name_lower(self) -> str: ...
|
def name_lower(self) -> str: ...
|
||||||
|
|
||||||
class CreateModel(ModelOperation):
|
class CreateModel(ModelOperation):
|
||||||
serialization_expand_args: Any = ...
|
|
||||||
fields: Sequence[Tuple[str, Field]] = ...
|
fields: Sequence[Tuple[str, Field]] = ...
|
||||||
options: Any = ...
|
options: Any = ...
|
||||||
bases: Optional[Sequence[Union[type, str]]] = ...
|
bases: Optional[Sequence[Union[type, str]]] = ...
|
||||||
@@ -63,7 +62,6 @@ class AlterModelOptions(ModelOptionOperation):
|
|||||||
def __init__(self, name: str, options: Dict[str, Any]) -> None: ...
|
def __init__(self, name: str, options: Dict[str, Any]) -> None: ...
|
||||||
|
|
||||||
class AlterModelManagers(ModelOptionOperation):
|
class AlterModelManagers(ModelOptionOperation):
|
||||||
serialization_expand_args: Any = ...
|
|
||||||
managers: Any = ...
|
managers: Any = ...
|
||||||
def __init__(self, name: Any, managers: Any) -> None: ...
|
def __init__(self, name: Any, managers: Any) -> None: ...
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Callable, Optional, Sequence, Dict
|
from typing import Any, Callable, Dict, Optional, Sequence
|
||||||
|
|
||||||
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
|
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
|
||||||
from django.db.migrations.state import StateApps
|
from django.db.migrations.state import StateApps
|
||||||
@@ -6,7 +6,6 @@ from django.db.migrations.state import StateApps
|
|||||||
from .base import Operation
|
from .base import Operation
|
||||||
|
|
||||||
class SeparateDatabaseAndState(Operation):
|
class SeparateDatabaseAndState(Operation):
|
||||||
serialization_expand_args: Any = ...
|
|
||||||
database_operations: Sequence[Operation] = ...
|
database_operations: Sequence[Operation] = ...
|
||||||
state_operations: Sequence[Operation] = ...
|
state_operations: Sequence[Operation] = ...
|
||||||
def __init__(
|
def __init__(
|
||||||
@@ -19,7 +18,6 @@ class RunSQL(Operation):
|
|||||||
reverse_sql: Any = ...
|
reverse_sql: Any = ...
|
||||||
state_operations: Any = ...
|
state_operations: Any = ...
|
||||||
hints: Any = ...
|
hints: Any = ...
|
||||||
elidable: Any = ...
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
sql: Any,
|
sql: Any,
|
||||||
@@ -30,12 +28,9 @@ class RunSQL(Operation):
|
|||||||
) -> None: ...
|
) -> None: ...
|
||||||
|
|
||||||
class RunPython(Operation):
|
class RunPython(Operation):
|
||||||
reduces_to_sql: bool = ...
|
|
||||||
atomic: bool = ...
|
|
||||||
code: Callable = ...
|
code: Callable = ...
|
||||||
reverse_code: Optional[Callable] = ...
|
reverse_code: Optional[Callable] = ...
|
||||||
hints: Optional[Dict[str, Any]] = ...
|
hints: Optional[Dict[str, Any]] = ...
|
||||||
elidable: bool = ...
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
code: Callable,
|
code: Callable,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from typing import Any, Optional
|
|
||||||
|
|
||||||
from django.db.migrations.state import ProjectState
|
from django.db.migrations.state import ProjectState
|
||||||
|
|
||||||
from django.db.models.fields import Field
|
from django.db.models.fields import Field
|
||||||
|
|
||||||
def is_referenced_by_foreign_key(state: ProjectState, model_name_lower: str, field: Field, field_name: str) -> bool: ...
|
def is_referenced_by_foreign_key(state: ProjectState, model_name_lower: str, field: Field, field_name: str) -> bool: ...
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from typing import Any, List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
from django.db.migrations.operations.base import Operation
|
from django.db.migrations.operations.base import Operation
|
||||||
|
|
||||||
class MigrationOptimizer:
|
class MigrationOptimizer:
|
||||||
def optimize(self, operations: List[Operation], app_label: str = ...) -> List[Operation]: ...
|
def optimize(self, operations: List[Operation], app_label: Optional[str] = ...) -> List[Operation]: ...
|
||||||
def optimize_inner(self, operations: List[Operation], app_label: str = ...) -> List[Operation]: ...
|
def optimize_inner(self, operations: List[Operation], app_label: Optional[str] = ...) -> List[Operation]: ...
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
from typing import Any, Dict, Optional, Set
|
from typing import Any, Dict, Optional, Set
|
||||||
|
|
||||||
from django.db.migrations.state import ModelState
|
from django.db.migrations.state import ModelState
|
||||||
|
|
||||||
from django.db.models.fields import Field
|
from django.db.models.fields import Field
|
||||||
|
|
||||||
from .loader import MigrationLoader
|
|
||||||
|
|
||||||
class MigrationQuestioner:
|
class MigrationQuestioner:
|
||||||
defaults: Dict[Any, Any] = ...
|
defaults: Dict[str, Any] = ...
|
||||||
specified_apps: Set[Any] = ...
|
specified_apps: Set[str] = ...
|
||||||
dry_run: None = ...
|
dry_run: Optional[bool] = ...
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
defaults: Optional[Dict[str, bool]] = ...,
|
defaults: Optional[Dict[str, bool]] = ...,
|
||||||
@@ -23,21 +22,5 @@ class MigrationQuestioner:
|
|||||||
def ask_merge(self, app_label: str) -> bool: ...
|
def ask_merge(self, app_label: str) -> bool: ...
|
||||||
def ask_auto_now_add_addition(self, field_name: str, model_name: str) -> None: ...
|
def ask_auto_now_add_addition(self, field_name: str, model_name: str) -> None: ...
|
||||||
|
|
||||||
class InteractiveMigrationQuestioner(MigrationQuestioner):
|
class InteractiveMigrationQuestioner(MigrationQuestioner): ...
|
||||||
defaults: Dict[Any, Any]
|
class NonInteractiveMigrationQuestioner(MigrationQuestioner): ...
|
||||||
dry_run: bool
|
|
||||||
specified_apps: Set[str]
|
|
||||||
def ask_not_null_addition(self, field_name: str, model_name: str) -> None: ...
|
|
||||||
def ask_not_null_alteration(self, field_name: Any, model_name: Any): ...
|
|
||||||
def ask_rename(self, model_name: Any, old_name: Any, new_name: Any, field_instance: Any): ...
|
|
||||||
def ask_rename_model(self, old_model_state: Any, new_model_state: Any): ...
|
|
||||||
def ask_merge(self, app_label: str) -> bool: ...
|
|
||||||
def ask_auto_now_add_addition(self, field_name: str, model_name: str) -> int: ...
|
|
||||||
|
|
||||||
class NonInteractiveMigrationQuestioner(MigrationQuestioner):
|
|
||||||
defaults: Dict[Any, Any]
|
|
||||||
dry_run: bool
|
|
||||||
specified_apps: Set[str]
|
|
||||||
def ask_not_null_addition(self, field_name: Any, model_name: Any) -> None: ...
|
|
||||||
def ask_not_null_alteration(self, field_name: Any, model_name: Any): ...
|
|
||||||
def ask_auto_now_add_addition(self, field_name: Any, model_name: Any) -> None: ...
|
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
from typing import Any, Optional, Set, Tuple, Union
|
from typing import Any, Optional, Set, Tuple
|
||||||
|
|
||||||
from django.db import models
|
|
||||||
from django.db.backends.base.base import BaseDatabaseWrapper
|
from django.db.backends.base.base import BaseDatabaseWrapper
|
||||||
from django.db.models.query import QuerySet
|
from django.db.models.query import QuerySet
|
||||||
|
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
class MigrationRecorder:
|
class MigrationRecorder:
|
||||||
class Migration(models.Model):
|
class Migration(models.Model):
|
||||||
app: Any = ...
|
app: Any = ...
|
||||||
|
|||||||
@@ -1,88 +1,40 @@
|
|||||||
from typing import Any, Callable, Dict, List, Set, Tuple, Union
|
from typing import Any, Callable, Dict, List, Set, Tuple, Union
|
||||||
|
|
||||||
from django.db.models.fields import Field
|
|
||||||
|
|
||||||
class BaseSerializer:
|
class BaseSerializer:
|
||||||
value: Any = ...
|
value: Any = ...
|
||||||
def __init__(self, value: Any) -> None: ...
|
def __init__(self, value: Any) -> None: ...
|
||||||
def serialize(self) -> None: ...
|
def serialize(self) -> Any: ...
|
||||||
|
|
||||||
class BaseSequenceSerializer(BaseSerializer):
|
class BaseSequenceSerializer(BaseSerializer): ...
|
||||||
def serialize(self) -> Tuple[str, Set[str]]: ...
|
class BaseSimpleSerializer(BaseSerializer): ...
|
||||||
|
class DatetimeSerializer(BaseSerializer): ...
|
||||||
class BaseSimpleSerializer(BaseSerializer):
|
class DateSerializer(BaseSerializer): ...
|
||||||
value: str
|
class DecimalSerializer(BaseSerializer): ...
|
||||||
def serialize(self) -> Tuple[str, Set[Any]]: ...
|
|
||||||
|
|
||||||
class DatetimeSerializer(BaseSerializer):
|
|
||||||
value: Any = ...
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class DateSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class DecimalSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class DeconstructableSerializer(BaseSerializer):
|
class DeconstructableSerializer(BaseSerializer):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def serialize_deconstructed(
|
def serialize_deconstructed(
|
||||||
path: str, args: List[Any], kwargs: Dict[str, Union[Callable, int, str]]
|
path: str, args: List[Any], kwargs: Dict[str, Union[Callable, int, str]]
|
||||||
) -> Tuple[str, Set[str]]: ...
|
) -> Tuple[str, Set[str]]: ...
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class DictionarySerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class EnumSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class FloatSerializer(BaseSimpleSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
|
class DictionarySerializer(BaseSerializer): ...
|
||||||
|
class EnumSerializer(BaseSerializer): ...
|
||||||
|
class FloatSerializer(BaseSimpleSerializer): ...
|
||||||
class FrozensetSerializer(BaseSequenceSerializer): ...
|
class FrozensetSerializer(BaseSequenceSerializer): ...
|
||||||
|
class FunctionTypeSerializer(BaseSerializer): ...
|
||||||
class FunctionTypeSerializer(BaseSerializer):
|
class FunctoolsPartialSerializer(BaseSerializer): ...
|
||||||
value: Callable
|
class IterableSerializer(BaseSerializer): ...
|
||||||
def serialize(self) -> Tuple[str, Set[str]]: ...
|
class ModelFieldSerializer(DeconstructableSerializer): ...
|
||||||
|
class ModelManagerSerializer(DeconstructableSerializer): ...
|
||||||
class FunctoolsPartialSerializer(BaseSerializer):
|
class OperationSerializer(BaseSerializer): ...
|
||||||
def serialize(self): ...
|
class RegexSerializer(BaseSerializer): ...
|
||||||
|
|
||||||
class IterableSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class ModelFieldSerializer(DeconstructableSerializer):
|
|
||||||
value: Field
|
|
||||||
def serialize(self) -> Tuple[str, Set[str]]: ...
|
|
||||||
|
|
||||||
class ModelManagerSerializer(DeconstructableSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class OperationSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class RegexSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class SequenceSerializer(BaseSequenceSerializer): ...
|
class SequenceSerializer(BaseSequenceSerializer): ...
|
||||||
class SetSerializer(BaseSequenceSerializer): ...
|
class SetSerializer(BaseSequenceSerializer): ...
|
||||||
|
class SettingsReferenceSerializer(BaseSerializer): ...
|
||||||
class SettingsReferenceSerializer(BaseSerializer):
|
class TimedeltaSerializer(BaseSerializer): ...
|
||||||
def serialize(self): ...
|
class TimeSerializer(BaseSerializer): ...
|
||||||
|
|
||||||
class TimedeltaSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class TimeSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class TupleSerializer(BaseSequenceSerializer): ...
|
class TupleSerializer(BaseSequenceSerializer): ...
|
||||||
|
class TypeSerializer(BaseSerializer): ...
|
||||||
class TypeSerializer(BaseSerializer):
|
class UUIDSerializer(BaseSerializer): ...
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
class UUIDSerializer(BaseSerializer):
|
|
||||||
def serialize(self): ...
|
|
||||||
|
|
||||||
def serializer_factory(value: Any) -> BaseSerializer: ...
|
def serializer_factory(value: Any) -> BaseSerializer: ...
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
from typing import Any, Dict, Iterator, List, Optional, Tuple, Type, DefaultDict, Union, Sequence
|
from typing import Any, DefaultDict, Dict, Iterator, List, Optional, Sequence, Tuple, Type, Union
|
||||||
|
|
||||||
from django.apps.registry import Apps
|
from django.apps.registry import Apps
|
||||||
from django.db.models.base import Model
|
from django.db.models.base import Model
|
||||||
from django.db.models.manager import Manager
|
from django.db.models.manager import Manager
|
||||||
from django.utils.functional import cached_property
|
|
||||||
|
|
||||||
from django.db.models.fields import Field
|
from django.db.models.fields import Field
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Dict, Iterator, List, Optional, Set
|
from typing import Dict, Iterator, List, Set
|
||||||
|
|
||||||
from django.db.migrations.operations.base import Operation
|
from django.db.migrations.operations.base import Operation
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
from typing import Any, Optional
|
from typing import Any
|
||||||
|
|
||||||
from django.utils.functional import SimpleLazyObject
|
|
||||||
|
|
||||||
COMPILED_REGEX_TYPE: Any
|
COMPILED_REGEX_TYPE: Any
|
||||||
|
|
||||||
class RegexObject:
|
class RegexObject:
|
||||||
pattern: str = ...
|
pattern: str = ...
|
||||||
flags: int = ...
|
flags: int = ...
|
||||||
def __init__(self, obj: SimpleLazyObject) -> None: ...
|
def __init__(self, obj: Any) -> None: ...
|
||||||
|
|
||||||
def get_migration_name_timestamp() -> str: ...
|
def get_migration_name_timestamp() -> str: ...
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
from typing import Any, Optional, Set, Tuple, Type, List, Union
|
from typing import Any, List, Set, Tuple, Union
|
||||||
|
|
||||||
from django.db.migrations.migration import Migration
|
from django.db.migrations.migration import Migration
|
||||||
from django.db.migrations.operations.base import Operation
|
from django.db.migrations.operations.base import Operation
|
||||||
|
|
||||||
from django.db.migrations.operations.models import CreateModel
|
from django.db.migrations.operations.models import CreateModel
|
||||||
|
|
||||||
class SettingsReference(str):
|
class SettingsReference(str):
|
||||||
def __new__(self: Type[SettingsReference], value: str, setting_name: str) -> SettingsReference: ...
|
|
||||||
setting_name: str = ...
|
|
||||||
def __init__(self, value: str, setting_name: str) -> None: ...
|
def __init__(self, value: str, setting_name: str) -> None: ...
|
||||||
|
|
||||||
class OperationWriter:
|
class OperationWriter:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from collections import UserList
|
from collections import UserList
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union, Sequence
|
from typing import Any, Dict, List, Optional, Sequence, Union
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.safestring import SafeText
|
from django.utils.safestring import SafeText
|
||||||
@@ -28,9 +28,6 @@ class ErrorList(UserList):
|
|||||||
def as_json(self, escape_html: bool = ...) -> str: ...
|
def as_json(self, escape_html: bool = ...) -> str: ...
|
||||||
def as_ul(self) -> str: ...
|
def as_ul(self) -> str: ...
|
||||||
def as_text(self) -> str: ...
|
def as_text(self) -> str: ...
|
||||||
def __reduce_ex__(
|
|
||||||
self, *args: Any, **kwargs: Any
|
|
||||||
) -> Tuple[Callable, Tuple[Type[ErrorList]], Dict[str, Union[List[ValidationError], str]], None, None]: ...
|
|
||||||
|
|
||||||
def from_current_timezone(value: datetime) -> datetime: ...
|
def from_current_timezone(value: datetime) -> datetime: ...
|
||||||
def to_current_timezone(value: datetime) -> datetime: ...
|
def to_current_timezone(value: datetime) -> datetime: ...
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from json import JSONEncoder
|
from json import JSONEncoder
|
||||||
from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple, Type, Union, overload, AnyStr, IO
|
from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple, Type, Union, overload
|
||||||
|
|
||||||
import six
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.core.handlers.wsgi import WSGIRequest
|
||||||
from django.http.cookie import SimpleCookie
|
from django.http.cookie import SimpleCookie
|
||||||
from django.test.client import Client
|
from django.test.client import Client
|
||||||
@@ -13,7 +12,7 @@ from django.urls import ResolverMatch
|
|||||||
|
|
||||||
class BadHeaderError(ValueError): ...
|
class BadHeaderError(ValueError): ...
|
||||||
|
|
||||||
class HttpResponseBase(Iterable[AnyStr]):
|
class HttpResponseBase(Iterable[Any]):
|
||||||
status_code: int = ...
|
status_code: int = ...
|
||||||
cookies: SimpleCookie = ...
|
cookies: SimpleCookie = ...
|
||||||
reason_phrase: str = ...
|
reason_phrase: str = ...
|
||||||
@@ -60,7 +59,7 @@ class HttpResponseBase(Iterable[AnyStr]):
|
|||||||
def seekable(self) -> bool: ...
|
def seekable(self) -> bool: ...
|
||||||
def writable(self) -> bool: ...
|
def writable(self) -> bool: ...
|
||||||
def writelines(self, lines: Iterable[object]): ...
|
def writelines(self, lines: Iterable[object]): ...
|
||||||
def __iter__(self) -> Iterator[AnyStr]: ...
|
def __iter__(self) -> Iterator[Any]: ...
|
||||||
|
|
||||||
class HttpResponse(HttpResponseBase):
|
class HttpResponse(HttpResponseBase):
|
||||||
client: Client
|
client: Client
|
||||||
@@ -70,7 +69,6 @@ class HttpResponse(HttpResponseBase):
|
|||||||
request: Dict[str, Any]
|
request: Dict[str, Any]
|
||||||
resolver_match: ResolverMatch
|
resolver_match: ResolverMatch
|
||||||
sameorigin: bool
|
sameorigin: bool
|
||||||
status_code: int
|
|
||||||
templates: List[Template]
|
templates: List[Template]
|
||||||
test_server_port: str
|
test_server_port: str
|
||||||
test_was_secure_request: bool
|
test_was_secure_request: bool
|
||||||
@@ -88,21 +86,13 @@ class HttpResponse(HttpResponseBase):
|
|||||||
def json(self) -> Dict[str, Any]: ...
|
def json(self) -> Dict[str, Any]: ...
|
||||||
|
|
||||||
class StreamingHttpResponse(HttpResponseBase):
|
class StreamingHttpResponse(HttpResponseBase):
|
||||||
def __init__(self, streaming_content: Iterable[AnyStr] = ..., *args: Any, **kwargs: Any) -> None: ...
|
content: Any
|
||||||
@property
|
streaming_content: Iterator[Any]
|
||||||
def content(self) -> AnyStr: ...
|
def __init__(self, streaming_content: Iterable[Any] = ..., *args: Any, **kwargs: Any) -> None: ...
|
||||||
@content.setter
|
def getvalue(self) -> Any: ...
|
||||||
def content(self, value: AnyStr) -> None: ...
|
|
||||||
@property
|
|
||||||
def streaming_content(self) -> Iterator[AnyStr]: ...
|
|
||||||
@streaming_content.setter
|
|
||||||
def streaming_content(self, value: Iterable[AnyStr]) -> None: ...
|
|
||||||
def __iter__(self) -> Iterator[AnyStr]: ...
|
|
||||||
def getvalue(self) -> AnyStr: ...
|
|
||||||
|
|
||||||
class FileResponse(StreamingHttpResponse):
|
class FileResponse(StreamingHttpResponse):
|
||||||
client: Client
|
client: Client
|
||||||
closed: bool
|
|
||||||
context: None
|
context: None
|
||||||
file_to_stream: Optional[BytesIO]
|
file_to_stream: Optional[BytesIO]
|
||||||
request: Dict[str, str]
|
request: Dict[str, str]
|
||||||
@@ -119,8 +109,6 @@ class FileResponse(StreamingHttpResponse):
|
|||||||
class HttpResponseRedirectBase(HttpResponse):
|
class HttpResponseRedirectBase(HttpResponse):
|
||||||
allowed_schemes = ... # type: List[str]
|
allowed_schemes = ... # type: List[str]
|
||||||
def __init__(self, redirect_to: str, *args: Any, **kwargs: Any) -> None: ...
|
def __init__(self, redirect_to: str, *args: Any, **kwargs: Any) -> None: ...
|
||||||
@property
|
|
||||||
def url(self) -> str: ...
|
|
||||||
|
|
||||||
class HttpResponseRedirect(HttpResponseRedirectBase): ...
|
class HttpResponseRedirect(HttpResponseRedirectBase): ...
|
||||||
class HttpResponsePermanentRedirect(HttpResponseRedirectBase): ...
|
class HttpResponsePermanentRedirect(HttpResponseRedirectBase): ...
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Optional, Union
|
from typing import Any, Optional, Union, Callable
|
||||||
|
|
||||||
from django.http.request import HttpRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse, HttpResponseBase
|
from django.http.response import HttpResponse, HttpResponseBase
|
||||||
@@ -26,4 +26,6 @@ class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
|
|||||||
cache_alias: str = ...
|
cache_alias: str = ...
|
||||||
cache_timeout: float = ...
|
cache_timeout: float = ...
|
||||||
cache: BaseCache = ...
|
cache: BaseCache = ...
|
||||||
def __init__(self, get_response: None = ..., cache_timeout: Optional[float] = ..., **kwargs: Any) -> None: ...
|
def __init__(
|
||||||
|
self, get_response: Optional[Callable] = ..., cache_timeout: Optional[float] = ..., **kwargs: Any
|
||||||
|
) -> None: ...
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponseBase
|
from django.http.response import HttpResponseBase
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
|
|
||||||
re_accepts_gzip: Any
|
re_accepts_gzip: Any
|
||||||
|
|
||||||
class GZipMiddleware(MiddlewareMixin):
|
class GZipMiddleware(MiddlewareMixin):
|
||||||
def process_response(self, request: WSGIRequest, response: HttpResponseBase) -> HttpResponseBase: ...
|
def process_response(self, request: HttpRequest, response: HttpResponseBase) -> HttpResponseBase: ...
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponseBase
|
from django.http.response import HttpResponseBase
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
|
|
||||||
class ConditionalGetMiddleware(MiddlewareMixin):
|
class ConditionalGetMiddleware(MiddlewareMixin):
|
||||||
def process_response(self, request: WSGIRequest, response: HttpResponseBase) -> HttpResponseBase: ...
|
def process_response(self, request: HttpRequest, response: HttpResponseBase) -> HttpResponseBase: ...
|
||||||
def needs_etag(self, response: HttpResponseBase) -> bool: ...
|
def needs_etag(self, response: HttpResponseBase) -> bool: ...
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponseBase
|
from django.http.response import HttpResponseBase
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
|
|
||||||
class LocaleMiddleware(MiddlewareMixin):
|
class LocaleMiddleware(MiddlewareMixin):
|
||||||
response_redirect_class: Any = ...
|
response_redirect_class: Any = ...
|
||||||
def process_request(self, request: WSGIRequest) -> None: ...
|
def process_request(self, request: HttpRequest) -> None: ...
|
||||||
def process_response(self, request: WSGIRequest, response: HttpResponseBase) -> HttpResponseBase: ...
|
def process_response(self, request: HttpRequest, response: HttpResponseBase) -> HttpResponseBase: ...
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Any, Optional, List
|
from typing import Any, List, Optional
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse, HttpResponsePermanentRedirect
|
from django.http.response import HttpResponse, HttpResponsePermanentRedirect
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
|
|
||||||
@@ -13,5 +13,5 @@ class SecurityMiddleware(MiddlewareMixin):
|
|||||||
redirect: bool = ...
|
redirect: bool = ...
|
||||||
redirect_host: Optional[str] = ...
|
redirect_host: Optional[str] = ...
|
||||||
redirect_exempt: List[Any] = ...
|
redirect_exempt: List[Any] = ...
|
||||||
def process_request(self, request: WSGIRequest) -> Optional[HttpResponsePermanentRedirect]: ...
|
def process_request(self, request: HttpRequest) -> Optional[HttpResponsePermanentRedirect]: ...
|
||||||
def process_response(self, request: WSGIRequest, response: HttpResponse) -> HttpResponse: ...
|
def process_response(self, request: HttpRequest, response: HttpResponse) -> HttpResponse: ...
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ from django.http.cookie import SimpleCookie
|
|||||||
from django.http.request import HttpRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse, HttpResponseBase
|
from django.http.response import HttpResponse, HttpResponseBase
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
|
||||||
|
|
||||||
BOUNDARY: str = ...
|
BOUNDARY: str = ...
|
||||||
MULTIPART_CONTENT: str = ...
|
MULTIPART_CONTENT: str = ...
|
||||||
CONTENT_TYPE_RE: Pattern = ...
|
CONTENT_TYPE_RE: Pattern = ...
|
||||||
@@ -42,13 +40,13 @@ class RequestFactory:
|
|||||||
cookies: SimpleCookie = ...
|
cookies: SimpleCookie = ...
|
||||||
errors: BytesIO = ...
|
errors: BytesIO = ...
|
||||||
def __init__(self, *, json_encoder: Any = ..., **defaults: Any) -> None: ...
|
def __init__(self, *, json_encoder: Any = ..., **defaults: Any) -> None: ...
|
||||||
def request(self, **request: Any) -> WSGIRequest: ...
|
def request(self, **request: Any) -> HttpRequest: ...
|
||||||
def get(self, path: str, data: Any = ..., secure: bool = ..., **extra: Any) -> WSGIRequest: ...
|
def get(self, path: str, data: Any = ..., secure: bool = ..., **extra: Any) -> HttpRequest: ...
|
||||||
def post(
|
def post(
|
||||||
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
||||||
) -> WSGIRequest: ...
|
) -> HttpRequest: ...
|
||||||
def head(self, path: str, data: Any = ..., secure: bool = ..., **extra: Any) -> WSGIRequest: ...
|
def head(self, path: str, data: Any = ..., secure: bool = ..., **extra: Any) -> HttpRequest: ...
|
||||||
def trace(self, path: str, secure: bool = ..., **extra: Any) -> WSGIRequest: ...
|
def trace(self, path: str, secure: bool = ..., **extra: Any) -> HttpRequest: ...
|
||||||
def options(
|
def options(
|
||||||
self,
|
self,
|
||||||
path: str,
|
path: str,
|
||||||
@@ -56,16 +54,16 @@ class RequestFactory:
|
|||||||
content_type: str = ...,
|
content_type: str = ...,
|
||||||
secure: bool = ...,
|
secure: bool = ...,
|
||||||
**extra: Any
|
**extra: Any
|
||||||
) -> WSGIRequest: ...
|
) -> HttpRequest: ...
|
||||||
def put(
|
def put(
|
||||||
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
||||||
) -> WSGIRequest: ...
|
) -> HttpRequest: ...
|
||||||
def patch(
|
def patch(
|
||||||
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
||||||
) -> WSGIRequest: ...
|
) -> HttpRequest: ...
|
||||||
def delete(
|
def delete(
|
||||||
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
self, path: str, data: Any = ..., content_type: str = ..., secure: bool = ..., **extra: Any
|
||||||
) -> WSGIRequest: ...
|
) -> HttpRequest: ...
|
||||||
def generic(
|
def generic(
|
||||||
self,
|
self,
|
||||||
method: str,
|
method: str,
|
||||||
@@ -74,7 +72,7 @@ class RequestFactory:
|
|||||||
content_type: Optional[str] = ...,
|
content_type: Optional[str] = ...,
|
||||||
secure: bool = ...,
|
secure: bool = ...,
|
||||||
**extra: Any
|
**extra: Any
|
||||||
) -> WSGIRequest: ...
|
) -> HttpRequest: ...
|
||||||
|
|
||||||
class Client:
|
class Client:
|
||||||
json_encoder: Type[DjangoJSONEncoder] = ...
|
json_encoder: Type[DjangoJSONEncoder] = ...
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from html.parser import HTMLParser
|
from html.parser import HTMLParser
|
||||||
from typing import Any, List, Optional, Tuple, Union, TypeVar, Iterable, Sequence
|
from typing import Any, List, Optional, Sequence, Tuple, TypeVar, Union
|
||||||
|
|
||||||
_Self = TypeVar("_Self")
|
_Self = TypeVar("_Self")
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,14 @@
|
|||||||
from typing import Any, Callable, Dict, List, Tuple, Type, Union
|
from typing import Any
|
||||||
|
|
||||||
from django.test import LiveServerTestCase
|
from django.test import LiveServerTestCase
|
||||||
|
|
||||||
class SeleniumTestCaseBase:
|
class SeleniumTestCaseBase:
|
||||||
browsers: Any = ...
|
browsers: Any = ...
|
||||||
browser: Any = ...
|
browser: Any = ...
|
||||||
def __new__(
|
|
||||||
cls: Type[SeleniumTestCaseBase],
|
|
||||||
name: str,
|
|
||||||
bases: Tuple[Type[SeleniumTestCase]],
|
|
||||||
attrs: Dict[str, Union[Callable, List[str], str]],
|
|
||||||
) -> Type[SeleniumTestCase]: ...
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def import_webdriver(cls, browser: Any): ...
|
def import_webdriver(cls, browser: Any): ...
|
||||||
def create_webdriver(self): ...
|
def create_webdriver(self): ...
|
||||||
|
|
||||||
class SeleniumTestCase(LiveServerTestCase):
|
class SeleniumTestCase(LiveServerTestCase):
|
||||||
implicit_wait: int = ...
|
implicit_wait: int = ...
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls) -> None: ...
|
|
||||||
def disable_implicit_wait(self) -> None: ...
|
def disable_implicit_wait(self) -> None: ...
|
||||||
|
|||||||
@@ -18,14 +18,9 @@ from django.utils.safestring import SafeText
|
|||||||
from django.db import connections as connections
|
from django.db import connections as connections
|
||||||
|
|
||||||
class _AssertNumQueriesContext(CaptureQueriesContext):
|
class _AssertNumQueriesContext(CaptureQueriesContext):
|
||||||
connection: Any
|
|
||||||
final_queries: Optional[int]
|
|
||||||
force_debug_cursor: bool
|
|
||||||
initial_queries: int
|
|
||||||
test_case: SimpleTestCase = ...
|
test_case: SimpleTestCase = ...
|
||||||
num: int = ...
|
num: int = ...
|
||||||
def __init__(self, test_case: Any, num: Any, connection: Any) -> None: ...
|
def __init__(self, test_case: Any, num: Any, connection: Any) -> None: ...
|
||||||
def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any): ...
|
|
||||||
|
|
||||||
class _AssertTemplateUsedContext:
|
class _AssertTemplateUsedContext:
|
||||||
test_case: SimpleTestCase = ...
|
test_case: SimpleTestCase = ...
|
||||||
@@ -40,14 +35,7 @@ class _AssertTemplateUsedContext:
|
|||||||
def __enter__(self): ...
|
def __enter__(self): ...
|
||||||
def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any): ...
|
def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any): ...
|
||||||
|
|
||||||
class _AssertTemplateNotUsedContext(_AssertTemplateUsedContext):
|
class _AssertTemplateNotUsedContext(_AssertTemplateUsedContext): ...
|
||||||
context: ContextList
|
|
||||||
rendered_template_names: List[str]
|
|
||||||
rendered_templates: List[Template]
|
|
||||||
template_name: str
|
|
||||||
test_case: SimpleTestCase
|
|
||||||
def test(self): ...
|
|
||||||
def message(self): ...
|
|
||||||
|
|
||||||
class _CursorFailure:
|
class _CursorFailure:
|
||||||
cls_name: str = ...
|
cls_name: str = ...
|
||||||
@@ -59,10 +47,6 @@ class SimpleTestCase(unittest.TestCase):
|
|||||||
client_class: Any = ...
|
client_class: Any = ...
|
||||||
client: Client
|
client: Client
|
||||||
allow_database_queries: bool = ...
|
allow_database_queries: bool = ...
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls) -> None: ...
|
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls) -> None: ...
|
|
||||||
def __call__(self, result: unittest.TestResult = ...) -> None: ...
|
def __call__(self, result: unittest.TestResult = ...) -> None: ...
|
||||||
def settings(self, **kwargs: Any) -> Any: ...
|
def settings(self, **kwargs: Any) -> Any: ...
|
||||||
def modify_settings(self, **kwargs: Any) -> Any: ...
|
def modify_settings(self, **kwargs: Any) -> Any: ...
|
||||||
@@ -150,7 +134,6 @@ class TransactionTestCase(SimpleTestCase):
|
|||||||
fixtures: Any = ...
|
fixtures: Any = ...
|
||||||
multi_db: bool = ...
|
multi_db: bool = ...
|
||||||
serialized_rollback: bool = ...
|
serialized_rollback: bool = ...
|
||||||
allow_database_queries: bool = ...
|
|
||||||
def assertQuerysetEqual(
|
def assertQuerysetEqual(
|
||||||
self,
|
self,
|
||||||
qs: Union[Iterator[Any], List[Model], QuerySet, RawQuerySet],
|
qs: Union[Iterator[Any], List[Model], QuerySet, RawQuerySet],
|
||||||
@@ -164,10 +147,6 @@ class TransactionTestCase(SimpleTestCase):
|
|||||||
) -> Optional[_AssertNumQueriesContext]: ...
|
) -> Optional[_AssertNumQueriesContext]: ...
|
||||||
|
|
||||||
class TestCase(TransactionTestCase):
|
class TestCase(TransactionTestCase):
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls) -> None: ...
|
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls) -> None: ...
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls) -> None: ...
|
def setUpTestData(cls) -> None: ...
|
||||||
|
|
||||||
@@ -181,17 +160,14 @@ def skipIfDBFeature(*features: Any) -> Callable: ...
|
|||||||
def skipUnlessDBFeature(*features: Any) -> Callable: ...
|
def skipUnlessDBFeature(*features: Any) -> Callable: ...
|
||||||
def skipUnlessAnyDBFeature(*features: Any) -> Callable: ...
|
def skipUnlessAnyDBFeature(*features: Any) -> Callable: ...
|
||||||
|
|
||||||
class QuietWSGIRequestHandler(WSGIRequestHandler):
|
class QuietWSGIRequestHandler(WSGIRequestHandler): ...
|
||||||
def log_message(*args: Any) -> None: ...
|
|
||||||
|
|
||||||
class FSFilesHandler(WSGIHandler):
|
class FSFilesHandler(WSGIHandler):
|
||||||
application: Any = ...
|
application: Any = ...
|
||||||
base_url: Any = ...
|
base_url: Any = ...
|
||||||
def __init__(self, application: Any) -> None: ...
|
def __init__(self, application: Any) -> None: ...
|
||||||
def file_path(self, url: Any): ...
|
def file_path(self, url: Any): ...
|
||||||
def get_response(self, request: Any): ...
|
|
||||||
def serve(self, request: Any): ...
|
def serve(self, request: Any): ...
|
||||||
def __call__(self, environ: Any, start_response: Any): ...
|
|
||||||
|
|
||||||
class _StaticFilesHandler(FSFilesHandler):
|
class _StaticFilesHandler(FSFilesHandler):
|
||||||
def get_base_dir(self): ...
|
def get_base_dir(self): ...
|
||||||
@@ -216,7 +192,6 @@ class LiveServerThread(threading.Thread):
|
|||||||
port: int = ...,
|
port: int = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
httpd: ThreadedWSGIServer = ...
|
httpd: ThreadedWSGIServer = ...
|
||||||
def run(self) -> None: ...
|
|
||||||
def terminate(self) -> None: ...
|
def terminate(self) -> None: ...
|
||||||
|
|
||||||
class LiveServerTestCase(TransactionTestCase):
|
class LiveServerTestCase(TransactionTestCase):
|
||||||
@@ -225,10 +200,6 @@ class LiveServerTestCase(TransactionTestCase):
|
|||||||
server_thread_class: Any = ...
|
server_thread_class: Any = ...
|
||||||
static_handler: Any = ...
|
static_handler: Any = ...
|
||||||
def live_server_url(cls): ...
|
def live_server_url(cls): ...
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls) -> None: ...
|
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls) -> None: ...
|
|
||||||
|
|
||||||
class SerializeMixin:
|
class SerializeMixin:
|
||||||
lockfile: Any = ...
|
lockfile: Any = ...
|
||||||
|
|||||||
@@ -66,15 +66,15 @@ class override_system_checks(TestContextDecorator):
|
|||||||
|
|
||||||
class CaptureQueriesContext:
|
class CaptureQueriesContext:
|
||||||
connection: Any = ...
|
connection: Any = ...
|
||||||
|
force_debug_cursor: bool = ...
|
||||||
|
initial_queries: int = ...
|
||||||
|
final_queries: Optional[int] = ...
|
||||||
def __init__(self, connection: Any) -> None: ...
|
def __init__(self, connection: Any) -> None: ...
|
||||||
def __iter__(self): ...
|
def __iter__(self): ...
|
||||||
def __getitem__(self, index: int) -> Dict[str, str]: ...
|
def __getitem__(self, index: int) -> Dict[str, str]: ...
|
||||||
def __len__(self) -> int: ...
|
def __len__(self) -> int: ...
|
||||||
@property
|
@property
|
||||||
def captured_queries(self) -> List[Dict[str, str]]: ...
|
def captured_queries(self) -> List[Dict[str, str]]: ...
|
||||||
force_debug_cursor: bool = ...
|
|
||||||
initial_queries: int = ...
|
|
||||||
final_queries: Optional[int] = ...
|
|
||||||
def __enter__(self) -> CaptureQueriesContext: ...
|
def __enter__(self) -> CaptureQueriesContext: ...
|
||||||
def __exit__(self, exc_type: None, exc_value: None, traceback: None) -> None: ...
|
def __exit__(self, exc_type: None, exc_value: None, traceback: None) -> None: ...
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1 @@
|
|||||||
from django.views.generic.base import View
|
from .generic.base import View as View
|
||||||
|
|
||||||
__all__ = ["View"]
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
from typing import Any, Optional
|
|
||||||
|
|
||||||
from django.http.request import HttpRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponseForbidden
|
from django.http.response import HttpResponseForbidden
|
||||||
|
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ class SafeExceptionReporterFilter(ExceptionReporterFilter):
|
|||||||
class ExceptionReporter:
|
class ExceptionReporter:
|
||||||
request: Optional[HttpRequest] = ...
|
request: Optional[HttpRequest] = ...
|
||||||
filter: ExceptionReporterFilter = ...
|
filter: ExceptionReporterFilter = ...
|
||||||
exc_type: None = ...
|
exc_type: Optional[Type[BaseException]] = ...
|
||||||
exc_value: Optional[str] = ...
|
exc_value: Optional[str] = ...
|
||||||
tb: None = ...
|
tb: Optional[TracebackType] = ...
|
||||||
is_email: bool = ...
|
is_email: bool = ...
|
||||||
template_info: None = ...
|
template_info: None = ...
|
||||||
template_does_not_exist: bool = ...
|
template_does_not_exist: bool = ...
|
||||||
@@ -59,7 +59,7 @@ class ExceptionReporter:
|
|||||||
lineno: int,
|
lineno: int,
|
||||||
context_lines: int,
|
context_lines: int,
|
||||||
loader: Optional[SourceLoader] = ...,
|
loader: Optional[SourceLoader] = ...,
|
||||||
module_name: Optional[str] = None,
|
module_name: Optional[str] = ...,
|
||||||
): ...
|
): ...
|
||||||
|
|
||||||
def technical_404_response(request: HttpRequest, exception: Http404) -> HttpResponse: ...
|
def technical_404_response(request: HttpRequest, exception: Http404) -> HttpResponse: ...
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Callable, Optional
|
from typing import Callable
|
||||||
|
|
||||||
def xframe_options_deny(view_func: Callable) -> Callable: ...
|
def xframe_options_deny(view_func: Callable) -> Callable: ...
|
||||||
def xframe_options_sameorigin(view_func: Callable) -> Callable: ...
|
def xframe_options_sameorigin(view_func: Callable) -> Callable: ...
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Callable, Optional
|
from typing import Any, Callable
|
||||||
|
|
||||||
from django.middleware.csrf import CsrfViewMiddleware
|
from django.middleware.csrf import CsrfViewMiddleware
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Callable, Optional
|
from typing import Any, Callable
|
||||||
|
|
||||||
def sensitive_variables(*variables: Any) -> Callable: ...
|
def sensitive_variables(*variables: Any) -> Callable: ...
|
||||||
def sensitive_post_parameters(*parameters: Any) -> Callable: ...
|
def sensitive_post_parameters(*parameters: Any) -> Callable: ...
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Callable, Optional
|
from typing import Any, Callable
|
||||||
|
|
||||||
def vary_on_headers(*headers: Any) -> Callable: ...
|
def vary_on_headers(*headers: Any) -> Callable: ...
|
||||||
def vary_on_cookie(func: Callable) -> Callable: ...
|
def vary_on_cookie(func: Callable) -> Callable: ...
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
from typing import Any, Optional
|
from typing import Optional
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import (
|
from django.http.response import (
|
||||||
Http404,
|
|
||||||
HttpResponseBadRequest,
|
HttpResponseBadRequest,
|
||||||
HttpResponseForbidden,
|
HttpResponseForbidden,
|
||||||
HttpResponseNotFound,
|
HttpResponseNotFound,
|
||||||
@@ -15,10 +14,10 @@ ERROR_400_TEMPLATE_NAME: str
|
|||||||
ERROR_500_TEMPLATE_NAME: str
|
ERROR_500_TEMPLATE_NAME: str
|
||||||
|
|
||||||
def page_not_found(
|
def page_not_found(
|
||||||
request: WSGIRequest, exception: Optional[Http404], template_name: str = ...
|
request: HttpRequest, exception: Optional[Exception], template_name: str = ...
|
||||||
) -> HttpResponseNotFound: ...
|
) -> HttpResponseNotFound: ...
|
||||||
def server_error(request: WSGIRequest, template_name: str = ...) -> HttpResponseServerError: ...
|
def server_error(request: HttpRequest, template_name: str = ...) -> HttpResponseServerError: ...
|
||||||
def bad_request(request: WSGIRequest, exception: Exception, template_name: str = ...) -> HttpResponseBadRequest: ...
|
def bad_request(request: HttpRequest, exception: Exception, template_name: str = ...) -> HttpResponseBadRequest: ...
|
||||||
def permission_denied(
|
def permission_denied(
|
||||||
request: WSGIRequest, exception: Exception, template_name: str = ...
|
request: HttpRequest, exception: Exception, template_name: str = ...
|
||||||
) -> HttpResponseForbidden: ...
|
) -> HttpResponseForbidden: ...
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from django.views.generic.base import RedirectView as RedirectView, TemplateView as TemplateView, View as View
|
from .base import RedirectView as RedirectView, TemplateView as TemplateView, View as View
|
||||||
from django.views.generic.dates import (
|
from .dates import (
|
||||||
ArchiveIndexView as ArchiveIndexView,
|
ArchiveIndexView as ArchiveIndexView,
|
||||||
DateDetailView as DateDetailView,
|
DateDetailView as DateDetailView,
|
||||||
DayArchiveView as DayArchiveView,
|
DayArchiveView as DayArchiveView,
|
||||||
@@ -8,13 +8,8 @@ from django.views.generic.dates import (
|
|||||||
WeekArchiveView as WeekArchiveView,
|
WeekArchiveView as WeekArchiveView,
|
||||||
YearArchiveView as YearArchiveView,
|
YearArchiveView as YearArchiveView,
|
||||||
)
|
)
|
||||||
from django.views.generic.detail import DetailView as DetailView
|
from .detail import DetailView as DetailView
|
||||||
from django.views.generic.edit import (
|
from .edit import CreateView as CreateView, DeleteView as DeleteView, FormView as FormView, UpdateView as UpdateView
|
||||||
CreateView as CreateView,
|
from .list import ListView as ListView
|
||||||
DeleteView as DeleteView,
|
|
||||||
FormView as FormView,
|
|
||||||
UpdateView as UpdateView,
|
|
||||||
)
|
|
||||||
from django.views.generic.list import ListView as ListView
|
|
||||||
|
|
||||||
class GenericViewError(Exception): ...
|
class GenericViewError(Exception): ...
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ class RedirectView(View):
|
|||||||
def get(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
def get(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
||||||
def head(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
def head(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
||||||
def post(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
def post(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
||||||
def options(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
|
||||||
def delete(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
def delete(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
||||||
def put(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
def put(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
||||||
def patch(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
def patch(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
|
||||||
|
|||||||
@@ -8,49 +8,49 @@ from django.views.generic.detail import BaseDetailView, SingleObjectTemplateResp
|
|||||||
from django.views.generic.list import MultipleObjectMixin, MultipleObjectTemplateResponseMixin
|
from django.views.generic.list import MultipleObjectMixin, MultipleObjectTemplateResponseMixin
|
||||||
|
|
||||||
class YearMixin:
|
class YearMixin:
|
||||||
year_format = ... # type: str
|
year_format: str = ...
|
||||||
year = ... # type: Optional[str]
|
year: Optional[str] = ...
|
||||||
kwargs = ... # type: Dict[str, object]
|
kwargs: Dict[str, Any] = ...
|
||||||
request = ... # type: HttpRequest
|
request: HttpRequest = ...
|
||||||
def get_year_format(self) -> str: ...
|
def get_year_format(self) -> str: ...
|
||||||
def get_year(self) -> str: ...
|
def get_year(self) -> str: ...
|
||||||
def get_next_year(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_next_year(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
def get_previous_year(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_previous_year(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
|
|
||||||
class MonthMixin:
|
class MonthMixin:
|
||||||
month_format = ... # type: str
|
month_format: str = ...
|
||||||
month = ... # type: Optional[str]
|
month: Optional[str] = ...
|
||||||
request = ... # type: HttpRequest
|
request: HttpRequest = ...
|
||||||
kwargs = ... # type: Dict[str, object]
|
kwargs: Dict[str, Any] = ...
|
||||||
def get_month_format(self) -> str: ...
|
def get_month_format(self) -> str: ...
|
||||||
def get_month(self) -> str: ...
|
def get_month(self) -> str: ...
|
||||||
def get_next_month(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_next_month(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
def get_previous_month(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_previous_month(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
|
|
||||||
class DayMixin:
|
class DayMixin:
|
||||||
day_format = ... # type: str
|
day_format: str = ...
|
||||||
day = ... # type: Optional[str]
|
day: Optional[str] = ...
|
||||||
request = ... # type: HttpRequest
|
request: HttpRequest = ...
|
||||||
kwargs = ... # type: Dict[str, object]
|
kwargs: Dict[str, Any] = ...
|
||||||
def get_day_format(self) -> str: ...
|
def get_day_format(self) -> str: ...
|
||||||
def get_day(self) -> str: ...
|
def get_day(self) -> str: ...
|
||||||
def get_next_day(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_next_day(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
def get_previous_day(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_previous_day(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
|
|
||||||
class WeekMixin:
|
class WeekMixin:
|
||||||
week_format = ... # type: str
|
week_format: str = ...
|
||||||
week = ... # type: Optional[str]
|
week: Optional[str] = ...
|
||||||
request = ... # type: HttpRequest
|
request: HttpRequest = ...
|
||||||
kwargs = ... # type: Dict[str, object]
|
kwargs: Dict[str, Any] = ...
|
||||||
def get_week_format(self) -> str: ...
|
def get_week_format(self) -> str: ...
|
||||||
def get_week(self) -> str: ...
|
def get_week(self) -> str: ...
|
||||||
def get_next_week(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_next_week(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
def get_previous_week(self, date: datetime.date) -> Optional[datetime.date]: ...
|
def get_previous_week(self, date: datetime.date) -> Optional[datetime.date]: ...
|
||||||
|
|
||||||
class DateMixin:
|
class DateMixin:
|
||||||
date_field = ... # type: Optional[str]
|
date_field: Optional[str] = ...
|
||||||
allow_future = ... # type: bool
|
allow_future: bool = ...
|
||||||
model = ... # type: Optional[Type[models.Model]]
|
model: Optional[Type[models.Model]] = ...
|
||||||
def get_date_field(self) -> str: ...
|
def get_date_field(self) -> str: ...
|
||||||
def get_allow_future(self) -> bool: ...
|
def get_allow_future(self) -> bool: ...
|
||||||
def uses_datetime_field(self) -> bool: ...
|
def uses_datetime_field(self) -> bool: ...
|
||||||
@@ -58,63 +58,33 @@ class DateMixin:
|
|||||||
DatedItems = Tuple[Optional[Sequence[datetime.date]], Sequence[object], Dict[str, Any]]
|
DatedItems = Tuple[Optional[Sequence[datetime.date]], Sequence[object], Dict[str, Any]]
|
||||||
|
|
||||||
class BaseDateListView(MultipleObjectMixin, DateMixin, View):
|
class BaseDateListView(MultipleObjectMixin, DateMixin, View):
|
||||||
allow_empty = ... # type: bool
|
date_list_period: str = ...
|
||||||
date_list_period = ... # type: str
|
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
|
||||||
def render_to_response(self, context: Dict[str, object], **response_kwargs: object) -> HttpResponse: ...
|
def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: ...
|
||||||
def get(self, request: HttpRequest, *args: object, **kwargs: object) -> HttpResponse: ...
|
|
||||||
def get_dated_items(self) -> DatedItems: ...
|
def get_dated_items(self) -> DatedItems: ...
|
||||||
def get_ordering(self) -> Sequence[str]: ...
|
def get_dated_queryset(self, **lookup: Any) -> models.query.QuerySet: ...
|
||||||
def get_dated_queryset(self, **lookup: object) -> models.query.QuerySet: ...
|
|
||||||
def get_date_list_period(self) -> str: ...
|
def get_date_list_period(self) -> str: ...
|
||||||
def get_date_list(
|
def get_date_list(
|
||||||
self, queryset: models.query.QuerySet, date_type: str = None, ordering: str = ...
|
self, queryset: models.query.QuerySet, date_type: Optional[str] = ..., ordering: str = ...
|
||||||
) -> models.query.QuerySet: ...
|
) -> models.query.QuerySet: ...
|
||||||
|
|
||||||
class BaseArchiveIndexView(BaseDateListView):
|
class BaseArchiveIndexView(BaseDateListView): ...
|
||||||
context_object_name = ... # type: str
|
class ArchiveIndexView(MultipleObjectTemplateResponseMixin, BaseArchiveIndexView): ...
|
||||||
def get_dated_items(self) -> DatedItems: ...
|
|
||||||
|
|
||||||
class ArchiveIndexView(MultipleObjectTemplateResponseMixin, BaseArchiveIndexView):
|
|
||||||
template_name_suffix = ... # type: str
|
|
||||||
|
|
||||||
class BaseYearArchiveView(YearMixin, BaseDateListView):
|
class BaseYearArchiveView(YearMixin, BaseDateListView):
|
||||||
date_list_period = ... # type: str
|
make_object_list: bool = ...
|
||||||
make_object_list = ... # type: bool
|
|
||||||
def get_dated_items(self) -> DatedItems: ...
|
|
||||||
def get_make_object_list(self) -> bool: ...
|
def get_make_object_list(self) -> bool: ...
|
||||||
|
|
||||||
class YearArchiveView(MultipleObjectTemplateResponseMixin, BaseYearArchiveView):
|
class YearArchiveView(MultipleObjectTemplateResponseMixin, BaseYearArchiveView): ...
|
||||||
template_name_suffix = ... # type: str
|
class BaseMonthArchiveView(YearMixin, MonthMixin, BaseDateListView): ...
|
||||||
|
class MonthArchiveView(MultipleObjectTemplateResponseMixin, BaseMonthArchiveView): ...
|
||||||
class BaseMonthArchiveView(YearMixin, MonthMixin, BaseDateListView):
|
class BaseWeekArchiveView(YearMixin, WeekMixin, BaseDateListView): ...
|
||||||
date_list_period = ... # type: str
|
class WeekArchiveView(MultipleObjectTemplateResponseMixin, BaseWeekArchiveView): ...
|
||||||
def get_dated_items(self) -> DatedItems: ...
|
class BaseDayArchiveView(YearMixin, MonthMixin, DayMixin, BaseDateListView): ...
|
||||||
|
class DayArchiveView(MultipleObjectTemplateResponseMixin, BaseDayArchiveView): ...
|
||||||
class MonthArchiveView(MultipleObjectTemplateResponseMixin, BaseMonthArchiveView):
|
class BaseTodayArchiveView(BaseDayArchiveView): ...
|
||||||
template_name_suffix = ... # type: str
|
class TodayArchiveView(MultipleObjectTemplateResponseMixin, BaseTodayArchiveView): ...
|
||||||
|
class BaseDateDetailView(YearMixin, MonthMixin, DayMixin, DateMixin, BaseDetailView): ...
|
||||||
class BaseWeekArchiveView(YearMixin, WeekMixin, BaseDateListView):
|
class DateDetailView(SingleObjectTemplateResponseMixin, BaseDateDetailView): ...
|
||||||
def get_dated_items(self) -> DatedItems: ...
|
|
||||||
|
|
||||||
class WeekArchiveView(MultipleObjectTemplateResponseMixin, BaseWeekArchiveView):
|
|
||||||
template_name_suffix = ... # type: str
|
|
||||||
|
|
||||||
class BaseDayArchiveView(YearMixin, MonthMixin, DayMixin, BaseDateListView):
|
|
||||||
def get_dated_items(self) -> DatedItems: ...
|
|
||||||
|
|
||||||
class DayArchiveView(MultipleObjectTemplateResponseMixin, BaseDayArchiveView):
|
|
||||||
template_name_suffix = ... # type: str
|
|
||||||
|
|
||||||
class BaseTodayArchiveView(BaseDayArchiveView):
|
|
||||||
def get_dated_items(self) -> DatedItems: ...
|
|
||||||
|
|
||||||
class TodayArchiveView(MultipleObjectTemplateResponseMixin, BaseTodayArchiveView):
|
|
||||||
template_name_suffix = ... # type: str
|
|
||||||
|
|
||||||
class BaseDateDetailView(YearMixin, MonthMixin, DayMixin, DateMixin, BaseDetailView):
|
|
||||||
def get_object(self, queryset: models.query.QuerySet = None) -> models.Model: ...
|
|
||||||
|
|
||||||
class DateDetailView(SingleObjectTemplateResponseMixin, BaseDateDetailView):
|
|
||||||
template_name_suffix = ... # type: str
|
|
||||||
|
|
||||||
def timezone_today() -> datetime.date: ...
|
def timezone_today() -> datetime.date: ...
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
from typing import Any, Dict, List, Optional, Type
|
from typing import Any, Dict, Optional, Type
|
||||||
|
|
||||||
|
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.http import HttpResponse, HttpRequest
|
from django.http import HttpRequest, HttpResponse
|
||||||
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
|
||||||
|
|
||||||
class SingleObjectMixin(ContextMixin):
|
class SingleObjectMixin(ContextMixin):
|
||||||
model: Optional[Type[models.Model]] = ...
|
model: Optional[Type[models.Model]] = ...
|
||||||
@@ -14,11 +15,10 @@ class SingleObjectMixin(ContextMixin):
|
|||||||
query_pk_and_slug: bool = ...
|
query_pk_and_slug: bool = ...
|
||||||
object: models.Model = ...
|
object: models.Model = ...
|
||||||
kwargs: Dict[str, Any] = ...
|
kwargs: Dict[str, Any] = ...
|
||||||
def get_object(self, queryset: Optional[models.query.QuerySet] = None) -> models.Model: ...
|
def get_object(self, queryset: Optional[models.query.QuerySet] = ...) -> models.Model: ...
|
||||||
def get_queryset(self) -> models.query.QuerySet: ...
|
def get_queryset(self) -> models.query.QuerySet: ...
|
||||||
def get_slug_field(self) -> str: ...
|
def get_slug_field(self) -> str: ...
|
||||||
def get_context_object_name(self, obj: Any) -> Optional[str]: ...
|
def get_context_object_name(self, obj: Any) -> Optional[str]: ...
|
||||||
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: ...
|
|
||||||
|
|
||||||
class BaseDetailView(SingleObjectMixin, View):
|
class BaseDetailView(SingleObjectMixin, View):
|
||||||
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
|
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
|
||||||
@@ -29,6 +29,5 @@ class SingleObjectTemplateResponseMixin(TemplateResponseMixin):
|
|||||||
template_name_suffix: str = ...
|
template_name_suffix: str = ...
|
||||||
model: Optional[Type[models.Model]] = ...
|
model: Optional[Type[models.Model]] = ...
|
||||||
object: models.Model = ...
|
object: models.Model = ...
|
||||||
def get_template_names(self) -> List[str]: ...
|
|
||||||
|
|
||||||
class DetailView(SingleObjectTemplateResponseMixin, BaseDetailView): ...
|
class DetailView(SingleObjectTemplateResponseMixin, BaseDetailView): ...
|
||||||
|
|||||||
@@ -1,24 +1,25 @@
|
|||||||
from typing import Any, Dict, List, Optional, Sequence, Tuple, Type
|
from typing import Any, Dict, Optional, Sequence, Tuple, Type
|
||||||
|
|
||||||
from django.db.models import Model
|
from django.core.paginator import Paginator
|
||||||
from django.db.models.query import QuerySet
|
from django.db.models.query import QuerySet
|
||||||
from django.core.paginator import Paginator # type: ignore # This will be fixed when adding the paginator module
|
|
||||||
from django.http import HttpRequest, HttpResponse
|
|
||||||
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View
|
||||||
|
|
||||||
|
from django.db.models import Model
|
||||||
|
from django.http import HttpRequest, HttpResponse
|
||||||
|
|
||||||
class MultipleObjectMixin(ContextMixin):
|
class MultipleObjectMixin(ContextMixin):
|
||||||
allow_empty = ... # type: bool
|
allow_empty: bool = ...
|
||||||
queryset = ... # type: Optional[QuerySet]
|
queryset: Optional[QuerySet] = ...
|
||||||
model = ... # type: Optional[Type[Model]]
|
model: Optional[Type[Model]] = ...
|
||||||
paginate_by = ... # type: Optional[int]
|
paginate_by: Optional[int] = ...
|
||||||
paginate_orphans = ... # type: int
|
paginate_orphans: int = ...
|
||||||
context_object_name = ... # type: Optional[str]
|
context_object_name: Optional[str] = ...
|
||||||
paginator_class = ... # type: Type[Paginator]
|
paginator_class: Type[Paginator] = ...
|
||||||
page_kwarg = ... # type: str
|
page_kwarg: str = ...
|
||||||
ordering = ... # type: Sequence[str]
|
ordering: Sequence[str] = ...
|
||||||
request = ... # type: HttpRequest
|
request: HttpRequest = ...
|
||||||
kwargs = ... # type: Dict[str, object]
|
kwargs: Dict[str, Any] = ...
|
||||||
object_list = ... # type: QuerySet
|
object_list: QuerySet = ...
|
||||||
def get_queryset(self) -> QuerySet: ...
|
def get_queryset(self) -> QuerySet: ...
|
||||||
def get_ordering(self) -> Sequence[str]: ...
|
def get_ordering(self) -> Sequence[str]: ...
|
||||||
def paginate_queryset(self, queryset: QuerySet, page_size: int) -> Tuple[Paginator, int, QuerySet, bool]: ...
|
def paginate_queryset(self, queryset: QuerySet, page_size: int) -> Tuple[Paginator, int, QuerySet, bool]: ...
|
||||||
@@ -29,16 +30,13 @@ class MultipleObjectMixin(ContextMixin):
|
|||||||
def get_paginate_orphans(self) -> int: ...
|
def get_paginate_orphans(self) -> int: ...
|
||||||
def get_allow_empty(self) -> bool: ...
|
def get_allow_empty(self) -> bool: ...
|
||||||
def get_context_object_name(self, object_list: QuerySet) -> Optional[str]: ...
|
def get_context_object_name(self, object_list: QuerySet) -> Optional[str]: ...
|
||||||
def get_context_data(self, **kwargs: object) -> Dict[str, Any]: ...
|
|
||||||
|
|
||||||
class BaseListView(MultipleObjectMixin, View):
|
class BaseListView(MultipleObjectMixin, View):
|
||||||
object_list = ... # type: QuerySet
|
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
|
||||||
def render_to_response(self, context: Dict[str, object], **response_kwargs: object) -> HttpResponse: ...
|
def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: ...
|
||||||
def get(self, request: HttpRequest, *args: object, **kwargs: object) -> HttpResponse: ...
|
|
||||||
|
|
||||||
class MultipleObjectTemplateResponseMixin(TemplateResponseMixin):
|
class MultipleObjectTemplateResponseMixin(TemplateResponseMixin):
|
||||||
template_name_suffix = ... # type: str
|
template_name_suffix: str = ...
|
||||||
object_list = ... # type: QuerySet
|
object_list: QuerySet = ...
|
||||||
def get_template_names(self) -> List[str]: ...
|
|
||||||
|
|
||||||
class ListView(MultipleObjectTemplateResponseMixin, BaseListView): ...
|
class ListView(MultipleObjectTemplateResponseMixin, BaseListView): ...
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
from typing import Any, Dict, List, Optional, Union
|
from typing import Any, Callable, Dict, List, Optional, Union
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import HttpResponse
|
from django.http.response import HttpResponse
|
||||||
|
from django.utils.translation.trans_real import DjangoTranslation
|
||||||
|
|
||||||
from django.views.generic import View
|
from django.views.generic import View
|
||||||
|
|
||||||
LANGUAGE_QUERY_PARAMETER: str
|
LANGUAGE_QUERY_PARAMETER: str
|
||||||
|
|
||||||
def set_language(request: WSGIRequest) -> HttpResponse: ...
|
def set_language(request: HttpRequest) -> HttpResponse: ...
|
||||||
def get_formats() -> Dict[str, Union[List[str], int, str]]: ...
|
def get_formats() -> Dict[str, Union[List[str], int, str]]: ...
|
||||||
|
|
||||||
js_catalog_template: str
|
js_catalog_template: str
|
||||||
@@ -15,21 +17,15 @@ def render_javascript_catalog(catalog: Optional[Any] = ..., plural: Optional[Any
|
|||||||
def null_javascript_catalog(request: Any, domain: Optional[Any] = ..., packages: Optional[Any] = ...): ...
|
def null_javascript_catalog(request: Any, domain: Optional[Any] = ..., packages: Optional[Any] = ...): ...
|
||||||
|
|
||||||
class JavaScriptCatalog(View):
|
class JavaScriptCatalog(View):
|
||||||
args: Tuple
|
|
||||||
head: Callable
|
head: Callable
|
||||||
kwargs: Dict[Any, Any]
|
|
||||||
request: WSGIRequest
|
|
||||||
domain: str = ...
|
domain: str = ...
|
||||||
packages: List[str] = ...
|
packages: List[str] = ...
|
||||||
translation: django.utils.translation.trans_real.DjangoTranslation = ...
|
translation: DjangoTranslation = ...
|
||||||
def get(self, request: WSGIRequest, *args: Any, **kwargs: Any) -> HttpResponse: ...
|
def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: ...
|
||||||
def get_paths(self, packages: List[str]) -> List[str]: ...
|
def get_paths(self, packages: List[str]) -> List[str]: ...
|
||||||
def get_plural(self) -> None: ...
|
def get_plural(self) -> None: ...
|
||||||
def get_catalog(self) -> Dict[str, Union[List[str], str]]: ...
|
def get_catalog(self) -> Dict[str, Union[List[str], str]]: ...
|
||||||
def get_context_data(self, **kwargs: Any) -> Dict[str, Optional[Dict[str, Union[List[str], int, str]]]]: ...
|
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: ...
|
||||||
def render_to_response(
|
def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> HttpResponse: ...
|
||||||
self, context: Dict[str, Optional[Dict[str, Union[List[str], int, str]]]], **response_kwargs: Any
|
|
||||||
) -> HttpResponse: ...
|
|
||||||
|
|
||||||
class JSONCatalog(JavaScriptCatalog):
|
class JSONCatalog(JavaScriptCatalog): ...
|
||||||
def render_to_response(self, context: Any, **response_kwargs: Any): ...
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from django.core.handlers.wsgi import WSGIRequest
|
from django.http.request import HttpRequest
|
||||||
from django.http.response import FileResponse
|
from django.http.response import FileResponse
|
||||||
|
|
||||||
def serve(request: WSGIRequest, path: str, document_root: str = ..., show_indexes: bool = ...) -> FileResponse: ...
|
def serve(request: HttpRequest, path: str, document_root: str = ..., show_indexes: bool = ...) -> FileResponse: ...
|
||||||
|
|
||||||
DEFAULT_DIRECTORY_INDEX_TEMPLATE: str
|
DEFAULT_DIRECTORY_INDEX_TEMPLATE: str
|
||||||
template_translatable: Any
|
template_translatable: Any
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import os
|
import os
|
||||||
from typing import Callable, Optional, Set, Union, cast, Dict
|
from typing import Callable, Dict, Optional, Union, cast
|
||||||
|
|
||||||
from mypy.checker import TypeChecker
|
from mypy.checker import TypeChecker
|
||||||
from mypy.nodes import MemberExpr, TypeInfo
|
from mypy.nodes import MemberExpr, TypeInfo
|
||||||
from mypy.options import Options
|
from mypy.options import Options
|
||||||
from mypy.plugin import AttributeContext, ClassDefContext, FunctionContext, MethodContext, Plugin
|
from mypy.plugin import AttributeContext, ClassDefContext, FunctionContext, MethodContext, Plugin
|
||||||
from mypy.types import AnyType, Instance, Type, TypeOfAny, TypeType, UnionType
|
from mypy.types import AnyType, Instance, Type, TypeOfAny, TypeType, UnionType
|
||||||
|
|
||||||
from mypy_django_plugin import helpers, monkeypatch
|
from mypy_django_plugin import helpers, monkeypatch
|
||||||
from mypy_django_plugin.config import Config
|
from mypy_django_plugin.config import Config
|
||||||
from mypy_django_plugin.transformers import fields, init_create
|
from mypy_django_plugin.transformers import fields, init_create
|
||||||
@@ -211,10 +212,6 @@ class DjangoPlugin(Plugin):
|
|||||||
|
|
||||||
def get_function_hook(self, fullname: str
|
def get_function_hook(self, fullname: str
|
||||||
) -> Optional[Callable[[FunctionContext], Type]]:
|
) -> Optional[Callable[[FunctionContext], Type]]:
|
||||||
sym = self.lookup_fully_qualified(fullname)
|
|
||||||
if sym and isinstance(sym.node, TypeInfo) and sym.node.has_base(helpers.FIELD_FULLNAME):
|
|
||||||
return fields.adjust_return_type_of_field_instantiation
|
|
||||||
|
|
||||||
if fullname == 'django.contrib.auth.get_user_model':
|
if fullname == 'django.contrib.auth.get_user_model':
|
||||||
return return_user_model_hook
|
return return_user_model_hook
|
||||||
|
|
||||||
@@ -223,24 +220,34 @@ class DjangoPlugin(Plugin):
|
|||||||
return determine_proper_manager_type
|
return determine_proper_manager_type
|
||||||
|
|
||||||
sym = self.lookup_fully_qualified(fullname)
|
sym = self.lookup_fully_qualified(fullname)
|
||||||
if sym and isinstance(sym.node, TypeInfo):
|
if sym is not None and isinstance(sym.node, TypeInfo):
|
||||||
|
if sym.node.has_base(helpers.FIELD_FULLNAME):
|
||||||
|
return fields.adjust_return_type_of_field_instantiation
|
||||||
|
|
||||||
if sym.node.metadata.get('django', {}).get('generated_init'):
|
if sym.node.metadata.get('django', {}).get('generated_init'):
|
||||||
return init_create.redefine_and_typecheck_model_init
|
return init_create.redefine_and_typecheck_model_init
|
||||||
|
|
||||||
def get_method_hook(self, fullname: str
|
def get_method_hook(self, fullname: str
|
||||||
) -> Optional[Callable[[MethodContext], Type]]:
|
) -> Optional[Callable[[MethodContext], Type]]:
|
||||||
|
if fullname in {'django.apps.registry.Apps.get_model',
|
||||||
|
'django.db.migrations.state.StateApps.get_model'}:
|
||||||
|
return determine_model_cls_from_string_for_migrations
|
||||||
|
|
||||||
manager_classes = self._get_current_manager_bases()
|
manager_classes = self._get_current_manager_bases()
|
||||||
class_fullname, _, method_name = fullname.rpartition('.')
|
class_fullname, _, method_name = fullname.rpartition('.')
|
||||||
if class_fullname in manager_classes and method_name == 'create':
|
if class_fullname in manager_classes and method_name == 'create':
|
||||||
return init_create.redefine_and_typecheck_model_create
|
return init_create.redefine_and_typecheck_model_create
|
||||||
|
|
||||||
if fullname in {'django.apps.registry.Apps.get_model',
|
|
||||||
'django.db.migrations.state.StateApps.get_model'}:
|
|
||||||
return determine_model_cls_from_string_for_migrations
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_base_class_hook(self, fullname: str
|
def get_base_class_hook(self, fullname: str
|
||||||
) -> Optional[Callable[[ClassDefContext], None]]:
|
) -> Optional[Callable[[ClassDefContext], None]]:
|
||||||
|
if fullname == helpers.DUMMY_SETTINGS_BASE_CLASS:
|
||||||
|
settings_modules = ['django.conf.global_settings']
|
||||||
|
if self.django_settings_module:
|
||||||
|
settings_modules.append(self.django_settings_module)
|
||||||
|
return AddSettingValuesToDjangoConfObject(settings_modules,
|
||||||
|
self.config.ignore_missing_settings)
|
||||||
|
|
||||||
if fullname in self._get_current_model_bases():
|
if fullname in self._get_current_model_bases():
|
||||||
return transform_model_class
|
return transform_model_class
|
||||||
|
|
||||||
@@ -250,17 +257,13 @@ class DjangoPlugin(Plugin):
|
|||||||
if fullname in self._get_current_modelform_bases():
|
if fullname in self._get_current_modelform_bases():
|
||||||
return transform_modelform_class
|
return transform_modelform_class
|
||||||
|
|
||||||
if fullname == helpers.DUMMY_SETTINGS_BASE_CLASS:
|
|
||||||
settings_modules = ['django.conf.global_settings']
|
|
||||||
if self.django_settings_module:
|
|
||||||
settings_modules.append(self.django_settings_module)
|
|
||||||
return AddSettingValuesToDjangoConfObject(settings_modules,
|
|
||||||
self.config.ignore_missing_settings)
|
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_attribute_hook(self, fullname: str
|
def get_attribute_hook(self, fullname: str
|
||||||
) -> Optional[Callable[[AttributeContext], Type]]:
|
) -> Optional[Callable[[AttributeContext], Type]]:
|
||||||
|
if fullname == 'builtins.object.id':
|
||||||
|
return return_integer_type_for_id_for_non_defined_primary_key_in_models
|
||||||
|
|
||||||
module, _, name = fullname.rpartition('.')
|
module, _, name = fullname.rpartition('.')
|
||||||
sym = self.lookup_fully_qualified('django.conf.LazySettings')
|
sym = self.lookup_fully_qualified('django.conf.LazySettings')
|
||||||
if sym and isinstance(sym.node, TypeInfo):
|
if sym and isinstance(sym.node, TypeInfo):
|
||||||
@@ -268,9 +271,6 @@ class DjangoPlugin(Plugin):
|
|||||||
if module == 'builtins.object' and name in metadata:
|
if module == 'builtins.object' and name in metadata:
|
||||||
return ExtractSettingType(module_fullname=metadata[name])
|
return ExtractSettingType(module_fullname=metadata[name])
|
||||||
|
|
||||||
if fullname == 'builtins.object.id':
|
|
||||||
return return_integer_type_for_id_for_non_defined_primary_key_in_models
|
|
||||||
|
|
||||||
return extract_and_return_primary_key_of_bound_related_field_parameter
|
return extract_and_return_primary_key_of_bound_related_field_parameter
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,5 @@ testpaths = ./test-data
|
|||||||
addopts =
|
addopts =
|
||||||
--tb=native
|
--tb=native
|
||||||
--mypy-ini-file=./test-data/plugins.ini
|
--mypy-ini-file=./test-data/plugins.ini
|
||||||
--mypy-no-cache
|
|
||||||
-s
|
-s
|
||||||
-v
|
-v
|
||||||
2
setup.py
2
setup.py
@@ -31,7 +31,7 @@ if sys.version_info[:2] < (3, 7):
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="django-stubs",
|
name="django-stubs",
|
||||||
version="0.6.0",
|
version="0.7.0",
|
||||||
description='Django mypy stubs',
|
description='Django mypy stubs',
|
||||||
long_description=readme,
|
long_description=readme,
|
||||||
long_description_content_type='text/markdown',
|
long_description_content_type='text/markdown',
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[mypy]
|
[mypy]
|
||||||
incremental = False
|
incremental = True
|
||||||
strict_optional = True
|
strict_optional = True
|
||||||
plugins =
|
plugins =
|
||||||
mypy_django_plugin.main
|
mypy_django_plugin.main
|
||||||
|
|||||||
@@ -1,28 +1,30 @@
|
|||||||
[CASE missing_settings_ignored_flag]
|
[CASE missing_settings_ignored_flag]
|
||||||
|
[env MYPY_DJANGO_CONFIG=${MYPY_CWD}/mypy_django.ini]
|
||||||
|
[disable_cache]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
reveal_type(settings.NO_SUCH_SETTING) # E: Revealed type is 'Any'
|
reveal_type(settings.NO_SUCH_SETTING) # E: Revealed type is 'Any'
|
||||||
|
|
||||||
[env MYPY_DJANGO_CONFIG=${MYPY_CWD}/mypy_django.ini]
|
|
||||||
|
|
||||||
[file mypy_django.ini]
|
[file mypy_django.ini]
|
||||||
[[mypy_django_plugin]
|
[[mypy_django_plugin]
|
||||||
ignore_missing_settings = True
|
ignore_missing_settings = True
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE django_settings_via_config_file]
|
[CASE django_settings_via_config_file]
|
||||||
|
[env MYPY_DJANGO_CONFIG=${MYPY_CWD}/mypy_django.ini]
|
||||||
|
[disable_cache]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
reveal_type(settings.MY_SETTING) # E: Revealed type is 'builtins.int'
|
reveal_type(settings.MY_SETTING) # E: Revealed type is 'builtins.int'
|
||||||
|
|
||||||
[env MYPY_DJANGO_CONFIG=${MYPY_CWD}/mypy_django.ini]
|
|
||||||
[file mypy_django.ini]
|
[file mypy_django.ini]
|
||||||
[[mypy_django_plugin]
|
[[mypy_django_plugin]
|
||||||
django_settings = mysettings
|
django_settings = mysettings
|
||||||
|
|
||||||
[file mysettings.py]
|
[file mysettings.py]
|
||||||
MY_SETTING: int = 1
|
MY_SETTING: int = 1
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE mypy_django_ini_in_current_directory_is_a_default]
|
[CASE mypy_django_ini_in_current_directory_is_a_default]
|
||||||
|
[disable_cache]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
reveal_type(settings.MY_SETTING) # E: Revealed type is 'builtins.int'
|
reveal_type(settings.MY_SETTING) # E: Revealed type is 'builtins.int'
|
||||||
|
|
||||||
@@ -32,4 +34,4 @@ django_settings = mysettings
|
|||||||
|
|
||||||
[file mysettings.py]
|
[file mysettings.py]
|
||||||
MY_SETTING: int = 1
|
MY_SETTING: int = 1
|
||||||
[out]
|
[/CASE]
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ class User(models.Model):
|
|||||||
|
|
||||||
user = User()
|
user = User()
|
||||||
reveal_type(user.array) # E: Revealed type is 'builtins.list*[Any]'
|
reveal_type(user.array) # E: Revealed type is 'builtins.list*[Any]'
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE array_field_base_field_parsed_into_generic_typevar]
|
[CASE array_field_base_field_parsed_into_generic_typevar]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -19,6 +20,7 @@ class User(models.Model):
|
|||||||
user = User()
|
user = User()
|
||||||
reveal_type(user.members) # E: Revealed type is 'builtins.list*[builtins.int]'
|
reveal_type(user.members) # E: Revealed type is 'builtins.list*[builtins.int]'
|
||||||
reveal_type(user.members_as_text) # E: Revealed type is 'builtins.list*[builtins.str]'
|
reveal_type(user.members_as_text) # E: Revealed type is 'builtins.list*[builtins.str]'
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_model_fields_classes_present_as_primitives]
|
[CASE test_model_fields_classes_present_as_primitives]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -36,6 +38,7 @@ reveal_type(user.small_int) # E: Revealed type is 'builtins.int*'
|
|||||||
reveal_type(user.name) # E: Revealed type is 'builtins.str*'
|
reveal_type(user.name) # E: Revealed type is 'builtins.str*'
|
||||||
reveal_type(user.slug) # E: Revealed type is 'builtins.str*'
|
reveal_type(user.slug) # E: Revealed type is 'builtins.str*'
|
||||||
reveal_type(user.text) # E: Revealed type is 'builtins.str*'
|
reveal_type(user.text) # E: Revealed type is 'builtins.str*'
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_model_field_classes_from_existing_locations]
|
[CASE test_model_field_classes_from_existing_locations]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -51,6 +54,7 @@ booking = Booking()
|
|||||||
reveal_type(booking.id) # E: Revealed type is 'builtins.int*'
|
reveal_type(booking.id) # E: Revealed type is 'builtins.int*'
|
||||||
reveal_type(booking.time_range) # E: Revealed type is 'Any'
|
reveal_type(booking.time_range) # E: Revealed type is 'Any'
|
||||||
reveal_type(booking.some_decimal) # E: Revealed type is 'decimal.Decimal*'
|
reveal_type(booking.some_decimal) # E: Revealed type is 'decimal.Decimal*'
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_add_id_field_if_no_primary_key_defined]
|
[CASE test_add_id_field_if_no_primary_key_defined]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -59,6 +63,7 @@ class User(models.Model):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
reveal_type(User().id) # E: Revealed type is 'builtins.int'
|
reveal_type(User().id) # E: Revealed type is 'builtins.int'
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_do_not_add_id_if_field_with_primary_key_True_defined]
|
[CASE test_do_not_add_id_if_field_with_primary_key_True_defined]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -68,7 +73,7 @@ class User(models.Model):
|
|||||||
|
|
||||||
reveal_type(User().my_pk) # E: Revealed type is 'builtins.int*'
|
reveal_type(User().my_pk) # E: Revealed type is 'builtins.int*'
|
||||||
reveal_type(User().id) # E: Revealed type is 'Any'
|
reveal_type(User().id) # E: Revealed type is 'Any'
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_meta_nested_class_allows_subclassing_in_multiple_inheritance]
|
[CASE test_meta_nested_class_allows_subclassing_in_multiple_inheritance]
|
||||||
from typing import Any
|
from typing import Any
|
||||||
@@ -84,7 +89,7 @@ class Mixin2(models.Model):
|
|||||||
|
|
||||||
class User(Mixin1, Mixin2):
|
class User(Mixin1, Mixin2):
|
||||||
pass
|
pass
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_inheritance_from_abstract_model_does_not_fail_if_field_with_id_exists]
|
[CASE test_inheritance_from_abstract_model_does_not_fail_if_field_with_id_exists]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -93,7 +98,7 @@ class Abstract(models.Model):
|
|||||||
abstract = True
|
abstract = True
|
||||||
class User(Abstract):
|
class User(Abstract):
|
||||||
id = models.AutoField(primary_key=True)
|
id = models.AutoField(primary_key=True)
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE standard_it_from_parent_model_could_be_overridden_with_non_integer_field_in_child_model]
|
[CASE standard_it_from_parent_model_could_be_overridden_with_non_integer_field_in_child_model]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -103,11 +108,11 @@ class ParentModel(models.Model):
|
|||||||
class MyModel(ParentModel):
|
class MyModel(ParentModel):
|
||||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||||
reveal_type(MyModel().id) # E: Revealed type is 'uuid.UUID*'
|
reveal_type(MyModel().id) # E: Revealed type is 'uuid.UUID*'
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE blank_for_charfield_is_the_same_as_null]
|
[CASE blank_for_charfield_is_the_same_as_null]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
class MyModel(models.Model):
|
class MyModel(models.Model):
|
||||||
text = models.CharField(max_length=30, blank=True)
|
text = models.CharField(max_length=30, blank=True)
|
||||||
MyModel(text=None)
|
MyModel(text=None)
|
||||||
[out]
|
[/CASE]
|
||||||
|
|||||||
@@ -191,6 +191,8 @@ class Profile(models.Model):
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
class App(models.Model):
|
class App(models.Model):
|
||||||
owner = models.ForeignKey(to='myapp.User', on_delete=models.CASCADE, related_name='apps')
|
owner = models.ForeignKey(to='myapp.User', on_delete=models.CASCADE, related_name='apps')
|
||||||
|
[disable_cache]
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE many_to_many_field_converts_to_queryset_of_model_type]
|
[CASE many_to_many_field_converts_to_queryset_of_model_type]
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
[CASE test_settings_are_parsed_into_django_conf_settings]
|
[CASE test_settings_are_parsed_into_django_conf_settings]
|
||||||
|
[env DJANGO_SETTINGS_MODULE=mysettings]
|
||||||
|
[disable_cache]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
reveal_type(settings.ROOT_DIR) # E: Revealed type is 'builtins.str'
|
reveal_type(settings.ROOT_DIR) # E: Revealed type is 'builtins.str'
|
||||||
@@ -6,7 +8,6 @@ reveal_type(settings.APPS_DIR) # E: Revealed type is 'pathlib.Path'
|
|||||||
reveal_type(settings.OBJ) # E: Revealed type is 'django.utils.functional.LazyObject'
|
reveal_type(settings.OBJ) # E: Revealed type is 'django.utils.functional.LazyObject'
|
||||||
reveal_type(settings.NUMBERS) # E: Revealed type is 'builtins.list[builtins.str]'
|
reveal_type(settings.NUMBERS) # E: Revealed type is 'builtins.list[builtins.str]'
|
||||||
reveal_type(settings.DICT) # E: Revealed type is 'builtins.dict[Any, Any]'
|
reveal_type(settings.DICT) # E: Revealed type is 'builtins.dict[Any, Any]'
|
||||||
[env DJANGO_SETTINGS_MODULE=mysettings]
|
|
||||||
[file base.py]
|
[file base.py]
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
ROOT_DIR = '/etc'
|
ROOT_DIR = '/etc'
|
||||||
@@ -18,14 +19,16 @@ NUMBERS = ['one', 'two']
|
|||||||
DICT = {} # type: ignore
|
DICT = {} # type: ignore
|
||||||
from django.utils.functional import LazyObject
|
from django.utils.functional import LazyObject
|
||||||
OBJ = LazyObject()
|
OBJ = LazyObject()
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_settings_could_be_defined_in_different_module_and_imported_with_star]
|
[CASE test_settings_could_be_defined_in_different_module_and_imported_with_star]
|
||||||
|
[env DJANGO_SETTINGS_MODULE=mysettings]
|
||||||
|
[disable_cache]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
reveal_type(settings.ROOT_DIR) # E: Revealed type is 'pathlib.Path'
|
reveal_type(settings.ROOT_DIR) # E: Revealed type is 'pathlib.Path'
|
||||||
reveal_type(settings.SETUP) # E: Revealed type is 'builtins.int'
|
reveal_type(settings.SETUP) # E: Revealed type is 'builtins.int'
|
||||||
reveal_type(settings.DATABASES) # E: Revealed type is 'builtins.dict[builtins.str, builtins.str]'
|
reveal_type(settings.DATABASES) # E: Revealed type is 'builtins.dict[builtins.str, builtins.str]'
|
||||||
[env DJANGO_SETTINGS_MODULE=mysettings]
|
|
||||||
[file mysettings.py]
|
[file mysettings.py]
|
||||||
from local import *
|
from local import *
|
||||||
DATABASES = {'default': 'mydb'}
|
DATABASES = {'default': 'mydb'}
|
||||||
@@ -36,24 +39,25 @@ SETUP = 3
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
ROOT_DIR = Path(__file__)
|
ROOT_DIR = Path(__file__)
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE global_settings_are_always_loaded]
|
[CASE global_settings_are_always_loaded]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
reveal_type(settings.AUTH_USER_MODEL) # E: Revealed type is 'builtins.str'
|
reveal_type(settings.AUTH_USER_MODEL) # E: Revealed type is 'builtins.str'
|
||||||
reveal_type(settings.AUTHENTICATION_BACKENDS) # E: Revealed type is 'typing.Sequence[builtins.str]'
|
reveal_type(settings.AUTHENTICATION_BACKENDS) # E: Revealed type is 'typing.Sequence[builtins.str]'
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE test_circular_dependency_in_settings_works_if_settings_have_annotations]
|
[CASE test_circular_dependency_in_settings_works_if_settings_have_annotations]
|
||||||
|
[env DJANGO_SETTINGS_MODULE=mysettings]
|
||||||
|
[disable_cache]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
class Class:
|
class Class:
|
||||||
pass
|
pass
|
||||||
reveal_type(settings.MYSETTING) # E: Revealed type is 'builtins.int'
|
reveal_type(settings.MYSETTING) # E: Revealed type is 'builtins.int'
|
||||||
reveal_type(settings.REGISTRY) # E: Revealed type is 'Union[main.Class, None]'
|
reveal_type(settings.REGISTRY) # E: Revealed type is 'Union[main.Class, None]'
|
||||||
reveal_type(settings.LIST) # E: Revealed type is 'builtins.list[builtins.str]'
|
reveal_type(settings.LIST) # E: Revealed type is 'builtins.list[builtins.str]'
|
||||||
[out]
|
|
||||||
|
|
||||||
[env DJANGO_SETTINGS_MODULE=mysettings]
|
|
||||||
[file mysettings.py]
|
[file mysettings.py]
|
||||||
from typing import TYPE_CHECKING, Optional, List
|
from typing import TYPE_CHECKING, Optional, List
|
||||||
|
|
||||||
@@ -63,13 +67,16 @@ if TYPE_CHECKING:
|
|||||||
MYSETTING = 1122
|
MYSETTING = 1122
|
||||||
REGISTRY: Optional['Class'] = None
|
REGISTRY: Optional['Class'] = None
|
||||||
LIST: List[str] = ['1', '2']
|
LIST: List[str] = ['1', '2']
|
||||||
|
[/CASE]
|
||||||
|
|
||||||
[CASE fail_if_there_is_no_setting]
|
[CASE fail_if_there_is_no_setting]
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
reveal_type(settings.NOT_EXISTING)
|
reveal_type(settings.NOT_EXISTING)
|
||||||
|
|
||||||
[env DJANGO_SETTINGS_MODULE=mysettings]
|
[env DJANGO_SETTINGS_MODULE=mysettings]
|
||||||
|
[disable_cache]
|
||||||
[file mysettings.py]
|
[file mysettings.py]
|
||||||
[out]
|
[out]
|
||||||
main:2: error: Revealed type is 'Any'
|
main:2: error: Revealed type is 'Any'
|
||||||
main:2: error: "LazySettings" has no attribute "NOT_EXISTING"
|
main:2: error: "LazySettings" has no attribute "NOT_EXISTING"
|
||||||
|
[/CASE]
|
||||||
@@ -11,9 +11,11 @@ reveal_type(get_object_or_404(MyModel.objects.get_queryset())) # E: Revealed ty
|
|||||||
reveal_type(get_list_or_404(MyModel)) # E: Revealed type is 'builtins.list[main.MyModel*]'
|
reveal_type(get_list_or_404(MyModel)) # E: Revealed type is 'builtins.list[main.MyModel*]'
|
||||||
reveal_type(get_list_or_404(MyModel.objects)) # E: Revealed type is 'builtins.list[main.MyModel*]'
|
reveal_type(get_list_or_404(MyModel.objects)) # E: Revealed type is 'builtins.list[main.MyModel*]'
|
||||||
reveal_type(get_list_or_404(MyModel.objects.get_queryset())) # E: Revealed type is 'builtins.list[main.MyModel*]'
|
reveal_type(get_list_or_404(MyModel.objects.get_queryset())) # E: Revealed type is 'builtins.list[main.MyModel*]'
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE get_user_model_returns_proper_class]
|
[CASE get_user_model_returns_proper_class]
|
||||||
|
[env DJANGO_SETTINGS_MODULE=mysettings]
|
||||||
|
[disable_cache]
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from myapp.models import MyUser
|
from myapp.models import MyUser
|
||||||
@@ -22,7 +24,6 @@ from django.contrib.auth import get_user_model
|
|||||||
UserModel = get_user_model()
|
UserModel = get_user_model()
|
||||||
reveal_type(UserModel.objects) # E: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyUser]'
|
reveal_type(UserModel.objects) # E: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyUser]'
|
||||||
|
|
||||||
[env DJANGO_SETTINGS_MODULE=mysettings]
|
|
||||||
[file mysettings.py]
|
[file mysettings.py]
|
||||||
INSTALLED_APPS = ('myapp',)
|
INSTALLED_APPS = ('myapp',)
|
||||||
AUTH_USER_MODEL = 'myapp.MyUser'
|
AUTH_USER_MODEL = 'myapp.MyUser'
|
||||||
@@ -32,15 +33,16 @@ AUTH_USER_MODEL = 'myapp.MyUser'
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
class MyUser(models.Model):
|
class MyUser(models.Model):
|
||||||
pass
|
pass
|
||||||
[out]
|
[/CASE]
|
||||||
|
|
||||||
[CASE return_type_model_and_show_error_if_model_not_yet_imported]
|
[CASE return_type_model_and_show_error_if_model_not_yet_imported]
|
||||||
|
[env DJANGO_SETTINGS_MODULE=mysettings]
|
||||||
|
[disable_cache]
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
UserModel = get_user_model()
|
UserModel = get_user_model()
|
||||||
reveal_type(UserModel.objects)
|
reveal_type(UserModel.objects)
|
||||||
|
|
||||||
[env DJANGO_SETTINGS_MODULE=mysettings]
|
|
||||||
[file mysettings.py]
|
[file mysettings.py]
|
||||||
INSTALLED_APPS = ('myapp',)
|
INSTALLED_APPS = ('myapp',)
|
||||||
AUTH_USER_MODEL = 'myapp.MyUser'
|
AUTH_USER_MODEL = 'myapp.MyUser'
|
||||||
@@ -54,3 +56,4 @@ class MyUser(models.Model):
|
|||||||
main:3: error: "myapp.MyUser" model class is not imported so far. Try to import it (under if TYPE_CHECKING) at the beginning of the current file
|
main:3: error: "myapp.MyUser" model class is not imported so far. Try to import it (under if TYPE_CHECKING) at the beginning of the current file
|
||||||
main:4: error: Revealed type is 'Any'
|
main:4: error: Revealed type is 'Any'
|
||||||
main:4: error: "Type[Model]" has no attribute "objects"
|
main:4: error: "Type[Model]" has no attribute "objects"
|
||||||
|
[/CASE]
|
||||||
|
|||||||
Reference in New Issue
Block a user