Skip to content

Commit 56241d9

Browse files
authored
[peewee] Update to 4.1.2 (#16049)
1 parent b357be4 commit 56241d9

2 files changed

Lines changed: 66 additions & 44 deletions

File tree

stubs/peewee/METADATA.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version = "4.0.8"
1+
version = "4.1.2"
22
upstream-repository = "https://github.com/coleifer/peewee"
33
# We're not providing stubs for all playhouse modules right now
44
# https://github.com/python/typeshed/pull/11731#issuecomment-2065729058

stubs/peewee/peewee.pyi

Lines changed: 65 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ _Model: TypeAlias = Model
2222
_M = TypeVar("_M", bound=Model, default=Model)
2323
# __get__/__set__ value type. Bare Field defaults to Field[Any].
2424
_V = TypeVar("_V", default=Any)
25+
_DatabaseType: TypeAlias = Database | DatabaseProxy
2526

2627
# Common field kwargs, Unpack-ed into the field __new__ overloads.
2728
@type_check_only
@@ -80,7 +81,7 @@ SNAKE_CASE_STEP2: Final[re.Pattern[str]]
8081
IDENTIFIER_RE: Final[re.Pattern[str]]
8182

8283
def make_identifier(s: str) -> str: ...
83-
def chunked(it, n) -> Generator[list[Incomplete]]: ...
84+
def chunked(it: Iterable[_T], n: int) -> Generator[list[_T]]: ...
8485

8586
class _callable_context_manager:
8687
def __call__(self, fn): ...
@@ -227,7 +228,7 @@ class BaseTable(Source):
227228
class _BoundTableContext(_callable_context_manager):
228229
table: Incomplete
229230
database: Incomplete
230-
def __init__(self, table, database) -> None: ...
231+
def __init__(self, table, database: _DatabaseType) -> None: ...
231232
def __enter__(self): ...
232233
def __exit__(
233234
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
@@ -241,8 +242,8 @@ class Table(_HashableSource, BaseTable): # type: ignore[misc]
241242
self, name, columns=None, primary_key=None, schema: str | None = None, alias=None, _model=None, _database=None
242243
) -> None: ...
243244
def clone(self) -> Table: ...
244-
def bind(self, database=None) -> Self: ...
245-
def bind_ctx(self, database=None) -> _BoundTableContext: ...
245+
def bind(self, database: _DatabaseType | None = None) -> Self: ...
246+
def bind_ctx(self, database: _DatabaseType | None = None) -> _BoundTableContext: ...
246247
def select(self, *columns) -> Select: ...
247248
def insert(self, insert=None, columns=None, **kwargs) -> Insert: ...
248249
def replace(self, insert=None, columns=None, **kwargs): ...
@@ -438,7 +439,7 @@ class SQL(ColumnBase):
438439
def __init__(self, sql, params=None) -> None: ...
439440
def __sql__(self, ctx): ...
440441

441-
def Check(constraint, name=None) -> Node: ...
442+
def Check(constraint: str, name: str | None = None) -> SQL | NodeList: ...
442443
def Default(value) -> SQL: ...
443444

444445
class Function(ColumnBase):
@@ -565,17 +566,17 @@ class OnConflict(Node):
565566
class BaseQuery(Node):
566567
default_row_type: Incomplete
567568
def __init__(self, _database=None, **kwargs) -> None: ...
568-
def bind(self, database=None) -> Self: ...
569+
def bind(self, database: _DatabaseType | None = None) -> Self: ...
569570
def clone(self) -> Self: ...
570571
def dicts(self, as_dict: bool = True) -> Self: ...
571572
def tuples(self, as_tuple: bool = True) -> Self: ...
572573
def namedtuples(self, as_namedtuple: bool = True) -> Self: ...
573574
def objects(self, constructor=None) -> Self: ...
574575
def __sql__(self, ctx) -> None: ...
575576
def sql(self) -> tuple[str, list[Any]]: ... # Returns (sql, params), params are bound query values
576-
def execute(self, database=None): ...
577-
async def aexecute(self, database=None): ...
578-
def iterator(self, database=None): ...
577+
def execute(self, database: _DatabaseType | None = None): ...
578+
async def aexecute(self, database: _DatabaseType | None = None): ...
579+
def iterator(self, database: _DatabaseType | None = None): ...
579580
def __iter__(self): ...
580581
def __getitem__(self, value): ...
581582
def __len__(self) -> int: ...
@@ -612,20 +613,20 @@ class SelectQuery(Query):
612613
def select_from(self, *columns) -> Select: ...
613614

614615
class SelectBase(_HashableSource, Source, SelectQuery): # type: ignore[misc]
615-
def peek(self, database=None, n: int = 1): ...
616-
def first(self, database=None, n: int = 1): ...
617-
def scalar(self, database=None, as_tuple: bool = False, as_dict: bool = False): ...
618-
def scalars(self, database=None) -> Generator[Incomplete]: ...
619-
def count(self, database=None, clear_limit: bool = False) -> int: ...
620-
def exists(self, database=None) -> bool: ...
621-
def get(self, database=None): ...
616+
def peek(self, database: _DatabaseType | None = None, n: int = 1): ...
617+
def first(self, database: _DatabaseType | None = None, n: int = 1): ...
618+
def scalar(self, database: _DatabaseType | None = None, as_tuple: bool = False, as_dict: bool = False): ...
619+
def scalars(self, database: _DatabaseType | None = None) -> Generator[Incomplete]: ...
620+
def count(self, database: _DatabaseType | None = None, clear_limit: bool = False) -> int: ...
621+
def exists(self, database: _DatabaseType | None = None) -> bool: ...
622+
def get(self, database: _DatabaseType | None = None): ...
622623

623624
class CompoundSelectQuery(SelectBase):
624625
lhs: Incomplete
625626
op: Incomplete
626627
rhs: Incomplete
627628
def __init__(self, lhs, op, rhs) -> None: ...
628-
def exists(self, database=None) -> bool: ...
629+
def exists(self, database: _DatabaseType | None = None) -> bool: ...
629630
def __sql__(self, ctx): ...
630631

631632
class Select(SelectBase):
@@ -672,8 +673,8 @@ class _WriteQuery(Query):
672673
def cte(self, name, recursive: bool = False, columns=None, materialized=None) -> CTE: ...
673674
def returning(self, *returning) -> Self: ...
674675
def apply_returning(self, ctx): ...
675-
def execute_returning(self, database): ...
676-
def handle_result(self, database, cursor): ...
676+
def execute_returning(self, database: _DatabaseType): ...
677+
def handle_result(self, database: _DatabaseType, cursor): ...
677678
def __sql__(self, ctx): ...
678679

679680
class Update(_WriteQuery):
@@ -697,7 +698,7 @@ class Insert(_WriteQuery):
697698
def get_default_data(self): ...
698699
def get_default_columns(self) -> list[Incomplete] | None: ...
699700
def __sql__(self, ctx): ...
700-
def handle_result(self, database, cursor): ...
701+
def handle_result(self, database: _DatabaseType, cursor): ...
701702

702703
class Delete(_WriteQuery):
703704
def __sql__(self, ctx): ...
@@ -753,12 +754,17 @@ class ColumnMetadata(NamedTuple):
753754
primary_key: Incomplete
754755
table: Incomplete
755756
default: Incomplete
757+
full_type: str | None = None
758+
identity: bool = False
756759

757760
class ForeignKeyMetadata(NamedTuple):
758761
column: Incomplete
759762
dest_table: Incomplete
760763
dest_column: Incomplete
761764
table: Incomplete
765+
name: str | None = None
766+
on_delete: str | None = None
767+
on_update: str | None = None
762768

763769
class ViewMetadata(NamedTuple):
764770
name: Incomplete
@@ -814,9 +820,10 @@ class Database(_callable_context_manager):
814820
autoconnect: Incomplete
815821
thread_safe: Incomplete
816822
connect_params: Incomplete
823+
def __deepcopy__(self, memo: Any) -> Self: ...
817824
def __init__(
818825
self,
819-
database,
826+
database: str | None,
820827
thread_safe: bool = True,
821828
autorollback: bool = False,
822829
field_types=None,
@@ -827,7 +834,7 @@ class Database(_callable_context_manager):
827834
) -> None: ...
828835
database: Incomplete
829836
deferred: Incomplete
830-
def init(self, database, **kwargs) -> None: ...
837+
def init(self, database: str | None, **kwargs) -> None: ...
831838
def __enter__(self) -> Self: ...
832839
def __exit__(
833840
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
@@ -895,10 +902,10 @@ class SqliteDatabase(Database):
895902
truncate_table: bool
896903
nulls_ordering: bool
897904
def __init__(
898-
self, database, pragmas=None, regexp_function: bool = False, rank_functions: bool = False, *args, **kwargs
905+
self, database: str | None, pragmas=None, regexp_function: bool = False, rank_functions: bool = False, *args, **kwargs
899906
) -> None: ...
900907
returning_clause: Incomplete
901-
def init(self, database, pragmas=None, timeout: int = 5, returning_clause=None, **kwargs) -> None: ...
908+
def init(self, database: str | None, pragmas=None, timeout: int = 5, returning_clause=None, **kwargs) -> None: ...
902909
def pragma(self, key, value=..., permanent: bool = False, schema: str | None = None): ...
903910
cache_size: Incomplete
904911
foreign_keys: Incomplete
@@ -1006,7 +1013,7 @@ class PostgresqlDatabase(Database):
10061013
psycopg3_adapter: Incomplete
10071014
def init(
10081015
self,
1009-
database,
1016+
database: str | None,
10101017
register_unicode: bool = True,
10111018
encoding=None,
10121019
isolation_level=None,
@@ -1050,7 +1057,8 @@ class MySQLDatabase(Database):
10501057
safe_create_index: bool
10511058
safe_drop_index: bool
10521059
sql_mode: str
1053-
def init(self, database, **kwargs) -> None: ...
1060+
mariadb: bool
1061+
def init(self, database: str | None, mariadb: bool | None = None, **kwargs) -> None: ...
10541062
def is_connection_usable(self) -> bool: ...
10551063
def default_values_insert(self, ctx): ...
10561064
def begin(self, isolation_level: str | None = None) -> None: ...
@@ -1495,6 +1503,7 @@ class TimestampField(BigIntegerField[_V]):
14951503
resolution: Incomplete
14961504
ticks_to_microsecond: Incomplete
14971505
utc: Incomplete
1506+
formats: Incomplete
14981507

14991508
@overload
15001509
def __new__(cls, *args: Any, null: Literal[True], **kwargs: Unpack[_FieldKwargs]) -> TimestampField[datetime | None]: ...
@@ -1677,7 +1686,7 @@ class _SortedFieldList:
16771686
class SchemaManager:
16781687
model: Incomplete
16791688
context_options: Incomplete
1680-
def __init__(self, model, database=None, **context_options) -> None: ...
1689+
def __init__(self, model, database: _DatabaseType | None = None, **context_options) -> None: ...
16811690

16821691
@property
16831692
def database(self): ...
@@ -1731,7 +1740,7 @@ class Metadata:
17311740
def __init__(
17321741
self,
17331742
model,
1734-
database=None,
1743+
database: _DatabaseType | None = None,
17351744
table_name=None,
17361745
indexes=None,
17371746
primary_key=None,
@@ -1778,7 +1787,7 @@ class Metadata:
17781787
def get_primary_keys(self): ...
17791788
def get_default_dict(self): ...
17801789
def fields_to_index(self) -> list[Incomplete]: ...
1781-
def set_database(self, database) -> None: ...
1790+
def set_database(self, database: _DatabaseType) -> None: ...
17821791
def set_table_name(self, table_name) -> None: ...
17831792

17841793
class SubclassAwareMetadata(Metadata):
@@ -1806,7 +1815,7 @@ class _BoundModelsContext(_callable_context_manager):
18061815
database: Incomplete
18071816
bind_refs: Incomplete
18081817
bind_backrefs: Incomplete
1809-
def __init__(self, models, database, bind_refs, bind_backrefs) -> None: ...
1818+
def __init__(self, models, database: _DatabaseType, bind_refs, bind_backrefs) -> None: ...
18101819
def __enter__(self): ...
18111820
def __exit__(
18121821
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
@@ -1820,7 +1829,7 @@ class Model(metaclass=ModelBase):
18201829
@classmethod
18211830
def validate_model(cls) -> None: ...
18221831
@classmethod
1823-
def alias(cls, alias=None) -> ModelAlias: ...
1832+
def alias(cls, alias=None) -> ModelAlias[Self]: ...
18241833
@classmethod
18251834
def select(cls, *fields) -> ModelSelect[Self]: ...
18261835
@classmethod
@@ -1846,7 +1855,7 @@ class Model(metaclass=ModelBase):
18461855
@classmethod
18471856
def bulk_update(cls, model_list, fields, batch_size=None): ...
18481857
@classmethod
1849-
def noop(cls) -> NoopModelSelect: ...
1858+
def noop(cls) -> NoopModelSelect[Self]: ...
18501859
@classmethod
18511860
def get(cls, *query, **filters) -> Self: ...
18521861
@classmethod
@@ -1875,9 +1884,9 @@ class Model(metaclass=ModelBase):
18751884
def __ne__(self, other) -> Expression | bool: ... # type: ignore[override]
18761885
def __sql__(self, ctx): ...
18771886
@classmethod
1878-
def bind(cls, database, bind_refs: bool = True, bind_backrefs: bool = True, _exclude=None) -> bool: ...
1887+
def bind(cls, database: _DatabaseType, bind_refs: bool = True, bind_backrefs: bool = True, _exclude=None) -> bool: ...
18791888
@classmethod
1880-
def bind_ctx(cls, database, bind_refs: bool = True, bind_backrefs: bool = True) -> _BoundModelsContext: ...
1889+
def bind_ctx(cls, database: _DatabaseType, bind_refs: bool = True, bind_backrefs: bool = True) -> _BoundModelsContext: ...
18811890
@classmethod
18821891
def table_exists(cls): ...
18831892
@classmethod
@@ -1891,12 +1900,12 @@ class Model(metaclass=ModelBase):
18911900
@classmethod
18921901
def add_index(cls, *fields, **kwargs) -> None: ...
18931902

1894-
class ModelAlias(Node):
1895-
def __init__(self, model, alias=None) -> None: ...
1903+
class ModelAlias(Node, Generic[_M]):
1904+
def __init__(self, model: type[_M], alias=None) -> None: ...
18961905
def __getattr__(self, attr: str): ...
18971906
def __setattr__(self, attr: str, value) -> None: ...
18981907
def get_field_aliases(self) -> list[Incomplete]: ...
1899-
def select(self, *selection) -> ModelSelect: ...
1908+
def select(self, *selection) -> ModelSelect[_M]: ...
19001909
def __call__(self, **kwargs): ...
19011910
def __sql__(self, ctx): ...
19021911

@@ -1936,8 +1945,10 @@ class BaseModelSelect(_ModelQueryHelper):
19361945
__sub__ = except_
19371946
def __iter__(self): ...
19381947
def prefetch(self, *subqueries): ...
1939-
def get(self, database=None): ...
1940-
def get_or_none(self, database=None): ...
1948+
def with_related(self, *loads: Load | ForeignKeyField[Any] | BackrefAccessor) -> Self: ...
1949+
def iterator(self, database: _DatabaseType | None = ...) -> Iterator[Any]: ...
1950+
def get(self, database: _DatabaseType | None = None): ...
1951+
def get_or_none(self, database: _DatabaseType | None = None): ...
19411952
def group_by(self, *columns) -> Self: ...
19421953

19431954
class ModelCompoundSelectQuery(BaseModelSelect, CompoundSelectQuery): # type: ignore[misc]
@@ -1948,8 +1959,8 @@ class ModelSelect(BaseModelSelect, Select, Generic[_M]): # type: ignore[misc]
19481959
model: type[_M]
19491960
def __init__(self, model, fields_or_models, is_default: bool = False) -> None: ...
19501961
def __iter__(self) -> Iterator[_M]: ...
1951-
def get(self, database=None) -> _M: ...
1952-
def get_or_none(self, database=None) -> _M | None: ...
1962+
def get(self, database: _DatabaseType | None = None) -> _M: ...
1963+
def get_or_none(self, database: _DatabaseType | None = None) -> _M | None: ...
19531964
def clone(self) -> Self: ...
19541965
def select(self, *fields_or_models) -> ModelSelect[_M]: ...
19551966
def select_extend(self, *columns) -> Self: ...
@@ -1963,7 +1974,7 @@ class ModelSelect(BaseModelSelect, Select, Generic[_M]): # type: ignore[misc]
19631974
def create_table(self, name, safe: bool = True, **meta): ...
19641975
def __sql_selection__(self, ctx, is_subquery: bool = False): ...
19651976

1966-
class NoopModelSelect(ModelSelect):
1977+
class NoopModelSelect(ModelSelect[_M]):
19671978
def __sql__(self, ctx): ...
19681979

19691980
class _ModelWriteQueryHelper(_ModelQueryHelper):
@@ -1982,7 +1993,7 @@ class ModelInsert(_ModelWriteQueryHelper, Insert): # type: ignore[misc]
19821993

19831994
class ModelDelete(_ModelWriteQueryHelper, Delete): ... # type: ignore[misc]
19841995

1985-
class ManyToManyQuery(ModelSelect):
1996+
class ManyToManyQuery(ModelSelect[_M]):
19861997
def __init__(self, instance, accessor, rel, *args, **kwargs) -> None: ...
19871998
def add(self, value, clear_existing: bool = False) -> None: ...
19881999
def remove(self, value): ...
@@ -2053,6 +2064,16 @@ class PrefetchQuery(_PrefetchQuery):
20532064

20542065
def prefetch(sq, *subqueries): ...
20552066

2067+
class Load(Node):
2068+
def __init__(
2069+
self,
2070+
rel: ForeignKeyField[Any] | BackrefAccessor,
2071+
query: ModelSelect[Any] | None = ...,
2072+
strategy: int = ...,
2073+
per_parent: int | None = ...,
2074+
) -> None: ...
2075+
def then(self, *children: Load | ForeignKeyField[Any] | BackrefAccessor) -> Self: ...
2076+
20562077
__all__ = [
20572078
"AnyField",
20582079
"AsIs",
@@ -2104,6 +2125,7 @@ __all__ = [
21042125
"IPField",
21052126
"JOIN",
21062127
"JSONField",
2128+
"Load",
21072129
"ManyToManyField",
21082130
"Model",
21092131
"ModelIndex",

0 commit comments

Comments
 (0)