Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 0 additions & 41 deletions .flake8

This file was deleted.

58 changes: 47 additions & 11 deletions django-stubs/contrib/admin/decorators.pyi
Original file line number Diff line number Diff line change
@@ -1,28 +1,64 @@
from collections.abc import Callable, Sequence
from typing import Any, TypeVar
from typing import Any, TypeVar, overload

from django.contrib.admin import ModelAdmin
from django.db.models import Combinable, QuerySet
from django.contrib.admin.sites import AdminSite
from django.db.models.base import Model
from django.db.models.expressions import BaseExpression
from django.http import HttpRequest, HttpResponse
from django.db.models.expressions import BaseExpression, Combinable
from django.utils.functional import _StrOrPromise

_M = TypeVar("_M", bound=Model)
_T = TypeVar("_T", bound=object)
_ModelAdmin = TypeVar("_ModelAdmin", bound=ModelAdmin[Any])
_F = TypeVar("_F", bound=Callable[..., Any])

@overload
def action(
function: (Callable[[ModelAdmin[_M], HttpRequest, QuerySet[_M]], HttpResponse | None] | None) = ...,
function: _F,
*,
permissions: Sequence[str] | None = ...,
description: _StrOrPromise | None = ...,
) -> Callable[[_T], _T]: ...
) -> _F: ...
@overload
def action(
function: None = None,
*,
permissions: Sequence[str] | None = ...,
description: _StrOrPromise | None = ...,
) -> Callable[[_F], _F]: ...
@overload
def display(
function: _F,
*,
boolean: bool | None = ...,
ordering: str | Combinable | BaseExpression | None = ...,
description: _StrOrPromise | None = ...,
empty_value: None = ...,
) -> _F: ...
@overload
def display(
function: Callable[[_M], Any] | None = ...,
function: _F,
*,
boolean: None = ...,
ordering: str | Combinable | BaseExpression | None = ...,
description: _StrOrPromise | None = ...,
empty_value: str | None = ...,
) -> _F: ...
@overload
def display(
function: None = None,
*,
boolean: bool | None = ...,
ordering: str | Combinable | BaseExpression | None = ...,
description: _StrOrPromise | None = ...,
empty_value: None = ...,
) -> Callable[[_F], _F]: ...
@overload
def display(
*,
boolean: None = ...,
ordering: str | Combinable | BaseExpression | None = ...,
description: _StrOrPromise | None = ...,
empty_value: str | None = ...,
) -> Callable[[_T], _T]: ...
def register(*models: type[Model], site: Any | None = ...) -> Callable[[_T], _T]: ...
) -> Callable[[_F], _F]: ...
def register(
*models: type[Model], site: AdminSite | None = ...
) -> Callable[[type[_ModelAdmin]], type[_ModelAdmin]]: ...
2 changes: 1 addition & 1 deletion django-stubs/contrib/admin/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class LogEntry(models.Model):
action_flag = models.PositiveSmallIntegerField()
change_message = models.TextField(blank=True)

objects: ClassVar[LogEntryManager[Self]] # type: ignore[assignment]
objects: ClassVar[LogEntryManager[Self]] # pyright: ignore[reportIncompatibleVariableOverride]

def is_addition(self) -> bool: ...
def is_change(self) -> bool: ...
Expand Down
6 changes: 3 additions & 3 deletions django-stubs/contrib/auth/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class PermissionManager(models.Manager[_PermissionT]):

class Permission(models.Model):
content_type_id: int
objects: ClassVar[PermissionManager[Self]] # type: ignore[assignment]
objects: ClassVar[PermissionManager[Self]] # pyright: ignore[reportIncompatibleVariableOverride]

name = models.CharField(max_length=255)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
Expand All @@ -39,7 +39,7 @@ class GroupManager(models.Manager[_GroupT]):
def get_by_natural_key(self, name: str) -> _GroupT: ...

class Group(models.Model):
objects: ClassVar[GroupManager[Self]] # type: ignore[assignment]
objects: ClassVar[GroupManager[Self]] # pyright: ignore[reportIncompatibleVariableOverride]

name = models.CharField(max_length=150)
permissions = models.ManyToManyField[Permission, Any](Permission)
Expand Down Expand Up @@ -121,7 +121,7 @@ class AbstractUser(AbstractBaseUser, PermissionsMixin):
self, subject: _StrOrPromise, message: _StrOrPromise, from_email: str | None = ..., **kwargs: Any
) -> None: ...

