diff --git a/stubs/peewee/peewee.pyi b/stubs/peewee/peewee.pyi index 17704c51efe9..13f5b1922710 100644 --- a/stubs/peewee/peewee.pyi +++ b/stubs/peewee/peewee.pyi @@ -3,9 +3,12 @@ import logging import threading from _typeshed import Incomplete, SupportsKeysAndGetItem from collections.abc import Callable, Generator, Iterable, Iterator +from datetime import datetime +from decimal import Decimal from types import TracebackType -from typing import Any, ClassVar, Literal, NamedTuple, TypeVar +from typing import Any, ClassVar, Final, Literal, NamedTuple, TypeVar from typing_extensions import Self +from uuid import UUID class NullHandler(logging.Handler): def emit(self, record) -> None: ... @@ -30,7 +33,16 @@ class attrdict(dict[str, _VT]): OP: attrdict[str] DJANGO_MAP: attrdict[Incomplete] JOIN: attrdict[str] +ROW: attrdict[int] PREFETCH_TYPE: attrdict[int] +SCOPE_NORMAL: Final = 1 +SCOPE_SOURCE: Final = 2 +SCOPE_VALUES: Final = 4 +SCOPE_CTE: Final = 8 +SCOPE_COLUMN: Final = 16 +CSQ_PARENTHESES_NEVER: Final = 0 +CSQ_PARENTHESES_ALWAYS: Final = 1 +CSQ_PARENTHESES_UNNESTED: Final = 2 def chunked(it, n) -> Generator[Incomplete, None, None]: ... @@ -38,6 +50,7 @@ class _callable_context_manager: def __call__(self, fn): ... class Proxy: + __slots__ = ("obj", "_callbacks") def __init__(self) -> None: ... obj: Incomplete def initialize(self, obj) -> None: ... @@ -49,17 +62,19 @@ class Proxy: def __setattr__(self, attr: str, value) -> None: ... class DatabaseProxy(Proxy): - def connection_context(self): ... - def atomic(self, *args, **kwargs): ... - def manual_commit(self): ... - def transaction(self, *args, **kwargs): ... - def savepoint(self): ... + __slots__ = ("obj", "_callbacks", "_Model") + def connection_context(self) -> ConnectionContext: ... + def atomic(self, *args, **kwargs) -> _atomic: ... + def manual_commit(self) -> _manual: ... + def transaction(self, *args, **kwargs) -> _transaction: ... + def savepoint(self) -> _savepoint: ... @property def Model(self) -> type[Model]: ... class ModelDescriptor: ... class AliasManager: + __slots__ = ("_counter", "_current_index", "_mapping") def __init__(self) -> None: ... @property def mapping(self): ... @@ -71,16 +86,17 @@ class AliasManager: def pop(self) -> None: ... class State: - def __new__(cls, scope=1, parentheses: bool = False, **kwargs): ... - def __call__(self, scope=None, parentheses=None, **kwargs): ... + def __new__(cls, scope=1, parentheses: bool = False, **kwargs) -> Self: ... + def __call__(self, scope=None, parentheses=None, **kwargs) -> State: ... def __getattr__(self, attr_name: str): ... class Context: - stack: Incomplete - alias_manager: Incomplete - state: Incomplete + __slots__ = ("stack", "_sql", "_values", "alias_manager", "state") + stack: list[Incomplete] + alias_manager: AliasManager + state: State def __init__(self, **settings) -> None: ... - def as_new(self): ... + def as_new(self) -> Context: ... def column_sort_key(self, item): ... @property def scope(self): ... @@ -88,45 +104,48 @@ class Context: def parentheses(self): ... @property def subquery(self): ... - def __call__(self, **overrides): ... + def __call__(self, **overrides) -> Self: ... scope_normal: Incomplete scope_source: Incomplete scope_values: Incomplete scope_cte: Incomplete scope_column: Incomplete - def __enter__(self): ... + def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> None: ... def push_alias(self) -> Generator[None]: ... def sql(self, obj): ... - def literal(self, keyword): ... + def literal(self, keyword) -> Self: ... def value(self, value, converter=None, add_param: bool = True): ... def __sql__(self, ctx): ... def parse(self, node): ... - def query(self): ... + def query(self) -> tuple[str, list[Incomplete]]: ... class Node: __isabstractmethod__: bool - def clone(self): ... - def __sql__(self, ctx) -> None: ... + def clone(self) -> Self: ... + def __sql__(self, ctx): ... @staticmethod def copy(method): ... - def coerce(self, _coerce: bool = True): ... - def is_alias(self): ... - def unwrap(self): ... + def coerce(self, _coerce: bool = True) -> Self: ... + def is_alias(self) -> bool: ... + def unwrap(self) -> Self: ... class ColumnFactory: + __slots__ = ("node",) node: Node def __init__(self, node: Node) -> None: ... def __getattr__(self, attr: str) -> Column: ... - def __getitem__(self, attr: str) -> Column: ... + __getitem__ = __getattr__ class _DynamicColumn: + __slots__ = () def __get__(self, instance, instance_type=None): ... class _ExplicitColumn: - def __get__(self, instance, instance_type=None): ... + __slots__ = () + def __get__(self, instance, instance_type=None) -> Self: ... class Star(Node): def __init__(self, source) -> None: ... @@ -136,13 +155,13 @@ class Source(Node): c: Incomplete def __init__(self, alias=None) -> None: ... def alias(self, name) -> Self: ... - def select(self, *columns): ... + def select(self, *columns) -> Select: ... @property def __star__(self) -> Star: ... - def join(self, dest, join_type="INNER JOIN", on=None): ... - def left_outer_join(self, dest, on=None): ... - def cte(self, name, recursive: bool = False, columns=None, materialized=None): ... - def get_sort_key(self, ctx): ... + def join(self, dest, join_type="INNER JOIN", on=None) -> Join: ... + def left_outer_join(self, dest, on=None) -> Join: ... + def cte(self, name, recursive: bool = False, columns=None, materialized=None) -> CTE: ... + def get_sort_key(self, ctx) -> tuple[Incomplete, ...]: ... def apply_alias(self, ctx): ... def apply_column(self, ctx): ... @@ -158,16 +177,16 @@ class _HashableSource: __ge__: Callable[[Self, Any], Expression] class BaseTable(Source): - __and__: Incomplete - __add__: Incomplete - __sub__: Incomplete - __or__: Incomplete - __mul__: Incomplete - __rand__: Incomplete - __radd__: Incomplete - __rsub__: Incomplete - __ror__: Incomplete - __rmul__: Incomplete + def __and__(self, other) -> Join: ... + def __add__(self, other) -> Join: ... + def __sub__(self, other) -> Join: ... + def __or__(self, other) -> Join: ... + def __mul__(self, other) -> Join: ... + def __rand__(self, other) -> Join: ... + def __radd__(self, other) -> Join: ... + def __rsub__(self, other) -> Join: ... + def __ror__(self, other) -> Join: ... + def __rmul__(self, other) -> Join: ... class _BoundTableContext(_callable_context_manager): table: Incomplete @@ -185,14 +204,14 @@ class Table(_HashableSource, BaseTable): # type: ignore[misc] def __init__( self, name, columns=None, primary_key=None, schema: str | None = None, alias=None, _model=None, _database=None ) -> None: ... - def clone(self): ... - def bind(self, database=None): ... - def bind_ctx(self, database=None): ... - def select(self, *columns): ... - def insert(self, insert=None, columns=None, **kwargs): ... + def clone(self) -> Table: ... + def bind(self, database=None) -> Self: ... + def bind_ctx(self, database=None) -> _BoundTableContext: ... + def select(self, *columns) -> Select: ... + def insert(self, insert=None, columns=None, **kwargs) -> Insert: ... def replace(self, insert=None, columns=None, **kwargs): ... - def update(self, update=None, **kwargs): ... - def delete(self): ... + def update(self, update=None, **kwargs) -> Update: ... + def delete(self) -> Delete: ... def __sql__(self, ctx): ... class Join(BaseTable): @@ -200,7 +219,7 @@ class Join(BaseTable): rhs: Incomplete join_type: Incomplete def __init__(self, lhs, rhs, join_type="INNER JOIN", on=None, alias=None) -> None: ... - def on(self, predicate): ... + def on(self, predicate) -> Self: ... def __sql__(self, ctx): ... class ValuesList(_HashableSource, BaseTable): # type: ignore[misc] @@ -211,22 +230,22 @@ class ValuesList(_HashableSource, BaseTable): # type: ignore[misc] class CTE(_HashableSource, Source): # type: ignore[misc] def __init__(self, name, query, recursive: bool = False, columns=None, materialized=None) -> None: ... def select_from(self, *columns): ... - def union_all(self, rhs): ... - __add__: Incomplete - def union(self, rhs): ... - __or__: Incomplete + def union_all(self, rhs) -> CTE: ... + __add__ = union_all + def union(self, rhs) -> CTE: ... + __or__ = union def __sql__(self, ctx): ... class ColumnBase(Node): def converter(self, converter=None) -> Self: ... def alias(self, alias): ... - def unalias(self): ... - def bind_to(self, dest): ... - def cast(self, as_type): ... - def asc(self, collation=None, nulls=None): ... - __pos__: Incomplete - def desc(self, collation=None, nulls=None): ... - __neg__: Incomplete + def unalias(self) -> Self: ... + def bind_to(self, dest) -> BindTo: ... + def cast(self, as_type) -> Cast: ... + def asc(self, collation=None, nulls=None) -> Ordering: ... + __pos__ = asc + def desc(self, collation=None, nulls=None) -> Ordering: ... + __neg__ = desc def __invert__(self): ... __and__: Incomplete __or__: Incomplete @@ -267,33 +286,35 @@ class ColumnBase(Node): def startswith(self, rhs) -> Expression: ... def endswith(self, rhs) -> Expression: ... def between(self, lo, hi) -> Expression: ... - def concat(self, rhs): ... + def concat(self, rhs) -> StringExpression: ... def __getitem__(self, item): ... __iter__: Incomplete - def distinct(self): ... - def collate(self, collation): ... - def get_sort_key(self, ctx): ... + def distinct(self) -> NodeList: ... + def collate(self, collation) -> NodeList: ... + def get_sort_key(self, ctx) -> tuple[Incomplete, ...]: ... class Column(ColumnBase): source: Incomplete name: Incomplete def __init__(self, source, name) -> None: ... - def get_sort_key(self, ctx): ... + def get_sort_key(self, ctx) -> tuple[Incomplete, ...]: ... def __hash__(self) -> int: ... def __sql__(self, ctx): ... class WrappedNode(ColumnBase): node: Incomplete def __init__(self, node) -> None: ... - def is_alias(self): ... + def is_alias(self) -> bool: ... def unwrap(self): ... class EntityFactory: + __slots__ = ("node",) node: Incomplete def __init__(self, node) -> None: ... - def __getattr__(self, attr: str): ... + def __getattr__(self, attr: str) -> Entity: ... class _DynamicEntity: + __slots__ = () def __get__(self, instance, instance_type=None): ... class Alias(WrappedNode): @@ -306,7 +327,7 @@ class Alias(WrappedNode): def name(self, value) -> None: ... def alias(self, alias=None): ... def unalias(self): ... - def is_alias(self): ... + def is_alias(self) -> bool: ... def __sql__(self, ctx): ... class BindTo(WrappedNode): @@ -322,7 +343,7 @@ class BitwiseMixin: def __and__(self, other): ... def __or__(self, other): ... def __sub__(self, other): ... - def __invert__(self): ... + def __invert__(self) -> BitwiseNegated: ... class BitwiseNegated(BitwiseMixin, WrappedNode): def __invert__(self): ... @@ -332,7 +353,7 @@ class Value(ColumnBase): value: Incomplete converter: Incomplete multi: Incomplete - values: Incomplete + values: list[Incomplete] def __init__(self, value, converter=None, unpack: bool = True) -> None: ... def __sql__(self, ctx): ... @@ -350,25 +371,25 @@ class Ordering(WrappedNode): collation: Incomplete nulls: Incomplete def __init__(self, node, direction, collation=None, nulls=None) -> None: ... - def collate(self, collation=None): ... + def collate(self, collation=None) -> Ordering: ... # type: ignore[override] def __sql__(self, ctx): ... class Expression(ColumnBase): lhs: Incomplete op: Incomplete rhs: Incomplete - flat: Incomplete + flat: bool def __init__(self, lhs, op, rhs, flat: bool = False) -> None: ... def __sql__(self, ctx): ... class StringExpression(Expression): - def __add__(self, rhs): ... - def __radd__(self, lhs): ... + def __add__(self, rhs) -> StringExpression: ... + def __radd__(self, lhs) -> StringExpression: ... class Entity(ColumnBase): def __init__(self, *path) -> None: ... - def __getattr__(self, attr: str): ... - def get_sort_key(self, ctx): ... + def __getattr__(self, attr: str) -> Entity: ... + def get_sort_key(self, ctx) -> tuple[Incomplete, ...]: ... def __hash__(self) -> int: ... def __sql__(self, ctx): ... @@ -389,16 +410,18 @@ class Function(ColumnBase): def filter(self, where=None) -> Self: ... def order_by(self, *ordering) -> Self: ... def python_value(self, func=None) -> Self: ... - def over(self, partition_by=None, order_by=None, start=None, end=None, frame_type=None, window=None, exclude=None): ... + def over( + self, partition_by=None, order_by=None, start=None, end=None, frame_type=None, window=None, exclude=None + ) -> NodeList: ... def __sql__(self, ctx): ... fn: Incomplete class Window(Node): - CURRENT_ROW: Incomplete - GROUP: Incomplete - TIES: Incomplete - NO_OTHERS: Incomplete + CURRENT_ROW: SQL + GROUP: SQL + TIES: SQL + NO_OTHERS: SQL GROUPS: str RANGE: str ROWS: str @@ -419,22 +442,22 @@ class Window(Node): alias=None, _inline: bool = False, ) -> None: ... - def alias(self, alias=None): ... + def alias(self, alias=None) -> Self: ... def as_range(self) -> Self: ... def as_rows(self) -> Self: ... def as_groups(self) -> Self: ... def extends(self, window=None) -> Self: ... def exclude(self, frame_exclusion=None) -> Self: ... @staticmethod - def following(value=None): ... + def following(value=None) -> SQL: ... @staticmethod - def preceding(value=None): ... + def preceding(value=None) -> SQL: ... def __sql__(self, ctx): ... class WindowAlias(Node): window: Incomplete def __init__(self, window) -> None: ... - def alias(self, window_alias): ... + def alias(self, window_alias) -> Self: ... def __sql__(self, ctx): ... class ForUpdate(Node): @@ -456,9 +479,10 @@ class NodeList(ColumnBase): def __sql__(self, ctx): ... class _Namespace(Node): + __slots__ = ("_name",) def __init__(self, name) -> None: ... - def __getattr__(self, attr: str): ... - __getitem__: Incomplete + def __getattr__(self, attr: str) -> NamespaceAttribute: ... + __getitem__ = __getattr__ class NamespaceAttribute(ColumnBase): def __init__(self, namespace, attribute) -> None: ... @@ -469,8 +493,8 @@ EXCLUDED: Incomplete class DQ(ColumnBase): query: Incomplete def __init__(self, **query) -> None: ... - def __invert__(self) -> Self: ... - def clone(self): ... + def __invert__(self) -> Self: ... # type: ignore[override] + def clone(self) -> DQ: ... Tuple: Incomplete @@ -500,8 +524,8 @@ class OnConflict(Node): class BaseQuery(Node): default_row_type: Incomplete def __init__(self, _database=None, **kwargs) -> None: ... - def bind(self, database=None): ... - def clone(self): ... + def bind(self, database=None) -> Self: ... + def clone(self) -> Self: ... def dicts(self, as_dict: bool = True) -> Self: ... def tuples(self, as_tuple: bool = True) -> Self: ... def namedtuples(self, as_namedtuple: bool = True) -> Self: ... @@ -531,19 +555,19 @@ class Query(BaseQuery): def __sql__(self, ctx): ... class SelectQuery(Query): - union_all: Incomplete - __add__: Incomplete - union: Incomplete - __or__: Incomplete - intersect: Incomplete - __and__: Incomplete - except_: Incomplete - __sub__: Incomplete - __radd__: Incomplete - __ror__: Incomplete - __rand__: Incomplete - __rsub__: Incomplete - def select_from(self, *columns): ... + def union_all(self, other) -> CompoundSelectQuery: ... + def __add__(self, other) -> CompoundSelectQuery: ... + def union(self, other) -> CompoundSelectQuery: ... + def __or__(self, other) -> CompoundSelectQuery: ... + def intersect(self, other) -> CompoundSelectQuery: ... + def __and__(self, other) -> CompoundSelectQuery: ... + def except_(self, other) -> CompoundSelectQuery: ... + def __sub__(self, other) -> CompoundSelectQuery: ... + def __radd__(self, other) -> CompoundSelectQuery: ... + def __ror__(self, other) -> CompoundSelectQuery: ... + def __rand__(self, other) -> CompoundSelectQuery: ... + def __rsub__(self, other) -> CompoundSelectQuery: ... + def select_from(self, *columns) -> Select: ... class SelectBase(_HashableSource, Source, SelectQuery): # type: ignore[misc] def peek(self, database=None, n: int = 1): ... @@ -551,7 +575,7 @@ class SelectBase(_HashableSource, Source, SelectQuery): # type: ignore[misc] def scalar(self, database=None, as_tuple: bool = False, as_dict: bool = False): ... def scalars(self, database=None) -> Generator[Incomplete, None, None]: ... def count(self, database=None, clear_limit: bool = False): ... - def exists(self, database=None): ... + def exists(self, database=None) -> bool: ... def get(self, database=None): ... class CompoundSelectQuery(SelectBase): @@ -559,7 +583,7 @@ class CompoundSelectQuery(SelectBase): op: Incomplete rhs: Incomplete def __init__(self, lhs, op, rhs) -> None: ... - def exists(self, database=None): ... + def exists(self, database=None) -> bool: ... def __sql__(self, ctx): ... class Select(SelectBase): @@ -577,19 +601,19 @@ class Select(SelectBase): lateral=None, **kwargs, ) -> None: ... - def clone(self): ... + def clone(self) -> Self: ... def columns(self, *columns, **kwargs) -> Self: ... - select: Incomplete + select = columns def select_extend(self, *columns) -> Self: ... @property def selected_columns(self): ... @selected_columns.setter def selected_columns(self, value) -> None: ... def from_(self, *sources) -> Self: ... - def join(self, dest, join_type="INNER JOIN", on=None) -> Self: ... - def left_outer_join(self, dest, on=None): ... + def join(self, dest, join_type="INNER JOIN", on=None) -> Self: ... # type: ignore[override] + def left_outer_join(self, dest, on=None) -> Self: ... # type: ignore[override] def group_by(self, *columns) -> Self: ... - def group_by_extend(self, *values): ... + def group_by_extend(self, *values) -> Self: ... def having(self, *expressions) -> Self: ... def distinct(self, *columns) -> Self: ... def window(self, *windows) -> Self: ... @@ -601,7 +625,7 @@ class Select(SelectBase): class _WriteQuery(Query): table: Incomplete def __init__(self, table, returning=None, **kwargs) -> None: ... - def cte(self, name, recursive: bool = False, columns=None, materialized=None): ... + def cte(self, name, recursive: bool = False, columns=None, materialized=None) -> CTE: ... def returning(self, *returning) -> Self: ... def apply_returning(self, ctx): ... def execute_returning(self, database): ... @@ -621,13 +645,13 @@ class Insert(_WriteQuery): class DefaultValuesException(Exception): ... def __init__(self, table, insert=None, columns=None, on_conflict=None, **kwargs) -> None: ... - def where(self, *expressions) -> None: ... # type: ignore[override] + def where(self, *expressions): ... def as_rowcount(self, _as_rowcount: bool = True) -> Self: ... def on_conflict_ignore(self, ignore: bool = True) -> Self: ... def on_conflict_replace(self, replace: bool = True) -> Self: ... def on_conflict(self, *args, **kwargs) -> Self: ... def get_default_data(self): ... - def get_default_columns(self): ... + def get_default_columns(self) -> list[Incomplete] | None: ... def __sql__(self, ctx): ... def handle_result(self, database, cursor): ... @@ -663,6 +687,7 @@ class OperationalError(DatabaseError): ... class ProgrammingError(DatabaseError): ... class ExceptionWrapper: + __slots__ = ("exceptions",) exceptions: Incomplete def __init__(self, exceptions) -> None: ... def __enter__(self) -> None: ... @@ -707,12 +732,14 @@ class _ConnectionState: class _ConnectionLocal(_ConnectionState, threading.local): ... class _NoopLock: - def __enter__(self): ... + __slots__ = () + def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> None: ... class ConnectionContext(_callable_context_manager): + __slots__ = ("db",) db: Incomplete def __init__(self, db) -> None: ... def __enter__(self) -> None: ... @@ -756,11 +783,11 @@ class Database(_callable_context_manager): database: Incomplete deferred: Incomplete def init(self, database, **kwargs) -> None: ... - def __enter__(self): ... + def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> None: ... - def connection_context(self): ... + def connection_context(self) -> ConnectionContext: ... def connect(self, reuse_if_open: bool = False) -> bool: ... def close(self) -> bool: ... def is_closed(self) -> bool: ... @@ -769,34 +796,34 @@ class Database(_callable_context_manager): def cursor(self, named_cursor=None): ... def execute_sql(self, sql, params=None): ... def execute(self, query, **context_options): ... - def get_context_options(self): ... - def get_sql_context(self, **context_options): ... + def get_context_options(self) -> dict[str, Incomplete]: ... + def get_sql_context(self, **context_options) -> context_class: ... def conflict_statement(self, on_conflict, query): ... def conflict_update(self, on_conflict, query): ... def last_insert_id(self, cursor, query_type=None): ... def rows_affected(self, cursor): ... def default_values_insert(self, ctx): ... - def session_start(self): ... - def session_commit(self): ... - def session_rollback(self): ... - def in_transaction(self): ... + def session_start(self) -> _transaction: ... + def session_commit(self) -> bool: ... + def session_rollback(self) -> bool: ... + def in_transaction(self) -> bool: ... def push_transaction(self, transaction) -> None: ... def pop_transaction(self): ... - def transaction_depth(self): ... + def transaction_depth(self) -> int: ... def top_transaction(self): ... - def atomic(self, *args, **kwargs): ... - def manual_commit(self): ... - def transaction(self, *args, **kwargs): ... - def savepoint(self): ... + def atomic(self, *args, **kwargs) -> _atomic: ... + def manual_commit(self) -> _manual: ... + def transaction(self, *args, **kwargs) -> _transaction: ... + def savepoint(self) -> _savepoint: ... def begin(self) -> None: ... - def commit(self): ... - def rollback(self): ... + def commit(self) -> None: ... + def rollback(self) -> None: ... def batch_commit(self, it, n) -> Generator[Incomplete, None, None]: ... - def table_exists(self, table_name, schema: str | None = None): ... + def table_exists(self, table_name, schema: str | None = None) -> bool: ... def get_tables(self, schema: str | None = None) -> list[str]: ... def get_indexes(self, table, schema: str | None = None) -> list[IndexMetadata]: ... def get_columns(self, table, schema: str | None = None) -> list[ColumnMetadata]: ... - def get_primary_keys(self, table, schema: str | None = None) -> None: ... + def get_primary_keys(self, table, schema: str | None = None): ... def get_foreign_keys(self, table, schema: str | None = None) -> list[ForeignKeyMetadata]: ... def sequence_exists(self, seq) -> bool: ... def create_tables(self, models: Iterable[type[Model]], **options) -> None: ... @@ -807,7 +834,9 @@ class Database(_callable_context_manager): def from_timestamp(self, date_field): ... def random(self): ... def bind(self, models: Iterable[type[Model]], bind_refs: bool = True, bind_backrefs: bool = True) -> None: ... - def bind_ctx(self, models: Iterable[type[Model]], bind_refs: bool = True, bind_backrefs: bool = True): ... + def bind_ctx( + self, models: Iterable[type[Model]], bind_refs: bool = True, bind_backrefs: bool = True + ) -> _BoundModelsContext: ... def get_noop_select(self, ctx): ... @property def Model(self) -> type[Model]: ... @@ -842,7 +871,7 @@ class SqliteDatabase(Database): def timeout(self, seconds) -> None: ... def register_aggregate(self, klass, name=None, num_params: int = -1) -> None: ... def aggregate(self, name=None, num_params: int = -1): ... - def register_collation(self, fn, name=None): ... + def register_collation(self, fn, name=None) -> None: ... def collation(self, name=None): ... def register_function(self, fn, name: str | None = None, num_params: int = -1, deterministic: bool | None = None) -> None: ... def func(self, name: str | None = None, num_params: int = -1, deterministic: bool | None = None) -> Callable[[_F], _F]: ... @@ -854,8 +883,8 @@ class SqliteDatabase(Database): def unregister_window_function(self, name) -> None: ... def load_extension(self, extension) -> None: ... def unload_extension(self, extension) -> None: ... - def attach(self, filename, name): ... - def detach(self, name): ... + def attach(self, filename, name) -> bool: ... + def detach(self, name) -> bool: ... def last_insert_id(self, cursor, query_type=None): ... def rows_affected(self, cursor): ... def begin(self, lock_type=None) -> None: ... @@ -863,15 +892,15 @@ class SqliteDatabase(Database): def get_views(self, schema: str | None = None) -> list[ViewMetadata]: ... def get_indexes(self, table, schema: str | None = None) -> list[IndexMetadata]: ... def get_columns(self, table, schema: str | None = None) -> list[ColumnMetadata]: ... - def get_primary_keys(self, table, schema: str | None = None): ... + def get_primary_keys(self, table, schema: str | None = None) -> list[Incomplete]: ... def get_foreign_keys(self, table, schema: str | None = None) -> list[ForeignKeyMetadata]: ... def get_binary_type(self): ... - def conflict_statement(self, on_conflict, query): ... - def conflict_update(self, oc, query): ... - def extract_date(self, date_part, date_field): ... - def truncate_date(self, date_part, date_field): ... - def to_timestamp(self, date_field): ... - def from_timestamp(self, date_field): ... + def conflict_statement(self, on_conflict, query) -> SQL | None: ... + def conflict_update(self, oc, query) -> SQL | NodeList | None: ... + def extract_date(self, date_part, date_field) -> Function: ... + def truncate_date(self, date_part, date_field) -> Function: ... + def to_timestamp(self, date_field) -> Cast: ... + def from_timestamp(self, date_field) -> Function: ... class Psycopg2Adapter: json_type: Incomplete @@ -891,7 +920,7 @@ class Psycopg3Adapter: json_type: Incomplete jsonb_type: Incomplete cast_json_case: bool - def __init__(self): ... + def __init__(self) -> None: ... def check_driver(self) -> None: ... def get_binary_type(self) -> type[Incomplete]: ... def connect(self, db, **params): ... @@ -932,7 +961,7 @@ class PostgresqlDatabase(Database): def get_views(self, schema: str | None = None) -> list[ViewMetadata]: ... def get_indexes(self, table, schema: str | None = None) -> list[IndexMetadata]: ... def get_columns(self, table, schema: str | None = None) -> list[ColumnMetadata]: ... - def get_primary_keys(self, table, schema: str | None = None): ... + def get_primary_keys(self, table, schema: str | None = None) -> list[Incomplete]: ... def get_foreign_keys(self, table, schema: str | None = None) -> list[ForeignKeyMetadata]: ... def sequence_exists(self, sequence) -> bool: ... def get_binary_type(self) -> type[Incomplete]: ... @@ -966,16 +995,16 @@ class MySQLDatabase(Database): def get_views(self, schema: str | None = None) -> list[ViewMetadata]: ... def get_indexes(self, table, schema: str | None = None) -> list[IndexMetadata]: ... def get_columns(self, table, schema: str | None = None) -> list[ColumnMetadata]: ... - def get_primary_keys(self, table, schema: str | None = None): ... + def get_primary_keys(self, table, schema: str | None = None) -> list[Incomplete]: ... def get_foreign_keys(self, table, schema: str | None = None) -> list[ForeignKeyMetadata]: ... def get_binary_type(self): ... - def conflict_statement(self, on_conflict, query): ... - def conflict_update(self, on_conflict, query): ... - def extract_date(self, date_part, date_field): ... - def truncate_date(self, date_part, date_field): ... - def to_timestamp(self, date_field): ... - def from_timestamp(self, date_field): ... - def random(self): ... + def conflict_statement(self, on_conflict, query) -> SQL | None: ... + def conflict_update(self, on_conflict, query) -> NodeList | None: ... + def extract_date(self, date_part, date_field) -> Function: ... + def truncate_date(self, date_part, date_field) -> Function: ... + def to_timestamp(self, date_field) -> Function: ... + def from_timestamp(self, date_field) -> Function: ... + def random(self) -> Function: ... def get_noop_select(self, ctx): ... class _manual(_callable_context_manager): @@ -997,7 +1026,7 @@ class _transaction(_callable_context_manager): def __init__(self, db, *args, **kwargs) -> None: ... def commit(self, begin: bool = True) -> None: ... def rollback(self, begin: bool = True) -> None: ... - def __enter__(self): ... + def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> None: ... @@ -1009,7 +1038,7 @@ class _savepoint(_callable_context_manager): def __init__(self, db, sid=None) -> None: ... def commit(self, begin: bool = True) -> None: ... def rollback(self) -> None: ... - def __enter__(self): ... + def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> None: ... @@ -1020,7 +1049,7 @@ class CursorWrapper: index: int initialized: bool populated: bool - row_cache: Incomplete + row_cache: list[Incomplete] def __init__(self, cursor) -> None: ... def __iter__(self): ... def __getitem__(self, item): ... @@ -1032,8 +1061,8 @@ class CursorWrapper: def fill_cache(self, n: int = 0) -> None: ... class DictCursorWrapper(CursorWrapper): - initialize: Incomplete - process_row: Incomplete + def initialize(self) -> None: ... + def process_row(self, row): ... class NamedTupleCursorWrapper(CursorWrapper): tuple_class: Incomplete @@ -1049,9 +1078,9 @@ class ResultIterator: cursor_wrapper: Incomplete index: int def __init__(self, cursor_wrapper) -> None: ... - def __iter__(self): ... + def __iter__(self) -> Self: ... def next(self): ... - __next__: Incomplete + __next__ = next class FieldAccessor: model: Incomplete @@ -1125,16 +1154,16 @@ class Field(ColumnBase): name: Incomplete def bind(self, model, name, set_attribute: bool = True) -> None: ... @property - def column(self): ... + def column(self) -> Column: ... def adapt(self, value): ... def db_value(self, value): ... def python_value(self, value): ... - def to_value(self, value, case: bool = False): ... - def get_sort_key(self, ctx): ... + def to_value(self, value, case: bool = False) -> Value: ... + def get_sort_key(self, ctx) -> tuple[Incomplete, ...]: ... def __sql__(self, ctx): ... - def get_modifiers(self) -> None: ... - def ddl_datatype(self, ctx): ... - def ddl(self, ctx): ... + def get_modifiers(self) -> list[int] | None: ... + def ddl_datatype(self, ctx) -> SQL: ... + def ddl(self, ctx) -> NodeList: ... class AnyField(Field): ... @@ -1169,19 +1198,19 @@ class DecimalField(Field): def __init__( self, max_digits: int = 10, decimal_places: int = 5, auto_round: bool = False, rounding=None, *args, **kwargs ) -> None: ... - def get_modifiers(self): ... + def get_modifiers(self) -> list[int]: ... def db_value(self, value): ... - def python_value(self, value): ... + def python_value(self, value) -> Decimal | None: ... class _StringField(Field): - def adapt(self, value): ... - def __add__(self, other): ... - def __radd__(self, other): ... + def adapt(self, value) -> str: ... + def __add__(self, other) -> StringExpression: ... + def __radd__(self, other) -> StringExpression: ... class CharField(_StringField): - max_length: Incomplete + max_length: int def __init__(self, max_length: int = 255, *args, **kwargs) -> None: ... - def get_modifiers(self): ... + def get_modifiers(self) -> list[int] | None: ... class FixedCharField(CharField): def python_value(self, value): ... @@ -1205,8 +1234,8 @@ class BigBitFieldData: def clear(self) -> None: ... def set_bit(self, idx) -> None: ... def clear_bit(self, idx) -> None: ... - def toggle_bit(self, idx): ... - def is_set(self, idx): ... + def toggle_bit(self, idx) -> bool: ... + def is_set(self, idx) -> bool: ... __getitem__ = is_set def __setitem__(self, item: int, value: bool) -> None: ... __delitem__ = clear_bit @@ -1228,11 +1257,11 @@ class BigBitField(BlobField): class UUIDField(Field): def db_value(self, value): ... - def python_value(self, value): ... + def python_value(self, value) -> UUID | None: ... class BinaryUUIDField(BlobField): def db_value(self, value): ... - def python_value(self, value): ... + def python_value(self, value) -> UUID | None: ... class _BaseFormattedField(Field): formats: Incomplete @@ -1284,10 +1313,10 @@ class TimestampField(BigIntegerField): ticks_to_microsecond: Incomplete utc: Incomplete def __init__(self, *args, **kwargs) -> None: ... - def local_to_utc(self, dt): ... - def utc_to_local(self, dt): ... - def get_timestamp(self, value): ... - def db_value(self, value): ... + def local_to_utc(self, dt) -> datetime: ... + def utc_to_local(self, dt) -> datetime: ... + def get_timestamp(self, value) -> float: ... + def db_value(self, value) -> int | None: ... def python_value(self, value): ... def from_timestamp(self): ... @property @@ -1305,7 +1334,7 @@ class TimestampField(BigIntegerField): class IPField(BigIntegerField): def db_value(self, val): ... - def python_value(self, val): ... + def python_value(self, val) -> str | None: ... class BooleanField(Field): adapt: Incomplete @@ -1313,7 +1342,7 @@ class BooleanField(Field): class BareField(Field): adapt: Incomplete def __init__(self, adapt=None, *args, **kwargs) -> None: ... - def ddl_datatype(self, ctx) -> None: ... + def ddl_datatype(self, ctx): ... class ForeignKeyField(Field): accessor_class: Incomplete @@ -1364,8 +1393,8 @@ class DeferredForeignKey(Field): field_kwargs: Incomplete rel_model_name: Incomplete def __init__(self, rel_model_name, **kwargs) -> None: ... - __hash__: Incomplete - def __deepcopy__(self, memo=None): ... + __hash__ = object.__hash__ + def __deepcopy__(self, memo=None) -> DeferredForeignKey: ... def set_model(self, rel_model) -> None: ... @staticmethod def resolve(model_cls) -> None: ... @@ -1407,7 +1436,7 @@ class ManyToManyField(MetaField): _is_backref: bool = False, ) -> None: ... def bind(self, model, name, set_attribute: bool = True) -> None: ... - def get_models(self): ... + def get_models(self) -> list[Incomplete]: ... @property def through_model(self): ... @through_model.setter @@ -1441,11 +1470,12 @@ class CompositeKey(MetaField): def bind(self, model, name, set_attribute: bool = True) -> None: ... class _SortedFieldList: + __slots__ = ("_keys", "_items") def __init__(self) -> None: ... def __getitem__(self, i): ... def __iter__(self): ... - def __contains__(self, item): ... - def index(self, field): ... + def __contains__(self, item) -> bool: ... + def index(self, field) -> int: ... def insert(self, item) -> None: ... def remove(self, item) -> None: ... @@ -1521,14 +1551,16 @@ class Metadata: legacy_table_names: bool = True, **kwargs, ) -> None: ... - def make_table_name(self): ... - def model_graph(self, refs: bool = True, backrefs: bool = True, depth_first: bool = True): ... + def make_table_name(self) -> str: ... + def model_graph( + self, refs: bool = True, backrefs: bool = True, depth_first: bool = True + ) -> list[tuple[Incomplete, Incomplete, Incomplete]]: ... def add_ref(self, field) -> None: ... def remove_ref(self, field) -> None: ... def add_manytomany(self, field) -> None: ... def remove_manytomany(self, field) -> None: ... @property - def table(self): ... + def table(self) -> Table: ... @table.deleter def table(self) -> None: ... @property @@ -1536,15 +1568,15 @@ class Metadata: @schema.setter def schema(self, value) -> None: ... @property - def entity(self): ... - def get_rel_for_model(self, model): ... + def entity(self) -> Entity: ... + def get_rel_for_model(self, model) -> tuple[list[Incomplete], list[Incomplete]]: ... def add_field(self, field_name, field, set_attribute: bool = True) -> None: ... def remove_field(self, field_name) -> None: ... auto_increment: Incomplete def set_primary_key(self, name, field) -> None: ... def get_primary_keys(self): ... def get_default_dict(self): ... - def fields_to_index(self): ... + def fields_to_index(self) -> list[Incomplete]: ... def set_database(self, database) -> None: ... def set_table_name(self, table_name) -> None: ... @@ -1556,13 +1588,13 @@ class SubclassAwareMetadata(Metadata): class DoesNotExist(Exception): ... class ModelBase(type): - inheritable: Incomplete + inheritable: set[str] def __new__(cls, name, bases, attrs): ... def __iter__(self): ... def __getitem__(self, key): ... def __setitem__(self, key, value) -> None: ... def __delitem__(self, key) -> None: ... - def __contains__(self, key): ... + def __contains__(self, key) -> bool: ... def __len__(self) -> int: ... def __bool__(self) -> bool: ... def __nonzero__(self) -> bool: ... @@ -1586,33 +1618,33 @@ class Model(metaclass=ModelBase): @classmethod def validate_model(cls) -> None: ... @classmethod - def alias(cls, alias=None): ... + def alias(cls, alias=None) -> ModelAlias: ... @classmethod - def select(cls, *fields): ... + def select(cls, *fields) -> ModelSelect: ... @classmethod - def update(cls, data=None, /, **update): ... + def update(cls, data=None, /, **update) -> ModelUpdate: ... @classmethod - def insert(cls, data=None, /, **insert): ... + def insert(cls, data=None, /, **insert) -> ModelInsert: ... @classmethod - def insert_many(cls, rows, fields=None): ... + def insert_many(cls, rows, fields=None) -> ModelInsert: ... @classmethod - def insert_from(cls, query, fields): ... + def insert_from(cls, query, fields) -> ModelInsert: ... @classmethod def replace(cls, data=None, /, **insert): ... @classmethod def replace_many(cls, rows, fields=None): ... @classmethod - def raw(cls, sql, *params): ... + def raw(cls, sql, *params) -> ModelRaw: ... @classmethod - def delete(cls): ... + def delete(cls) -> ModelDelete: ... @classmethod - def create(cls, **query): ... + def create(cls, **query) -> Self: ... @classmethod def bulk_create(cls, model_list, batch_size=None) -> None: ... @classmethod def bulk_update(cls, model_list, fields, batch_size=None): ... @classmethod - def noop(cls): ... + def noop(cls) -> NoopModelSelect: ... @classmethod def get(cls, *query, **filters): ... @classmethod @@ -1631,7 +1663,7 @@ class Model(metaclass=ModelBase): def save(self, force_insert: bool = False, only=None): ... def is_dirty(self) -> bool: ... @property - def dirty_fields(self): ... + def dirty_fields(self) -> list[Incomplete]: ... @property def dirty_field_names(self) -> list[Incomplete]: ... def dependencies( @@ -1643,9 +1675,9 @@ class Model(metaclass=ModelBase): def __ne__(self, other) -> Expression | bool: ... # type: ignore[override] def __sql__(self, ctx): ... @classmethod - def bind(cls, database, bind_refs: bool = True, bind_backrefs: bool = True, _exclude=None): ... + def bind(cls, database, bind_refs: bool = True, bind_backrefs: bool = True, _exclude=None) -> bool: ... @classmethod - def bind_ctx(cls, database, bind_refs: bool = True, bind_backrefs: bool = True): ... + def bind_ctx(cls, database, bind_refs: bool = True, bind_backrefs: bool = True) -> _BoundModelsContext: ... @classmethod def table_exists(cls): ... @classmethod @@ -1655,7 +1687,7 @@ class Model(metaclass=ModelBase): @classmethod def truncate_table(cls, **options) -> None: ... @classmethod - def index(cls, *fields, **kwargs): ... + def index(cls, *fields, **kwargs) -> ModelIndex: ... @classmethod def add_index(cls, *fields, **kwargs) -> None: ... @@ -1663,8 +1695,8 @@ class ModelAlias(Node): def __init__(self, model, alias=None) -> None: ... def __getattr__(self, attr: str): ... def __setattr__(self, attr: str, value) -> None: ... - def get_field_aliases(self): ... - def select(self, *selection): ... + def get_field_aliases(self) -> list[Incomplete]: ... + def select(self, *selection) -> ModelSelect: ... def __call__(self, **kwargs): ... def __sql__(self, ctx): ... @@ -1675,7 +1707,7 @@ class FieldAlias(Field): def __init__(self, source, field) -> None: ... @classmethod def create(cls, source, field): ... - def clone(self): ... + def clone(self) -> FieldAlias: ... def adapt(self, value): ... def python_value(self, value): ... def db_value(self, value): ... @@ -1693,14 +1725,14 @@ class ModelRaw(_ModelQueryHelper, RawQuery): # type: ignore[misc] def get(self): ... class BaseModelSelect(_ModelQueryHelper): - def union_all(self, rhs): ... - __add__: Incomplete - def union(self, rhs): ... - __or__: Incomplete - def intersect(self, rhs): ... - __and__: Incomplete - def except_(self, rhs): ... - __sub__: Incomplete + def union_all(self, rhs) -> ModelCompoundSelectQuery: ... + __add__ = union_all + def union(self, rhs) -> ModelCompoundSelectQuery: ... + __or__ = union + def intersect(self, rhs) -> ModelCompoundSelectQuery: ... + __and__ = intersect + def except_(self, rhs) -> ModelCompoundSelectQuery: ... + __sub__ = except_ def __iter__(self): ... def prefetch(self, *subqueries): ... def get(self, database=None): ... @@ -1714,15 +1746,15 @@ class ModelCompoundSelectQuery(BaseModelSelect, CompoundSelectQuery): # type: i class ModelSelect(BaseModelSelect, Select): # type: ignore[misc] model: Incomplete def __init__(self, model, fields_or_models, is_default: bool = False) -> None: ... - def clone(self): ... + def clone(self) -> Self: ... def select(self, *fields_or_models): ... def select_extend(self, *columns): ... - def switch(self, ctx=None): ... - def join(self, dest, join_type="INNER JOIN", on=None, src=None, attr=None) -> Self: ... - def left_outer_join(self, dest, on=None, src=None, attr=None): ... - def join_from(self, src, dest, join_type="INNER JOIN", on=None, attr=None): ... + def switch(self, ctx=None) -> Self: ... + def join(self, dest, join_type="INNER JOIN", on=None, src=None, attr=None) -> Self: ... # type: ignore[override] + def left_outer_join(self, dest, on=None, src=None, attr=None) -> Self: ... # type: ignore[override] + def join_from(self, src, dest, join_type="INNER JOIN", on=None, attr=None) -> Self: ... def ensure_join(self, lm, rm, on=None, **join_kwargs): ... - def convert_dict_to_node(self, qdict): ... + def convert_dict_to_node(self, qdict) -> tuple[list[Incomplete], list[Incomplete]]: ... def filter(self, *args, **kwargs): ... def create_table(self, name, safe: bool = True, **meta): ... def __sql_selection__(self, ctx, is_subquery: bool = False): ... @@ -1757,19 +1789,19 @@ class BaseModelCursorWrapper(DictCursorWrapper): select: Incomplete def __init__(self, cursor, model, columns) -> None: ... initialize: Incomplete - def process_row(self, row) -> None: ... + def process_row(self, row): ... class ModelDictCursorWrapper(BaseModelCursorWrapper): - def process_row(self, row): ... + def process_row(self, row) -> dict[Incomplete, Incomplete]: ... class ModelTupleCursorWrapper(ModelDictCursorWrapper): constructor: Incomplete - def process_row(self, row): ... + def process_row(self, row) -> tuple[Incomplete, ...]: ... # type: ignore[override] class ModelNamedTupleCursorWrapper(ModelTupleCursorWrapper): tuple_class: Incomplete constructor: Incomplete - def initialize(self): ... + def initialize(self) -> None: ... class ModelObjectCursorWrapper(ModelDictCursorWrapper): constructor: Incomplete @@ -1789,7 +1821,7 @@ class ModelCursorWrapper(BaseModelCursorWrapper): def process_row(self, row): ... class PrefetchQuery: - def __new__(cls, query, fields=None, is_backref=None, rel_models=None, field_to_name=None, model=None): ... + def __new__(cls, query, fields=None, is_backref=None, rel_models=None, field_to_name=None, model=None) -> Self: ... def populate_instance(self, instance, id_map) -> None: ... def store_instance(self, instance, id_map) -> None: ...