Skip to content

Commit ac78486

Browse files
authored
[peewee] Update to 4.0.5 (#15696)
1 parent b249a9d commit ac78486

3 files changed

Lines changed: 69 additions & 36 deletions

File tree

stubs/peewee/@tests/stubtest_allowlist.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
peewee.Model.insert
44
peewee.Model.replace
55
peewee.Model.update
6+
67
# Wrapped with @Node.copy which changes the signature to "def (self, *args, **kwargs)"
78
peewee.DQ.__invert__
89
peewee.Window.as_groups
910
peewee.Window.as_range
1011
peewee.Window.as_rows
12+
peewee._ModelQueryHelper.models
13+
1114
# Wrapped with @database_required which sometimes injects the database argument
1215
peewee.BaseQuery.execute
1316
peewee.CompoundSelectQuery.exists

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.1"
1+
version = "4.0.5"
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 & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
1-
import itertools
2-
import logging
1+
import re
32
import threading
4-
from _typeshed import Incomplete, SupportsKeysAndGetItem
3+
from _typeshed import Incomplete, SupportsKeysAndGetItem, Unused
54
from collections.abc import Callable, Generator, Iterable, Iterator
65
from datetime import datetime
76
from decimal import Decimal
87
from types import TracebackType
9-
from typing import Any, ClassVar, Final, Literal, NamedTuple, TypeVar, overload
10-
from typing_extensions import Self
8+
from typing import Any, ClassVar, Final, Literal, NamedTuple, NoReturn, TypeVar, overload, type_check_only
9+
from typing_extensions import Self, TypeIs
1110
from uuid import UUID
1211

13-
class NullHandler(logging.Handler):
14-
def emit(self, record) -> None: ...
12+
def callable_(c: object) -> TypeIs[Callable[..., object]]: ...
1513

16-
text_type = str
17-
bytes_type = bytes
18-
buffer_type = memoryview
19-
basestring = str
20-
long = int
21-
izip_longest = itertools.zip_longest
14+
multi_types: tuple[type[Incomplete], ...]
15+
16+
def reraise(tp: Unused, value: BaseException, tb: TracebackType | None = None) -> NoReturn: ...
2217

2318
_T = TypeVar("_T")
2419
_VT = TypeVar("_VT")
@@ -44,8 +39,13 @@ SCOPE_COLUMN: Final = 16
4439
CSQ_PARENTHESES_NEVER: Final = 0
4540
CSQ_PARENTHESES_ALWAYS: Final = 1
4641
CSQ_PARENTHESES_UNNESTED: Final = 2
42+
SNAKE_CASE_STEP1: Final[re.Pattern[str]]
43+
SNAKE_CASE_STEP2: Final[re.Pattern[str]]
44+
IDENTIFIER_RE: Final[re.Pattern[str]]
45+
MODEL_BASE: Final = "_metaclass_helper_"
4746

48-
def chunked(it, n) -> Generator[Incomplete]: ...
47+
def make_identifier(s: str) -> str: ...
48+
def chunked(it, n) -> Generator[list[Incomplete]]: ...
4949

5050
class _callable_context_manager:
5151
def __call__(self, fn): ...
@@ -347,14 +347,15 @@ class BitwiseMixin:
347347
def __invert__(self) -> BitwiseNegated: ...
348348

349349
class BitwiseNegated(BitwiseMixin, WrappedNode):
350+
op: str
350351
def __invert__(self): ...
351352
def __sql__(self, ctx): ...
352353

353354
class Value(ColumnBase):
354355
value: Incomplete
355356
converter: Incomplete
356-
multi: Incomplete
357-
values: list[Incomplete]
357+
multi: bool
358+
values: list[Incomplete] | None
358359
def __init__(self, value, converter=None, unpack: bool = True) -> None: ...
359360
def __sql__(self, ctx): ...
360361

@@ -463,7 +464,7 @@ class WindowAlias(Node):
463464
def __sql__(self, ctx): ...
464465

465466
class ForUpdate(Node):
466-
def __init__(self, expr, of=None, nowait=None) -> None: ...
467+
def __init__(self, expr, of=None, nowait: bool | None = None, skip_locked: bool | None = None) -> None: ...
467468
def __sql__(self, ctx): ...
468469

469470
class Case(ColumnBase):
@@ -476,7 +477,7 @@ class Case(ColumnBase):
476477
class NodeList(ColumnBase):
477478
nodes: Incomplete
478479
glue: Incomplete
479-
parens: Incomplete
480+
parens: bool
480481
def __init__(self, nodes, glue: str = " ", parens: bool = False) -> None: ...
481482
def __sql__(self, ctx): ...
482483

@@ -598,8 +599,6 @@ class Select(SelectBase):
598599
distinct=None,
599600
windows=None,
600601
for_update=None,
601-
for_update_of=None,
602-
nowait=None,
603602
lateral=None,
604603
**kwargs,
605604
) -> None: ...
@@ -619,7 +618,9 @@ class Select(SelectBase):
619618
def having(self, *expressions) -> Self: ...
620619
def distinct(self, *columns) -> Self: ...
621620
def window(self, *windows) -> Self: ...
622-
def for_update(self, for_update: bool = True, of=None, nowait=None) -> Self: ...
621+
def for_update(
622+
self, for_update: bool = True, of=None, nowait: bool | None = None, skip_locked: bool | None = None
623+
) -> Self: ...
623624
def lateral(self, lateral: bool = True) -> Self: ...
624625
def __sql_selection__(self, ctx, is_subquery: bool = False): ...
625626
def __sql__(self, ctx): ...
@@ -931,7 +932,6 @@ class Psycopg2Adapter(_BasePsycopgAdapter):
931932
def is_connection_usable(self, conn) -> bool: ...
932933
def is_connection_reusable(self, conn) -> bool: ...
933934
def is_connection_closed(self, conn) -> bool: ...
934-
def extract_date(self, date_part, date_field) -> Function: ...
935935