objects: ClassVar[UserManager[Self]] # type: ignore[assignment]
objects: ClassVar[UserManager[Self]] # pyright: ignore[reportIncompatibleVariableOverride]

class User(AbstractUser): ...

Expand Down
2 changes: 1 addition & 1 deletion django-stubs/contrib/sessions/base_session.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class BaseSessionManager(models.Manager[_SessionT]):
def save(self, session_key: str, session_dict: dict[str, int], expire_date: datetime) -> _SessionT: ...

class AbstractBaseSession(models.Model):
objects: ClassVar[BaseSessionManager[Self]] # type: ignore[assignment]
objects: ClassVar[BaseSessionManager[Self]] # pyright: ignore[reportIncompatibleVariableOverride]

class Meta:
abstract: ClassVar[bool]
Expand Down
2 changes: 1 addition & 1 deletion django-stubs/contrib/sessions/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ _T = TypeVar("_T", bound=AbstractBaseSession)
class SessionManager(BaseSessionManager[_T]): ...

class Session(AbstractBaseSession):
objects: ClassVar[SessionManager[Self]] # type: ignore[assignment]
objects: ClassVar[SessionManager[Self]] # pyright: ignore[reportIncompatibleVariableOverride]

@classmethod
def get_session_store_class(cls) -> type[SessionStore]: ...
2 changes: 1 addition & 1 deletion django-stubs/contrib/sites/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class SiteManager(models.Manager[_SiteT]):
def get_by_natural_key(self, domain: str) -> _SiteT: ...

class Site(models.Model):
objects: ClassVar[SiteManager[Self]] # type: ignore[assignment]
objects: ClassVar[SiteManager[Self]] # pyright: ignore[reportIncompatibleVariableOverride]

domain = models.CharField(max_length=100)
name = models.CharField(max_length=50)
Expand Down
4 changes: 2 additions & 2 deletions django-stubs/core/serializers/xml_serializer.pyi
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import Any
from xml.sax.expatreader import ExpatParser as _ExpatParser # type: ignore[import-not-found]
from xml.sax.expatreader import ExpatParser as _ExpatParser

from django.core.serializers import base as base

Expand All @@ -26,7 +26,7 @@ class Deserializer(base.Deserializer):

def getInnerText(node: Any) -> Any: ...

