Skip to content
Open
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
12 changes: 7 additions & 5 deletions django-stubs/db/backends/base/base.pyi
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from collections.abc import Callable
from collections import deque
from collections.abc import Callable, Iterable
from contextlib import AbstractContextManager
from datetime import tzinfo
from logging import Logger
Expand All @@ -13,6 +14,7 @@ from django.db.backends.base.schema import BaseDatabaseSchemaEditor
from django.db.backends.base.validation import BaseDatabaseValidation
from django.db.backends.utils import CursorDebugWrapper, CursorWrapper
from django.db.transaction import Atomic
from django.db.utils import DatabaseErrorWrapper
from django.utils.functional import cached_property
from typing_extensions import Self

Expand Down Expand Up @@ -42,7 +44,7 @@ class BaseDatabaseWrapper:
connection: Any
settings_dict: dict[str, Any]
alias: str
queries_log: Any
queries_log: deque[dict[str, str]]
force_debug_cursor: bool
autocommit: bool
in_atomic_block: bool
Expand Down Expand Up @@ -78,7 +80,7 @@ class BaseDatabaseWrapper:
def get_connection_params(self) -> dict[str, Any]: ...
def get_new_connection(self, conn_params: Any) -> Any: ...
def init_connection_state(self) -> None: ...
def create_cursor(self, name: Any | None = None) -> Any: ...
def create_cursor(self, name: str | None = None) -> Any: ...
def connect(self) -> None: ...
def check_settings(self) -> None: ...
def ensure_connection(self) -> None: ...
Expand All @@ -101,7 +103,7 @@ class BaseDatabaseWrapper:
def constraint_checks_disabled(self) -> AbstractContextManager[None]: ...
def disable_constraint_checking(self) -> bool: ...
def enable_constraint_checking(self) -> None: ...
def check_constraints(self, table_names: Any | None = None) -> None: ...
def check_constraints(self, table_names: Iterable[str] | None = None) -> None: ...
def is_usable(self) -> bool: ...
def close_if_health_check_failed(self) -> None: ...
def close_if_unusable_or_obsolete(self) -> None: ...
Expand All @@ -112,7 +114,7 @@ class BaseDatabaseWrapper:
def validate_thread_sharing(self) -> None: ...
def prepare_database(self) -> None: ...
@cached_property
def wrap_database_errors(self) -> Any: ...
def wrap_database_errors(self) -> DatabaseErrorWrapper: ...
def chunked_cursor(self) -> CursorWrapper: ...
def make_debug_cursor(self, cursor: CursorWrapper) -> CursorDebugWrapper: ...
def make_cursor(self, cursor: CursorWrapper) -> CursorWrapper: ...
Expand Down
39 changes: 31 additions & 8 deletions django-stubs/db/backends/base/introspection.pyi
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from collections.abc import Iterable
from typing import Any, NamedTuple
from typing import Any, Literal, NamedTuple, type_check_only

from django.db.backends.base.base import BaseDatabaseWrapper
from django.db.backends.utils import CursorWrapper
from django.db.models.base import Model
from django.db.models.fields import Field
from typing_extensions import NotRequired, TypedDict

class TableInfo(NamedTuple):
name: str
Expand All @@ -20,6 +22,25 @@ class FieldInfo(NamedTuple):
default: str
collation: str

@type_check_only
class _ConstraintDict(TypedDict):
columns: list[str]
primary_key: bool
unique: bool
foreign_key: tuple[str, str] | None
check: bool
index: bool
orders: NotRequired[list[Literal["ASC", "DESC"]]]
type: NotRequired[str]
definition: NotRequired[str | None]
options: NotRequired[dict[str, str] | None]

@type_check_only
class _SequenceDict(TypedDict):
table: str
column: str
name: NotRequired[str]

