Skip to content

Commit b8845f0

Browse files
committed
Improve database backend typing
1 parent 227d459 commit b8845f0

File tree

5 files changed

+21
-17
lines changed

5 files changed

+21
-17
lines changed

django-stubs/db/backends/base/base.pyi

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from collections.abc import Callable
1+
from collections import deque
2+
from collections.abc import Callable, Iterable
23
from contextlib import AbstractContextManager
34
from datetime import tzinfo
45
from logging import Logger
@@ -13,6 +14,7 @@ from django.db.backends.base.schema import BaseDatabaseSchemaEditor
1314
from django.db.backends.base.validation import BaseDatabaseValidation
1415
from django.db.backends.utils import CursorDebugWrapper, CursorWrapper
1516
from django.db.transaction import Atomic
17+
from django.db.utils import DatabaseErrorWrapper
1618
from django.utils.functional import cached_property
1719
from typing_extensions import Self
1820

@@ -42,7 +44,7 @@ class BaseDatabaseWrapper:
4244
connection: Any
4345
settings_dict: dict[str, Any]
4446
alias: str
45-
queries_log: Any
47+
queries_log: deque
4648
force_debug_cursor: bool
4749
autocommit: bool
4850
in_atomic_block: bool
@@ -78,7 +80,7 @@ class BaseDatabaseWrapper:
7880
def get_connection_params(self) -> dict[str, Any]: ...
7981
def get_new_connection(self, conn_params: Any) -> Any: ...
8082
def init_connection_state(self) -> None: ...
81-
def create_cursor(self, name: Any | None = None) -> Any: ...
83+
def create_cursor(self, name: str | None = None) -> Any: ...
8284
def connect(self) -> None: ...
8385
def check_settings(self) -> None: ...
8486
def ensure_connection(self) -> None: ...
@@ -101,7 +103,7 @@ class BaseDatabaseWrapper:
101103
def constraint_checks_disabled(self) -> AbstractContextManager[None]: ...
102104
def disable_constraint_checking(self) -> bool: ...
103105
def enable_constraint_checking(self) -> None: ...
104-
def check_constraints(self, table_names: Any | None = None) -> None: ...
106+
def check_constraints(self, table_names: Iterable[str] | None = None) -> None: ...
105107
def is_usable(self) -> bool: ...
106108
def close_if_health_check_failed(self) -> None: ...
107109
def close_if_unusable_or_obsolete(self) -> None: ...
@@ -112,7 +114,7 @@ class BaseDatabaseWrapper:
112114
def validate_thread_sharing(self) -> None: ...
113115
def prepare_database(self) -> None: ...
114116
@cached_property
115-
def wrap_database_errors(self) -> Any: ...
117+
def wrap_database_errors(self) -> DatabaseErrorWrapper: ...
116118
def chunked_cursor(self) -> CursorWrapper: ...
117119
def make_debug_cursor(self, cursor: CursorWrapper) -> CursorDebugWrapper: ...
118120
def make_cursor(self, cursor: CursorWrapper) -> CursorWrapper: ...

