Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

django.core.management stub update #1787

Merged
merged 6 commits into from
Oct 21, 2023
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
4 changes: 3 additions & 1 deletion django-stubs/core/management/color.pyi
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
HAS_COLORAMA: bool

def supports_color() -> bool: ...

class Style:
# set by make_style
# set by make_style. Method names are keys in django.utils.termcolors.PALETTES
def ERROR(self, text: str) -> str: ...
def SUCCESS(self, text: str) -> str: ...
def WARNING(self, text: str) -> str: ...
Expand Down
3 changes: 3 additions & 0 deletions django-stubs/core/management/commands/dumpdata.pyi
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from django.core.management.base import BaseCommand

has_bz2: bool
has_lzma: bool

class ProxyModelWarning(Warning): ...
class Command(BaseCommand): ...
3 changes: 3 additions & 0 deletions django-stubs/core/management/commands/loaddata.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ from django.apps.config import AppConfig
from django.core.management.base import BaseCommand
from django.db.models.base import Model

has_bz2: bool
has_lzma: bool

READ_STDIN: str

class Command(BaseCommand):
Expand Down
1 change: 1 addition & 0 deletions django-stubs/core/management/templates.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ class TemplateCommand(BaseCommand):
def splitext(self, the_path: str) -> tuple[str, str]: ...
def extract(self, filename: str) -> str: ...
def is_url(self, template: str) -> bool: ...
def apply_umask(self, old_path: str, new_path: str) -> None: ...
def make_writeable(self, filename: str) -> None: ...
7 changes: 3 additions & 4 deletions django-stubs/core/paginator.pyi
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from collections.abc import Iterable, Iterator, Sequence, Sized
from typing import Generic, Protocol, TypeVar, overload
from typing import ClassVar, Generic, Protocol, TypeVar, overload

from typing_extensions import TypeAlias
from django.utils.functional import _StrPromise

class UnorderedObjectListWarning(RuntimeWarning): ...
class InvalidPage(Exception): ...
Expand All @@ -17,6 +17,7 @@ class _SupportsPagination(Protocol[_T], Sized, Iterable):
def __getitem__(self, __index: slice) -> _SupportsPagination[_T]: ...

class Paginator(Generic[_T]):
ELLIPSIS: ClassVar[_StrPromise]
object_list: _SupportsPagination[_T]
per_page: int
orphans: int
Expand All @@ -42,8 +43,6 @@ class Paginator(Generic[_T]):
self, number: int | float | str = ..., *, on_each_side: int = ..., on_ends: int = ...
) -> Iterator[str | int]: ...

QuerySetPaginator: TypeAlias = Paginator

class Page(Sequence[_T]):
object_list: _SupportsPagination[_T]
number: int
Expand Down
9 changes: 2 additions & 7 deletions django-stubs/core/serializers/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,10 @@ from typing import Any

from django.db.models.base import Model

from .base import DeserializationError as DeserializationError
from .base import DeserializedObject
from .base import Deserializer as Deserializer
from .base import M2MDeserializationError as M2MDeserializationError
from .base import SerializationError as SerializationError
from .base import Serializer as Serializer
from .base import DeserializedObject, Deserializer, Serializer
from .base import SerializerDoesNotExist as SerializerDoesNotExist

BUILTIN_SERIALIZERS: Any
BUILTIN_SERIALIZERS: dict[str, str]

class BadSerializer:
internal_use_only: bool
Expand Down
7 changes: 7 additions & 0 deletions django-stubs/core/serializers/base.pyi
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
from collections.abc import Collection, Iterable, Sequence
from typing import IO, Any

from _typeshed import ReadableBuffer
from django.db.models.base import Model
from django.db.models.fields import Field
from django.db.models.fields.related import ForeignKey, ManyToManyField

DEFER_FIELD: object

class PickleSerializer:
protocol: int
def __init__(self, protocol: int | None = ...) -> None: ...
def dumps(self, obj: Any) -> bytes: ...
def loads(self, data: ReadableBuffer) -> Any: ...

class SerializerDoesNotExist(KeyError): ...
class SerializationError(Exception): ...

Expand Down
2 changes: 2 additions & 0 deletions django-stubs/core/validators.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class URLValidator(RegexValidator):
tld_re: str
host_re: str
schemes: Sequence[str]
unsafe_chars: frozenset[str]
max_length: int
def __init__(self, schemes: Sequence[str] | None = ..., **kwargs: Any) -> None: ...
def __call__(self, value: str) -> None: ...
def deconstruct(obj) -> tuple[str, Sequence[Any], dict[str, Any]]: ...
Expand Down
20 changes: 20 additions & 0 deletions scripts/stubtest/allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ django.core.validators.EmailValidator.literal_regex
django.core.validators.EmailValidator.user_regex
django.core.validators.slug_re
django.core.validators.slug_unicode_re
django.core.validators.URLValidator.regex
django.core.management.commands.makemessages.plural_forms_re
django.http.request.host_validation_re
django.middleware.csrf.invalid_token_chars_re
Expand Down Expand Up @@ -105,6 +106,25 @@ django.db.migrations.operations.models.AlterTogetherOptionOperation.option_name
django.views.generic.detail.SingleObjectMixin.model
django.views.generic.edit.BaseDeleteView.form_class