class DefusedExpatParser(_ExpatParser): # type: ignore [misc, no-any-unimported]
class DefusedExpatParser(_ExpatParser):
def __init__(self, *args: Any, **kwargs: Any) -> None: ...
def start_doctype_decl(self, name: Any, sysid: Any, pubid: Any, has_internal_subset: Any) -> None: ...
def entity_decl(
Expand Down
115 changes: 102 additions & 13 deletions django-stubs/db/models/__init__.pyi
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.db.models import functions as functions
from django.core.exceptions import ObjectDoesNotExist as ObjectDoesNotExist

from . import lookups as lookups
from . import signals as signals
Expand Down Expand Up @@ -29,9 +29,6 @@ from .enums import Choices as Choices
from .enums import IntegerChoices as IntegerChoices
from .enums import TextChoices as TextChoices
from .expressions import Case as Case
from .expressions import Col as Col
from .expressions import Combinable as Combinable
from .expressions import CombinedExpression as CombinedExpression
from .expressions import Exists as Exists
from .expressions import Expression as Expression
from .expressions import ExpressionList as ExpressionList
Expand All @@ -40,16 +37,14 @@ from .expressions import F as F
from .expressions import Func as Func
from .expressions import OrderBy as OrderBy
from .expressions import OuterRef as OuterRef
from .expressions import Random as Random
from .expressions import RawSQL as RawSQL
from .expressions import Ref as Ref
from .expressions import RowRange as RowRange
from .expressions import Subquery as Subquery
from .expressions import Value as Value
from .expressions import ValueRange as ValueRange
from .expressions import When as When
from .expressions import Window as Window
from .expressions import WindowFrame as WindowFrame
from .fields import BLANK_CHOICE_DASH as BLANK_CHOICE_DASH
from .fields import NOT_PROVIDED as NOT_PROVIDED
from .fields import AutoField as AutoField
from .fields import BigAutoField as BigAutoField
Expand All @@ -63,7 +58,6 @@ from .fields import DecimalField as DecimalField
from .fields import DurationField as DurationField
from .fields import EmailField as EmailField
from .fields import Field as Field
from .fields import FieldDoesNotExist as FieldDoesNotExist
from .fields import FilePathField as FilePathField
from .fields import FloatField as FloatField
from .fields import GenericIPAddressField as GenericIPAddressField
Expand All @@ -79,9 +73,7 @@ from .fields import TextField as TextField
from .fields import TimeField as TimeField
from .fields import URLField as URLField
from .fields import UUIDField as UUIDField
from .fields.composite import CompositePrimaryKey as CompositePrimaryKey
from .fields.files import FieldFile as FieldFile
from .fields.files import FileDescriptor as FileDescriptor
from .fields.composite import CompositePrimaryKey
from .fields.files import FileField as FileField
from .fields.files import ImageField as ImageField
from .fields.generated import GeneratedField as GeneratedField
Expand All @@ -98,11 +90,108 @@ from .fields.related import OneToOneRel as OneToOneRel
from .indexes import Index as Index
from .lookups import Lookup as Lookup
from .lookups import Transform as Transform
from .manager import BaseManager as BaseManager
from .manager import Manager as Manager
from .query import Prefetch as Prefetch
from .query import QuerySet as QuerySet
from .query import RawQuerySet as RawQuerySet
from .query import prefetch_related_objects as prefetch_related_objects
from .query_utils import FilteredRelation as FilteredRelation
from .query_utils import Q as Q

__all__ = [
"BLANK_CHOICE_DASH",
"CASCADE",
"DO_NOTHING",
"NOT_PROVIDED",
"PROTECT",
"RESTRICT",
"SET",
"SET_DEFAULT",
"SET_NULL",
"Aggregate",
"AutoField",
"Avg",
"BaseConstraint",
"BigAutoField",
"BigIntegerField",
"BinaryField",
"BooleanField",
"Case",
"CharField",
"CheckConstraint",
"Choices",
"CompositePrimaryKey",
"Count",
"DateField",
"DateTimeField",
"DecimalField",
"Deferrable",
"DurationField",
"EmailField",
"Exists",
"Expression",
"ExpressionList",
"ExpressionWrapper",
"F",
"Field",
"FileField",
"FilePathField",
"FilteredRelation",
"FloatField",
"ForeignKey",
"ForeignObject",
"ForeignObjectRel",
"Func",
"GeneratedField",
"GenericIPAddressField",
"IPAddressField",
"ImageField",
"Index",
"IntegerChoices",
"IntegerField",
"JSONField",
"Lookup",
"Manager",
"ManyToManyField",
"ManyToManyRel",
"ManyToOneRel",
"Max",
"Min",
"Model",
"ObjectDoesNotExist",
"OneToOneField",
"OneToOneRel",
"OrderBy",
"OrderWrt",
"OuterRef",
"PositiveBigIntegerField",
"PositiveIntegerField",
"PositiveSmallIntegerField",
"Prefetch",
"ProtectedError",
"Q",
"QuerySet",
"RestrictedError",
"RowRange",
"SlugField",
"SmallAutoField",
"SmallIntegerField",
"StdDev",
"StringAgg",
"Subquery",
"Sum",
"TextChoices",
"TextField",
"TimeField",
"Transform",
"URLField",
"UUIDField",
"UniqueConstraint",
"Value",
"ValueRange",
"Variance",
"When",
"Window",
"WindowFrame",
"prefetch_related_objects",
"signals",
]
6 changes: 3 additions & 3 deletions django-stubs/db/models/enums.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@ class ChoicesMeta(enum.EnumMeta):

ChoicesType: TypeAlias = ChoicesMeta

class Choices(enum.Enum, metaclass=ChoicesMeta):
class Choices(enum.Enum, metaclass=ChoicesMeta): # type: ignore[misc]
def __str__(self) -> Any: ...
@property
def label(self) -> _StrOrPromise: ...
@property
def value(self) -> Any: ...

class IntegerChoices(int, Choices):
class IntegerChoices(int, Choices): # type: ignore[misc]
@property
def value(self) -> int: ...

class TextChoices(str, Choices):
class TextChoices(str, Choices): # type: ignore[misc]
@property
def value(self) -> str: ...
4 changes: 2 additions & 2 deletions django-stubs/db/models/fields/generated.pyi
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from collections.abc import Iterable
from typing import Any, Literal, TypeVar, overload

from django.db.models import Combinable, Expression, ForeignObjectRel
from django.db.models.expressions import Col
from django.db.models import Expression, ForeignObjectRel
from django.db.models.expressions import Col, Combinable
from django.utils.functional import _StrOrPromise
from typing_extensions import Never

Expand Down
Loading
Loading