Skip to content

Commit 6442aee

Browse files
Update function signatures for django.db.models.sql.Query class (#2253)
* Update function signatures for django.db.models.sql.Query class * Update django-stubs/db/models/sql/query.pyi --------- Co-authored-by: sobolevn <mail@sobolevn.me>
1 parent d64f1cd commit 6442aee

File tree

2 files changed

+41
-77
lines changed

2 files changed

+41
-77
lines changed

django-stubs/db/models/sql/query.pyi

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
import collections
22
from collections import namedtuple
3-
from collections.abc import Callable, Iterable, Iterator, Sequence
3+
from collections.abc import Iterable, Iterator, Sequence
44
from typing import Any, Literal
55

6-
from django.db.backends.base.base import BaseDatabaseWrapper
76
from django.db.backends.utils import CursorWrapper
87
from django.db.models import Field, FilteredRelation, Model, Q
98
from django.db.models.expressions import BaseExpression, Combinable, Expression, OrderBy
109
from django.db.models.lookups import Lookup, Transform
1110
from django.db.models.options import Options
1211
from django.db.models.query_utils import PathInfo
13-
from django.db.models.sql.compiler import SQLCompiler
1412
from django.db.models.sql.datastructures import BaseTable, Join
1513
from django.db.models.sql.where import WhereNode
1614
from django.utils.functional import cached_property
@@ -41,6 +39,7 @@ class Query(BaseExpression):
4139
alias_prefix: str
4240
subq_aliases: frozenset[Any]
4341
compiler: str
42+
base_table_class: type[BaseTable]
4443
model: type[Model] | None
4544
alias_refcount: dict[str, int]
4645
alias_map: dict[str, BaseTable | Join]
@@ -65,6 +64,7 @@ class Query(BaseExpression):
6564
select_for_no_key_update: bool
6665
select_related: dict[str, Any] | bool
6766
max_depth: int
67+
join_class: type[Join]
6868
values_select: tuple
6969
annotation_select_mask: list[str] | None
7070
combinator: str | None
@@ -81,51 +81,73 @@ class Query(BaseExpression):
8181
low_mark: int
8282
extra: dict[str, Any]
8383
annotations: dict[str, Expression]
84-
def __init__(self, model: type[Model] | None, where: type[WhereNode] = ..., alias_cols: bool = ...) -> None: ...
84+
empty_result_set_value: Any | None
85+
explain_info: Any | None
86+
def __init__(self, model: type[Model] | None, alias_cols: bool = True) -> None: ...
8587
@property
8688
def output_field(self) -> Field: ...
8789
@property
8890
def has_select_fields(self) -> bool: ...
8991
@cached_property
9092
def base_table(self) -> str: ...
93+
def add_annotation(self, annotation: Any, alias: str, select: bool = True) -> None: ...
9194
def sql_with_params(self) -> tuple[str, tuple]: ...
9295
def __deepcopy__(self, memo: dict[int, Any]) -> Query: ...
93-
def get_compiler(self, using: str | None = ..., connection: BaseDatabaseWrapper | None = ...) -> SQLCompiler: ...
96+
def get_compiler(
97+
self, using: str | None = None, connection: Any | None = None, elide_empty: bool = True
98+
) -> Any: ...
99+
def join_parent_model(self, opts: Any, model: Any | None, alias: str, seen: dict[Any, str]) -> str: ...
100+
def names_to_path(
101+
self, names: list[str], opts: Any, allow_many: bool = True, fail_on_missing: bool = False
102+
) -> tuple[list[Any], Any, tuple[Any, ...], list[str]]: ...
94103
def get_meta(self) -> Options: ...
95104
def clone(self) -> Query: ...
96105
def chain(self, klass: type[Query] | None = ...) -> Query: ...
97106
def get_count(self, using: str) -> int: ...
107+
def get_group_by_cols(self, wrapper: Any | None = None) -> list[Any]: ...
98108
def has_filters(self) -> WhereNode: ...
109+
def get_external_cols(self) -> list[Any]: ...
110+
def exists(self, limit: bool = True) -> Any: ...
99111
def has_results(self, using: str) -> bool: ...
100112
def explain(self, using: str, format: str | None = ..., **options: Any) -> str: ...
101113
def combine(self, rhs: Query, connector: str) -> None: ...
102-
def deferred_to_data(self, target: dict[Any, Any], callback: Callable) -> None: ...
103114
def ref_alias(self, alias: str) -> None: ...
104115
def unref_alias(self, alias: str, amount: int = ...) -> None: ...
105116
def promote_joins(self, aliases: Iterable[str]) -> None: ...
106117
def demote_joins(self, aliases: Iterable[str]) -> None: ...
107118
def reset_refcounts(self, to_counts: dict[str, int]) -> None: ...
119+
def check_alias(self, alias: str) -> None: ...
120+
def check_related_objects(self, field: Any, value: Any, opts: Any) -> None: ...
121+
def check_query_object_type(self, value: Any, opts: Any, field: Any) -> None: ...
108122
def change_aliases(self, change_map: dict[str | None, str]) -> None: ...
109-
def bump_prefix(self, outer_query: Query) -> None: ...
123+
def bump_prefix(self, other_query: Query, exclude: Any | None = None) -> None: ...
110124
def get_initial_alias(self) -> str: ...
111125
def count_active_tables(self) -> int: ...
112126
def resolve_expression(self, query: Query, *args: Any, **kwargs: Any) -> Query: ... # type: ignore[override]
113127
def resolve_lookup_value(
114128
self, value: Any, can_reuse: set[str] | None, allow_joins: bool, summarize: bool = False
115129
) -> Any: ...
116-
def solve_lookup_type(self, lookup: str) -> tuple[Sequence[str], Sequence[str], Expression | Literal[False]]: ...
130+
def solve_lookup_type(
131+
self, lookup: str, summarize: bool = False
132+
) -> tuple[Sequence[str], Sequence[str], Expression | Literal[False]]: ...
133+
def table_alias(
134+
self, table_name: str, create: bool = False, filtered_relation: Any | None = None
135+
) -> tuple[str, bool]: ...
136+
def get_aggregation(self, using: Any, aggregate_exprs: dict[str, Any]) -> dict[str, Any]: ...
117137
def build_filter(
118138
self,
119139
filter_expr: Q | Expression | dict[str, str] | tuple[str, Any],
120-
branch_negated: bool = ...,
121-
current_negated: bool = ...,
122-
can_reuse: set[str] | None = ...,
123-
allow_joins: bool = ...,
124-
split_subq: bool = ...,
125-
check_filterable: bool = ...,
126-
update_join_types: bool = ...,
140+
branch_negated: bool = False,
141+
current_negated: bool = False,
142+
can_reuse: set[str] | None = None,
143+
allow_joins: bool = True,
144+
split_subq: bool = True,
145+
check_filterable: bool = True,
146+
summarize: bool = False,
147+
update_join_types: bool = True,
127148
) -> tuple[WhereNode, Iterable[str]]: ...
128-
def add_filter(self, filter_clause: tuple[str, Any]) -> None: ...
149+
def add_select_col(self, col: Any, name: str) -> None: ...
150+
def add_filter(self, filter_lhs: tuple[str, Any], filter_rhs: tuple[str, Any]) -> None: ...
129151
def add_q(self, q_object: Q) -> None: ...
130152
def build_where(self, filter_expr: Q | Expression | dict[str, str] | tuple[str, Any]) -> WhereNode: ...
131153
def add_filtered_relation(self, filtered_relation: FilteredRelation, alias: str) -> None: ...
@@ -163,7 +185,8 @@ class Query(BaseExpression):
163185
def add_distinct_fields(self, *field_names: Any) -> None: ...
164186
def add_fields(self, field_names: Iterable[str], allow_m2m: bool = ...) -> None: ...
165187
def add_ordering(self, *ordering: str | OrderBy) -> None: ...
166-
def clear_ordering(self, force_empty: bool) -> None: ...
188+
def clear_where(self) -> None: ...
189+
def clear_ordering(self, force: bool = False, clear_default: bool = True) -> None: ...
167190
def set_group_by(self, allow_aliases: bool = ...) -> None: ...
168191
def add_select_related(self, fields: Iterable[str]) -> None: ...
169192
def add_extra(
@@ -178,10 +201,7 @@ class Query(BaseExpression):
178201
def clear_deferred_loading(self) -> None: ...
179202
def add_deferred_loading(self, field_names: Iterable[str]) -> None: ...
180203
def add_immediate_loading(self, field_names: Iterable[str]) -> None: ...
181-
def get_loaded_field_names(self) -> dict[type[Model], set[str]]: ...
182-
def get_loaded_field_names_cb(
183-
self, target: dict[type[Model], set[str]], model: type[Model], fields: set[Field]
184-
) -> None: ...
204+
def get_select_mask(self) -> dict[str, Any]: ...
185205
def set_annotation_mask(self, names: Iterable[str] | None) -> None: ...
186206
def append_annotation_mask(self, names: Iterable[str]) -> None: ...
187207
def set_extra_mask(self, names: Iterable[str] | None) -> None: ...

scripts/stubtest/allowlist_todo.txt

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,34 +1164,6 @@ django.db.models.sql.AND
11641164
django.db.models.sql.AggregateQuery.__init__
11651165
django.db.models.sql.InsertQuery.__init__
11661166
django.db.models.sql.OR
1167-
django.db.models.sql.Query.__init__
1168-
django.db.models.sql.Query.add_annotation
1169-
django.db.models.sql.Query.add_filter
1170-
django.db.models.sql.Query.add_select_col
1171-
django.db.models.sql.Query.base_table_class
1172-
django.db.models.sql.Query.build_filter
1173-
django.db.models.sql.Query.bump_prefix
1174-
django.db.models.sql.Query.check_alias
1175-
django.db.models.sql.Query.check_query_object_type
1176-
django.db.models.sql.Query.check_related_objects
1177-
django.db.models.sql.Query.clear_ordering
1178-
django.db.models.sql.Query.clear_where
1179-
django.db.models.sql.Query.deferred_to_data
1180-
django.db.models.sql.Query.empty_result_set_value
1181-
django.db.models.sql.Query.exists
1182-
django.db.models.sql.Query.explain_info
1183-
django.db.models.sql.Query.get_aggregation
1184-
django.db.models.sql.Query.get_compiler
1185-
django.db.models.sql.Query.get_external_cols
1186-
django.db.models.sql.Query.get_group_by_cols
1187-
django.db.models.sql.Query.get_loaded_field_names
1188-
django.db.models.sql.Query.get_loaded_field_names_cb
1189-
django.db.models.sql.Query.get_select_mask
1190-
django.db.models.sql.Query.join_class
1191-
django.db.models.sql.Query.join_parent_model
1192-
django.db.models.sql.Query.names_to_path
1193-
django.db.models.sql.Query.solve_lookup_type
1194-
django.db.models.sql.Query.table_alias
11951167
django.db.models.sql.XOR
11961168
django.db.models.sql.compiler.SQLCompiler.__init__
11971169
django.db.models.sql.compiler.SQLCompiler.deferred_to_columns
@@ -1200,34 +1172,6 @@ django.db.models.sql.compiler.SQLCompiler.get_qualify_sql
12001172
django.db.models.sql.compiler.SQLCompiler.get_related_selections
12011173
django.db.models.sql.datastructures.BaseTable.identity
12021174
django.db.models.sql.datastructures.Join.identity
1203-
django.db.models.sql.query.Query.__init__
1204-
django.db.models.sql.query.Query.add_annotation
1205-
django.db.models.sql.query.Query.add_filter
1206-
django.db.models.sql.query.Query.add_select_col
1207-
django.db.models.sql.query.Query.base_table_class
1208-
django.db.models.sql.query.Query.build_filter
1209-
django.db.models.sql.query.Query.bump_prefix
1210-
django.db.models.sql.query.Query.check_alias
1211-
django.db.models.sql.query.Query.check_query_object_type
1212-
django.db.models.sql.query.Query.check_related_objects
1213-
django.db.models.sql.query.Query.clear_ordering
1214-
django.db.models.sql.query.Query.clear_where
1215-
django.db.models.sql.query.Query.deferred_to_data
1216-
django.db.models.sql.query.Query.empty_result_set_value
1217-
django.db.models.sql.query.Query.exists
1218-
django.db.models.sql.query.Query.explain_info
1219-
django.db.models.sql.query.Query.get_aggregation
1220-
django.db.models.sql.query.Query.get_compiler
1221-
django.db.models.sql.query.Query.get_external_cols
1222-
django.db.models.sql.query.Query.get_group_by_cols
1223-
django.db.models.sql.query.Query.get_loaded_field_names
1224-
django.db.models.sql.query.Query.get_loaded_field_names_cb
1225-
django.db.models.sql.query.Query.get_select_mask
1226-
django.db.models.sql.query.Query.join_class
1227-
django.db.models.sql.query.Query.join_parent_model
1228-
django.db.models.sql.query.Query.names_to_path
1229-
django.db.models.sql.query.Query.solve_lookup_type
1230-
django.db.models.sql.query.Query.table_alias
12311175
django.db.models.sql.subqueries.AggregateQuery.__init__
12321176
django.db.models.sql.subqueries.InsertQuery.__init__
12331177
django.db.models.sql.where.ExtraWhere.contains_over_clause

0 commit comments

Comments
 (0)