# Dynamically added via django.core.management.color.make_style
django.core.management.color.Style.ERROR
django.core.management.color.Style.ERROR_OUTPUT
django.core.management.color.Style.HTTP_BAD_REQUEST
django.core.management.color.Style.HTTP_INFO
django.core.management.color.Style.HTTP_NOT_FOUND
django.core.management.color.Style.HTTP_NOT_MODIFIED
django.core.management.color.Style.HTTP_REDIRECT
django.core.management.color.Style.HTTP_SERVER_ERROR
django.core.management.color.Style.HTTP_SUCCESS
django.core.management.color.Style.MIGRATE_HEADING
django.core.management.color.Style.MIGRATE_LABEL
django.core.management.color.Style.NOTICE
django.core.management.color.Style.SQL_COLTYPE
django.core.management.color.Style.SQL_FIELD
django.core.management.color.Style.SQL_KEYWORD
django.core.management.color.Style.SQL_TABLE
django.core.management.color.Style.SUCCESS
django.core.management.color.Style.WARNING
# `error: <...> is not present at runtime`
# This happens often for variables removed in later django version.
# We still keep them in stubs to be a bit more backward compatible.
Expand Down
35 changes: 0 additions & 35 deletions scripts/stubtest/allowlist_todo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -897,30 +897,9 @@ django.core.management.BaseCommand.suppressed_base_arguments
django.core.management.base.ALL_CHECKS
django.core.management.base.BaseCommand.add_base_argument
django.core.management.base.BaseCommand.suppressed_base_arguments
django.core.management.color.HAS_COLORAMA
django.core.management.color.Style.ERROR
django.core.management.color.Style.ERROR_OUTPUT
django.core.management.color.Style.HTTP_BAD_REQUEST
django.core.management.color.Style.HTTP_INFO
django.core.management.color.Style.HTTP_NOT_FOUND
django.core.management.color.Style.HTTP_NOT_MODIFIED
django.core.management.color.Style.HTTP_REDIRECT
django.core.management.color.Style.HTTP_SERVER_ERROR
django.core.management.color.Style.HTTP_SUCCESS
django.core.management.color.Style.MIGRATE_HEADING
django.core.management.color.Style.MIGRATE_LABEL
django.core.management.color.Style.NOTICE
django.core.management.color.Style.SQL_COLTYPE
django.core.management.color.Style.SQL_FIELD
django.core.management.color.Style.SQL_KEYWORD
django.core.management.color.Style.SQL_TABLE
django.core.management.color.Style.SUCCESS
django.core.management.color.Style.WARNING
django.core.management.commands.compilemessages.Command.handle
django.core.management.commands.dbshell.Command.handle
django.core.management.commands.diffsettings.Command.handle
django.core.management.commands.dumpdata.has_bz2
django.core.management.commands.dumpdata.has_lzma
django.core.management.commands.flush.Command.handle
django.core.management.commands.flush.Command.stealth_options
django.core.management.commands.inspectdb.Command.get_meta
Expand All @@ -932,8 +911,6 @@ django.core.management.commands.loaddata.Command.get_fixture_name_and_dirs
django.core.management.commands.loaddata.Command.get_targets
django.core.management.commands.loaddata.Command.reset_sequences
django.core.management.commands.loaddata.Command.save_obj
django.core.management.commands.loaddata.has_bz2
django.core.management.commands.loaddata.has_lzma
django.core.management.commands.makemessages.BuildFile.is_templatized
django.core.management.commands.makemessages.BuildFile.path
django.core.management.commands.makemessages.BuildFile.work_path
Expand All @@ -960,20 +937,11 @@ django.core.management.commands.sqlflush.Command.handle
django.core.management.commands.squashmigrations.Command.handle
django.core.management.commands.startapp.Command.handle
django.core.management.commands.startproject.Command.handle
django.core.management.templates.TemplateCommand.apply_umask
django.core.management.utils.find_formatters
django.core.management.utils.run_formatters
django.core.management.utils.sentinel
django.core.paginator.Paginator.ELLIPSIS
django.core.paginator.Paginator.count
django.core.paginator.Paginator.num_pages
django.core.paginator.QuerySetPaginator
UnknownPlatypus marked this conversation as resolved.
Show resolved Hide resolved
django.core.serializers.DeserializationError
django.core.serializers.Deserializer
django.core.serializers.M2MDeserializationError
django.core.serializers.SerializationError
django.core.serializers.Serializer
django.core.serializers.base.PickleSerializer
django.core.servers.basehttp.ServerHandler.__init__
django.core.servers.basehttp.ThreadedWSGIServer.__init__
django.core.signing.BASE62_ALPHABET
Expand All @@ -995,9 +963,6 @@ django.core.validators.ProhibitNullCharactersValidator.__new__
django.core.validators.RegexValidator.__new__
django.core.validators.StepValueValidator.__new__
django.core.validators.URLValidator.__new__
django.core.validators.URLValidator.regex
django.core.validators.URLValidator.unsafe_chars
django.core.validators.URLValidator.max_length
django.db.backends.base.base.BaseDatabaseWrapper.SchemaEditorClass
django.db.backends.base.base.BaseDatabaseWrapper.client_class
django.db.backends.base.base.BaseDatabaseWrapper.close_if_health_check_failed
Expand Down