936936
class Psycopg3Adapter(_BasePsycopgAdapter):
937937
json_type: Incomplete
@@ -945,7 +945,6 @@ class Psycopg3Adapter(_BasePsycopgAdapter):
945945
def is_connection_usable(self, conn) -> bool: ...
946946
def is_connection_reusable(self, conn) -> bool: ...
947947
def is_connection_closed(self, conn) -> bool: ...
948-
def extract_date(self, date_part, date_field) -> Function: ...
949948

950949
class PostgresqlDatabase(Database):
951950
field_types: Incomplete
@@ -956,7 +955,6 @@ class PostgresqlDatabase(Database):
956955
for_update: bool
957956
nulls_ordering: bool
958957
returning_clause: bool
959-
safe_create_index: bool
960958
sequences: bool
961959
psycopg2_adapter: Incomplete
962960
psycopg3_adapter: Incomplete
@@ -986,6 +984,7 @@ class PostgresqlDatabase(Database):
986984
def conflict_update(self, oc, query) -> NodeList: ...
987985
def extract_date(self, date_part, date_field) -> Function: ...
988986
def truncate_date(self, date_part, date_field) -> Function: ...
987+
def interval(self, val) -> NodeList: ...
989988
def to_timestamp(self, date_field) -> Function: ...
990989
def from_timestamp(self, date_field) -> Function: ...
991990
def get_noop_select(self, ctx): ...
@@ -1077,8 +1076,11 @@ class CursorWrapper:
10771076
def process_row(self, row): ...
10781077
def iterator(self) -> Generator[Incomplete]: ...
10791078
def fill_cache(self, n: int = 0) -> None: ...
1079+
def dedupe_columns(self, columns: Iterable[str], valid_identifiers: bool = True) -> list[str]: ...
10801080

10811081
class DictCursorWrapper(CursorWrapper):
1082+
columns: list[str]
1083+
ncols: int
10821084
def initialize(self) -> None: ...
10831085
def process_row(self, row): ...
10841086

@@ -1089,7 +1091,10 @@ class NamedTupleCursorWrapper(CursorWrapper):
10891091

10901092
class ObjectCursorWrapper(DictCursorWrapper):
10911093
constructor: Incomplete
1094+
columns: list[str]
1095+
ncols: int
10921096
def __init__(self, cursor, constructor) -> None: ...
1097+
def initialize(self) -> None: ...
10931098
def process_row(self, row): ...
10941099

10951100
class ResultIterator:
@@ -1231,7 +1236,7 @@ class CharField(_StringField):
12311236
def get_modifiers(self) -> list[int] | None: ...
12321237

12331238
class FixedCharField(CharField):
1234-
def python_value(self, value): ...
1239+
def adapt(self, value) -> str: ...
12351240

12361241
class TextField(_StringField): ...
12371242