class BaseDatabaseIntrospection:
data_types_reverse: Any
connection: BaseDatabaseWrapper
Expand All @@ -28,14 +49,16 @@ class BaseDatabaseIntrospection:
def get_field_type(self, data_type: str, description: FieldInfo) -> str: ...
def identifier_converter(self, name: str) -> str: ...
def table_names(self, cursor: CursorWrapper | None = None, include_views: bool = False) -> list[str]: ...
def get_table_list(self, cursor: CursorWrapper | None) -> Any: ...
def get_table_description(self, cursor: CursorWrapper | None, table_name: str) -> Any: ...
def get_table_list(self, cursor: CursorWrapper) -> list[TableInfo]: ...
def get_table_description(self, cursor: CursorWrapper, table_name: str) -> list: ...
def get_migratable_models(self) -> Iterable[type[Model]]: ...
def django_table_names(self, only_existing: bool = False, include_views: bool = True) -> list[str]: ...
def installed_models(self, tables: list[str]) -> set[type[Model]]: ...
def sequence_list(self) -> list[dict[str, str]]: ...
def get_sequences(self, cursor: CursorWrapper | None, table_name: str, table_fields: Any = ()) -> Any: ...
def get_relations(self, cursor: CursorWrapper | None, table_name: str) -> dict[str, tuple[str, str]]: ...
def get_primary_key_column(self, cursor: CursorWrapper | None, table_name: str) -> str | None: ...
def get_primary_key_columns(self, cursor: CursorWrapper | None, table_name: str) -> list[str] | None: ...
def get_constraints(self, cursor: CursorWrapper | None, table_name: str) -> Any: ...
def get_sequences(
self, cursor: CursorWrapper, table_name: str, table_fields: Iterable[Field] = ()
) -> list[_SequenceDict]: ...
def get_relations(self, cursor: CursorWrapper, table_name: str) -> dict[str, tuple[str, str]]: ...
def get_primary_key_column(self, cursor: CursorWrapper, table_name: str) -> str | None: ...
def get_primary_key_columns(self, cursor: CursorWrapper, table_name: str) -> list[str] | None: ...
def get_constraints(self, cursor: CursorWrapper, table_name: str) -> dict[str, _ConstraintDict]: ...
4 changes: 2 additions & 2 deletions django-stubs/db/backends/base/operations.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,10 @@ class BaseDatabaseOperations:
def savepoint_rollback_sql(self, sid: str) -> str: ...
def set_time_zone_sql(self) -> str: ...
def sql_flush(
self, style: Any, tables: Sequence[str], *, reset_sequences: bool = False, allow_cascade: bool = False
self, style: Style, tables: Sequence[str], *, reset_sequences: bool = False, allow_cascade: bool = False
) -> list[str]: ...
def execute_sql_flush(self, sql_list: Iterable[str]) -> None: ...
def sequence_reset_by_name_sql(self, style: Style | None, sequences: list[Any]) -> list[Any]: ...
def sequence_reset_by_name_sql(self, style: Style, sequences: list[Any]) -> list[Any]: ...
def sequence_reset_sql(self, style: Style, model_list: Sequence[type[Model]]) -> list[Any]: ...
def start_transaction_sql(self) -> str: ...
def end_transaction_sql(self, success: bool = True) -> str: ...
Expand Down
3 changes: 2 additions & 1 deletion django-stubs/db/backends/mysql/operations.pyi
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from typing import Any

from django.core.management.color import Style
from django.db.backends.base.operations import BaseDatabaseOperations
from django.db.backends.mysql.base import DatabaseWrapper
from django.db.models.constants import OnConflict
Expand Down Expand Up @@ -37,7 +38,7 @@ class DatabaseOperations(BaseDatabaseOperations):
@override
def quote_name(self, name: str) -> Any: ...
@override
def sequence_reset_by_name_sql(self, style: Any, sequences: Any) -> Any: ...
def sequence_reset_by_name_sql(self, style: Style, sequences: Any) -> Any: ...
@override
def validate_autopk_value(self, value: Any) -> Any: ...
@override
Expand Down
5 changes: 3 additions & 2 deletions django-stubs/db/backends/oracle/operations.pyi
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from typing import Any

from django.core.management.color import Style
from django.db.backends.base.operations import BaseDatabaseOperations
from django.db.backends.oracle.base import DatabaseWrapper
from typing_extensions import override
Expand Down Expand Up @@ -66,9 +67,9 @@ class DatabaseOperations(BaseDatabaseOperations):
@override
def regex_lookup(self, lookup_type: str) -> str: ...
@override
def sequence_reset_by_name_sql(self, style: Any, sequences: Any) -> list[str]: ...
def sequence_reset_by_name_sql(self, style: Style, sequences: Any) -> list[str]: ...
@override
def sequence_reset_sql(self, style: Any, model_list: Any) -> list[str]: ...
def sequence_reset_sql(self, style: Style, model_list: Any) -> list[str]: ...
@override
def start_transaction_sql(self) -> str: ...
@override
Expand Down
Loading