Files
django-stubs/django-stubs/db/models/expressions.pyi
Marti Raudsepp 8f475fa0a6 Fill remaining missing hints with Any & disallow partial hints (#1206)
* Fill remaining missing hints with Any & disallow partial hints

* ModelFormatDict -> _ModelFormatDict

* Fixes

* Add __init__ return hints

* Add suppression
2022-10-31 14:33:59 +03:00

255 lines
9.3 KiB
Python

import datetime
from decimal import Decimal
from typing import Any, Callable, Dict, Iterable, Iterator, List, Optional, Sequence, Set, Tuple, Type, TypeVar, Union
from django.db.backends.base.base import BaseDatabaseWrapper
from django.db.models import Q
from django.db.models.fields import Field
from django.db.models.lookups import Lookup, Transform
from django.db.models.query import QuerySet
from django.db.models.sql.compiler import SQLCompiler, _AsSqlType
from django.db.models.sql.query import Query
from typing_extensions import Literal
class SQLiteNumericMixin:
def as_sqlite(self, compiler: SQLCompiler, connection: BaseDatabaseWrapper, **extra_context: Any) -> _AsSqlType: ...
_Self = TypeVar("_Self")
_Numeric = Union[float, Decimal]
class Combinable:
ADD: str = ...
SUB: str = ...
MUL: str = ...
DIV: str = ...
POW: str = ...
MOD: str = ...
BITAND: str = ...
BITOR: str = ...
BITLEFTSHIFT: str = ...
BITRIGHTSHIFT: str = ...
BITXOR: str = ...
def __neg__(self) -> CombinedExpression: ...
def __add__(self, other: Optional[Union[datetime.timedelta, Combinable, _Numeric, str]]) -> CombinedExpression: ...
def __sub__(self, other: Union[datetime.timedelta, Combinable, _Numeric]) -> CombinedExpression: ...
def __mul__(self, other: Union[datetime.timedelta, Combinable, _Numeric]) -> CombinedExpression: ...
def __truediv__(self, other: Union[Combinable, _Numeric]) -> CombinedExpression: ...
def __mod__(self, other: Union[int, Combinable]) -> CombinedExpression: ...
def __pow__(self, other: Union[_Numeric, Combinable]) -> CombinedExpression: ...
def __and__(self, other: Union[Combinable, Q]) -> Q: ...
def bitand(self, other: int) -> CombinedExpression: ...
def bitleftshift(self, other: int) -> CombinedExpression: ...
def bitrightshift(self, other: int) -> CombinedExpression: ...
def bitxor(self, other: int) -> CombinedExpression: ...
def __or__(self, other: Union[Combinable, Q]) -> Q: ...
def bitor(self, other: int) -> CombinedExpression: ...
def __radd__(self, other: Optional[Union[datetime.datetime, _Numeric, Combinable]]) -> CombinedExpression: ...
def __rsub__(self, other: Union[_Numeric, Combinable]) -> CombinedExpression: ...
def __rmul__(self, other: Union[_Numeric, Combinable]) -> CombinedExpression: ...
def __rtruediv__(self, other: Union[_Numeric, Combinable]) -> CombinedExpression: ...
def __rmod__(self, other: Union[int, Combinable]) -> CombinedExpression: ...
def __rpow__(self, other: Union[_Numeric, Combinable]) -> CombinedExpression: ...
def __rand__(self, other: Any) -> Combinable: ...
def __ror__(self, other: Any) -> Combinable: ...
_SelfB = TypeVar("_SelfB", bound="BaseExpression")
class BaseExpression:
is_summary: bool = ...
filterable: bool = ...
window_compatible: bool = ...
def __init__(self, output_field: Optional[Field] = ...) -> None: ...
def get_db_converters(self, connection: BaseDatabaseWrapper) -> List[Callable]: ...
def get_source_expressions(self) -> List[Any]: ...
def set_source_expressions(self, exprs: Sequence[Combinable]) -> None: ...
@property
def contains_aggregate(self) -> bool: ...
@property
def contains_over_clause(self) -> bool: ...
@property
def contains_column_references(self) -> bool: ...
def resolve_expression(
self: _SelfB,
query: Any = ...,
allow_joins: bool = ...,
reuse: Optional[Set[str]] = ...,
summarize: bool = ...,
for_save: bool = ...,
) -> _SelfB: ...
@property
def conditional(self) -> bool: ...
@property
def field(self) -> Field: ...
@property
def output_field(self) -> Field: ...
@property
def convert_value(self) -> Callable: ...
def get_lookup(self, lookup: str) -> Optional[Type[Lookup]]: ...
def get_transform(self, name: str) -> Optional[Type[Transform]]: ...
def relabeled_clone(self: _SelfB, change_map: Dict[Optional[str], str]) -> _SelfB: ...
def copy(self: _SelfB) -> _SelfB: ...
def get_group_by_cols(self: _SelfB, alias: Optional[str] = ...) -> List[_SelfB]: ...
def get_source_fields(self) -> List[Optional[Field]]: ...
def asc(
self,
*,
descending: bool = ...,
nulls_first: bool = ...,
nulls_last: bool = ...,
) -> OrderBy: ...
def desc(
self,
*,
nulls_first: bool = ...,
nulls_last: bool = ...,
) -> OrderBy: ...
def reverse_ordering(self) -> BaseExpression: ...
def flatten(self) -> Iterator[BaseExpression]: ...
def as_sql(self, compiler: SQLCompiler, connection: BaseDatabaseWrapper) -> _AsSqlType: ...
def deconstruct(self) -> Any: ... # fake
class Expression(BaseExpression, Combinable): ...
class CombinedExpression(SQLiteNumericMixin, Expression):
connector: str = ...
lhs: Combinable = ...
rhs: Combinable = ...
def __init__(
self, lhs: Combinable, connector: str, rhs: Combinable, output_field: Optional[Field] = ...
) -> None: ...
class F(Combinable):
name: str
def __init__(self, name: str) -> None: ...
def resolve_expression(
self,
query: Any = ...,
allow_joins: bool = ...,
reuse: Optional[Set[str]] = ...,
summarize: bool = ...,
for_save: bool = ...,
) -> F: ...
def asc(
self,
*,
descending: bool = ...,
nulls_first: bool = ...,
nulls_last: bool = ...,
) -> OrderBy: ...
def desc(
self,
*,
nulls_first: bool = ...,
nulls_last: bool = ...,
) -> OrderBy: ...
def deconstruct(self) -> Any: ... # fake
class ResolvedOuterRef(F): ...
class OuterRef(F):
def __init__(self, name: Union[str, OuterRef]) -> None: ...
contains_aggregate: bool
def relabeled_clone(self: _Self, relabels: Any) -> _Self: ...
class Subquery(BaseExpression, Combinable):
template: str = ...
query: Query = ...
extra: Dict[Any, Any] = ...
def __init__(self, queryset: Union[Query, QuerySet], output_field: Optional[Field] = ..., **extra: Any) -> None: ...
class Exists(Subquery):
negated: bool = ...
def __init__(self, queryset: Union[Query, QuerySet], negated: bool = ..., **kwargs: Any) -> None: ...
def __invert__(self) -> Exists: ...
class OrderBy(Expression):
template: str = ...
nulls_first: bool = ...
nulls_last: bool = ...
descending: bool = ...
expression: Union[Expression, F, Subquery] = ...
def __init__(
self,
expression: Union[Expression, F, Subquery],
descending: bool = ...,
nulls_first: bool = ...,
nulls_last: bool = ...,
) -> None: ...
class Value(Expression):
value: Any = ...
def __init__(self, value: Any, output_field: Optional[Field] = ...) -> None: ...
class RawSQL(Expression):
params: List[Any]
sql: str
def __init__(self, sql: str, params: Sequence[Any], output_field: Optional[Field] = ...) -> None: ...
class Func(SQLiteNumericMixin, Expression):
function: str = ...
name: str = ...
template: str = ...
arg_joiner: str = ...
arity: Optional[int] = ...
source_expressions: List[Expression] = ...
extra: Dict[Any, Any] = ...
def __init__(self, *expressions: Any, output_field: Optional[Field] = ..., **extra: Any) -> None: ...
class When(Expression):
template: str = ...
condition: Any = ...
result: Any = ...
def __init__(self, condition: Any = ..., then: Any = ..., **lookups: Any) -> None: ...
class Case(Expression):
template: str = ...
case_joiner: str = ...
cases: Any = ...
default: Any = ...
extra: Any = ...
def __init__(
self, *cases: Any, default: Optional[Any] = ..., output_field: Optional[Field] = ..., **extra: Any
) -> None: ...
class ExpressionWrapper(Expression):
def __init__(self, expression: Union[Q, Combinable], output_field: Field) -> None: ...
class Col(Expression):
target: Field
alias: str
contains_column_references: Literal[True] = ...
possibly_multivalued: Literal[False] = ...
def __init__(self, alias: str, target: Field, output_field: Optional[Field] = ...) -> None: ...
class Ref(Expression):
def __init__(self, refs: str, source: Expression) -> None: ...
class ExpressionList(Func):
def __init__(self, *expressions: Union[BaseExpression, Combinable], **extra: Any) -> None: ...
class Window(SQLiteNumericMixin, Expression):
template: str = ...
contains_aggregate: bool = ...
contains_over_clause: bool = ...
partition_by: Optional[ExpressionList]
order_by: Optional[ExpressionList]
def __init__(
self,
expression: BaseExpression,
partition_by: Optional[Union[str, Iterable[Union[BaseExpression, F]], F, BaseExpression]] = ...,
order_by: Optional[Union[Sequence[Union[BaseExpression, F]], Union[BaseExpression, F]]] = ...,
frame: Optional[WindowFrame] = ...,
output_field: Optional[Field] = ...,
) -> None: ...
class WindowFrame(Expression):
template: str = ...
frame_type: str = ...
def __init__(self, start: Optional[int] = ..., end: Optional[int] = ...) -> None: ...
def window_frame_start_end(
self, connection: BaseDatabaseWrapper, start: Optional[int], end: Optional[int]
) -> Tuple[int, int]: ...
class RowRange(WindowFrame): ...
class ValueRange(WindowFrame): ...