@@ -1510,6 +1515,7 @@ class SchemaManager:
15101515
def drop_table(self, safe: bool = True, **options) -> None: ...
15111516
def truncate_table(self, restart_identity: bool = False, cascade: bool = False) -> None: ...
15121517
def create_indexes(self, safe: bool = True) -> None: ...
1518+
def drop_index(self, field=None, index=None, safe: bool = True): ...
15131519
def drop_indexes(self, safe: bool = True) -> None: ...
15141520
def create_sequence(self, field) -> None: ...
15151521
def drop_sequence(self, field) -> None: ...
@@ -1735,6 +1741,7 @@ class _ModelQueryHelper:
17351741
default_row_type: Incomplete
17361742
def __init__(self, *args, **kwargs) -> None: ...
17371743
def objects(self, constructor=None) -> Self: ...
1744+
def models(self) -> Self: ...
17381745

17391746
class ModelRaw(_ModelQueryHelper, RawQuery): # type: ignore[misc]
17401747
model: Incomplete
@@ -1804,41 +1811,63 @@ class ManyToManyQuery(ModelSelect):
18041811
class BaseModelCursorWrapper(DictCursorWrapper):
18051812
model: Incomplete
18061813
select: Incomplete
1814+
ncols: int
1815+
columns: list[str]
1816+
converters: list[Incomplete]
1817+
fields: list[Incomplete]
1818+
no_convert: list[int]
1819+
convert: list[int]
18071820
def __init__(self, cursor, model, columns) -> None: ...
1808-
initialize: Incomplete
1821+
def initialize(self) -> None: ...
18091822
def process_row(self, row): ...
18101823

18111824
class ModelDictCursorWrapper(BaseModelCursorWrapper):
1812-
def process_row(self, row) -> dict[Incomplete, Incomplete]: ...
1825+
unique_columns: list[str]
1826+
def initialize(self) -> None: ...
1827+
def process_row(self, row) -> dict[str, Incomplete]: ...
18131828

1814-
class ModelTupleCursorWrapper(ModelDictCursorWrapper):
1829+
class ModelTupleCursorWrapper(BaseModelCursorWrapper):
18151830
constructor: Incomplete
18161831
def process_row(self, row) -> tuple[Incomplete, ...]: ... # type: ignore[override]
18171832

18181833
class ModelNamedTupleCursorWrapper(ModelTupleCursorWrapper):
1819-
tuple_class: Incomplete
1834+
impl: Incomplete
18201835
constructor: Incomplete
18211836
def initialize(self) -> None: ...
18221837

18231838
class ModelObjectCursorWrapper(ModelDictCursorWrapper):
18241839
constructor: Incomplete
18251840
is_model: Incomplete
1841+
identifiers: list[str]
18261842
def __init__(self, cursor, model, select, constructor) -> None: ...
1843+
def initialize(self) -> None: ...
18271844
def process_row(self, row): ...
18281845

18291846
class ModelCursorWrapper(BaseModelCursorWrapper):
18301847
from_list: Incomplete
18311848
joins: Incomplete
1832-
def __init__(self, cursor, model, select, from_list, joins) -> None: ...
1849+
dicts: bool
1850+
def __init__(self, cursor, model, select, from_list, joins, dicts: bool = False) -> None: ...
18331851
key_to_constructor: Incomplete
1834-
src_is_dest: Incomplete
1835-
src_to_dest: Incomplete
1836-
column_keys: Incomplete
1852+
src_is_dest: dict[Incomplete, Incomplete]
1853+
src_to_dest: list[tuple[Incomplete, Incomplete, Incomplete, bool, Incomplete, bool]]
1854+
column_keys: list[Incomplete]
18371855
def initialize(self) -> None: ...
18381856
def process_row(self, row): ...
18391857

1840-
class PrefetchQuery:
1841-
def __new__(cls, query, fields=None, is_backref=None, rel_models=None, field_to_name=None, model=None) -> Self: ...
1858+
@type_check_only
1859+
class _PrefetchQuery(NamedTuple):
1860+
query: Incomplete
1861+
fields: Incomplete
1862+
is_backref: bool
1863+
rel_models: Incomplete
1864+
field_to_name: Incomplete
1865+
model: Incomplete
1866+
1867+
class PrefetchQuery(_PrefetchQuery):
1868+
def __new__(
1869+
cls, query, fields=None, is_backref: bool | None = None, rel_models=None, field_to_name=None, model=None
1870+
) -> Self: ...
18421871
def populate_instance(self, instance, id_map) -> None: ...
18431872
def store_instance(self, instance, id_map) -> None: ...
18441873

@@ -1878,6 +1907,7 @@ __all__ = [
18781907
"DoesNotExist",
18791908
"DoubleField",
18801909
"DQ",
1910+
"Entity",
18811911
"EXCLUDED",
18821912
"Field",
18831913
"FixedCharField",

0 commit comments

Comments
 (0)