django-stubs/db/backends/base/introspection.pyi

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ class BaseDatabaseIntrospection:
2828
def get_field_type(self, data_type: str, description: FieldInfo) -> str: ...
2929
def identifier_converter(self, name: str) -> str: ...
3030
def table_names(self, cursor: CursorWrapper | None = None, include_views: bool = False) -> list[str]: ...
31-
def get_table_list(self, cursor: CursorWrapper | None) -> Any: ...
32-
def get_table_description(self, cursor: CursorWrapper | None, table_name: str) -> Any: ...
31+
def get_table_list(self, cursor: CursorWrapper) -> list: ...
32+
def get_table_description(self, cursor: CursorWrapper, table_name: str) -> list: ...
3333
def get_migratable_models(self) -> Iterable[type[Model]]: ...
3434
def django_table_names(self, only_existing: bool = False, include_views: bool = True) -> list[str]: ...
3535
def installed_models(self, tables: list[str]) -> set[type[Model]]: ...
3636
def sequence_list(self) -> list[dict[str, str]]: ...
37-
def get_sequences(self, cursor: CursorWrapper | None, table_name: str, table_fields: Any = ()) -> Any: ...
38-
def get_relations(self, cursor: CursorWrapper | None, table_name: str) -> dict[str, tuple[str, str]]: ...
39-
def get_primary_key_column(self, cursor: CursorWrapper | None, table_name: str) -> str | None: ...
40-
def get_primary_key_columns(self, cursor: CursorWrapper | None, table_name: str) -> list[str] | None: ...
41-
def get_constraints(self, cursor: CursorWrapper | None, table_name: str) -> Any: ...
37+
def get_sequences(self, cursor: CursorWrapper, table_name: str, table_fields: Iterable = ()) -> list[dict]: ...
38+
def get_relations(self, cursor: CursorWrapper, table_name: str) -> dict[str, tuple[str, str]]: ...
39+
def get_primary_key_column(self, cursor: CursorWrapper, table_name: str) -> str | None: ...
40+
def get_primary_key_columns(self, cursor: CursorWrapper, table_name: str) -> list[str] | None: ...
41+
def get_constraints(self, cursor: CursorWrapper, table_name: str) -> dict[str, dict]: ...

django-stubs/db/backends/base/operations.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ class BaseDatabaseOperations:
7171
def savepoint_rollback_sql(self, sid: str) -> str: ...
7272
def set_time_zone_sql(self) -> str: ...
7373
def sql_flush(
74-
self, style: Any, tables: Sequence[str], *, reset_sequences: bool = False, allow_cascade: bool = False
74+
self, style: Style, tables: Sequence[str], *, reset_sequences: bool = False, allow_cascade: bool = False
7575
) -> list[str]: ...
7676
def execute_sql_flush(self, sql_list: Iterable[str]) -> None: ...
77-
def sequence_reset_by_name_sql(self, style: Style | None, sequences: list[Any]) -> list[Any]: ...
77+
def sequence_reset_by_name_sql(self, style: Style, sequences: list[Any]) -> list[Any]: ...
7878
def sequence_reset_sql(self, style: Style, model_list: Sequence[type[Model]]) -> list[Any]: ...
7979
def start_transaction_sql(self) -> str: ...
8080
def end_transaction_sql(self, success: bool = True) -> str: ...

django-stubs/db/backends/mysql/operations.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Any
22

3+
from django.core.management.color import Style
34
from django.db.backends.base.operations import BaseDatabaseOperations
45
from django.db.backends.mysql.base import DatabaseWrapper
56
from django.db.models.constants import OnConflict
@@ -37,7 +38,7 @@ class DatabaseOperations(BaseDatabaseOperations):
3738
@override
3839
def quote_name(self, name: str) -> Any: ...
3940
@override
40-
def sequence_reset_by_name_sql(self, style: Any, sequences: Any) -> Any: ...
41+
def sequence_reset_by_name_sql(self, style: Style, sequences: Any) -> Any: ...
4142
@override
4243
def validate_autopk_value(self, value: Any) -> Any: ...
4344
@override

django-stubs/db/backends/oracle/operations.pyi

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Any
22

3+
from django.core.management.color import Style
34
from django.db.backends.base.operations import BaseDatabaseOperations
45
from django.db.backends.oracle.base import DatabaseWrapper
56
from typing_extensions import override
@@ -66,9 +67,9 @@ class DatabaseOperations(BaseDatabaseOperations):
6667
@override
6768
def regex_lookup(self, lookup_type: str) -> str: ...
6869
@override
69-
def sequence_reset_by_name_sql(self, style: Any, sequences: Any) -> list[str]: ...
70+
def sequence_reset_by_name_sql(self, style: Style, sequences: Any) -> list[str]: ...
7071
@override
71-
def sequence_reset_sql(self, style: Any, model_list: Any) -> list[str]: ...
72+
def sequence_reset_sql(self, style: Style, model_list: Any) -> list[str]: ...
7273
@override
7374
def start_transaction_sql(self) -> str: ...
7475
@override

0 commit comments

Comments
 (0)