From 0f32553818fa11290c09c7f33723555c2ea0cdac Mon Sep 17 00:00:00 2001 From: Akuli Date: Sat, 12 Nov 2022 21:22:58 +0200 Subject: [PATCH 1/5] Make peewee stubs compatible with peewee 3.15.4 --- stdlib/typing.pyi | 2 ++ stubs/peewee/peewee.pyi | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index c9cfe304311e..cc27ae7dbda2 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -618,6 +618,8 @@ class MutableMapping(Mapping[_KT, _VT], Generic[_KT, _VT]): # -- os._Environ.__ior__ # -- collections.UserDict.__ior__ # -- collections.ChainMap.__ior__ + # -- peewee.attrdict.__add__ + # -- peewee.attrdict.__iadd__ # -- weakref.WeakValueDictionary.__ior__ # -- weakref.WeakKeyDictionary.__ior__ @overload diff --git a/stubs/peewee/peewee.pyi b/stubs/peewee/peewee.pyi index fbd8d9566870..f838a801e0d7 100644 --- a/stubs/peewee/peewee.pyi +++ b/stubs/peewee/peewee.pyi @@ -1,7 +1,7 @@ import itertools import logging import threading -from _typeshed import Incomplete +from _typeshed import Incomplete, Self, SupportsKeysAndGetItem from collections.abc import Generator from typing import NamedTuple @@ -15,15 +15,19 @@ basestring = str long = int izip_longest = itertools.zip_longest -class attrdict(dict[Incomplete, Incomplete]): - def __getattr__(self, attr): ... - def __setattr__(self, attr, value) -> None: ... - def __iadd__(self, rhs): ... - def __add__(self, rhs): ... +_VT = TypeVar("_VT") + +class attrdict(dict[str, _VT]): + def __getattr__(self, attr: str) -> _VT: ... + def __setattr__(self, attr: str, value: _VT) -> None: ... + # calls dict.update() + def __iadd__(self: Self, rhs: SupportsKeysAndGetItem[str, _VT] | Iterable[tuple[str, _VT]]) -> Self: ... + def __add__(self, rhs: SupportsKeysAndGetItem[str, _VT] | Iterable[tuple[str, _VT]]) -> attrdict[_VT]: ... OP: Incomplete DJANGO_MAP: Incomplete JOIN: Incomplete +PREFETCH_TYPE: attrdict[str, int] def chunked(it, n) -> Generator[Incomplete, None, None]: ... @@ -47,6 +51,8 @@ class DatabaseProxy(Proxy): def manual_commit(self): ... def transaction(self, *args, **kwargs): ... def savepoint(self): ... + @property + def Model(self) -> type[Model]: ... class ModelDescriptor: ... @@ -369,6 +375,7 @@ class SQL(ColumnBase): def Check(constraint, name: Incomplete | None = ...): ... class Function(ColumnBase): + no_coerce_functions: ClassVar[set[str]] name: Incomplete arguments: Incomplete def __init__(self, name, arguments, coerce: bool = ..., python_value: Incomplete | None = ...) -> None: ... @@ -820,6 +827,8 @@ class Database(_callable_context_manager): def bind(self, models, bind_refs: bool = ..., bind_backrefs: bool = ...) -> None: ... def bind_ctx(self, models, bind_refs: bool = ..., bind_backrefs: bool = ...): ... def get_noop_select(self, ctx): ... + @property + def Model(self) -> type[Model]: ... class SqliteDatabase(Database): field_types: Incomplete From c45001d3dcd766f67a8d44ad07088bc90ce32b1a Mon Sep 17 00:00:00 2001 From: Akuli Date: Sat, 12 Nov 2022 21:27:10 +0200 Subject: [PATCH 2/5] fix import --- stubs/peewee/peewee.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/peewee/peewee.pyi b/stubs/peewee/peewee.pyi index f838a801e0d7..233de8dde64f 100644 --- a/stubs/peewee/peewee.pyi +++ b/stubs/peewee/peewee.pyi @@ -3,7 +3,7 @@ import logging import threading from _typeshed import Incomplete, Self, SupportsKeysAndGetItem from collections.abc import Generator -from typing import NamedTuple +from typing import NamedTuple, TypeVar class NullHandler(logging.Handler): def emit(self, record) -> None: ... From 6385e51b1852b80d6fcf4e236820ec73461f6870 Mon Sep 17 00:00:00 2001 From: Akuli Date: Sat, 12 Nov 2022 21:32:13 +0200 Subject: [PATCH 3/5] More fixings --- stubs/peewee/peewee.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stubs/peewee/peewee.pyi b/stubs/peewee/peewee.pyi index 233de8dde64f..44d9d6d29541 100644 --- a/stubs/peewee/peewee.pyi +++ b/stubs/peewee/peewee.pyi @@ -3,7 +3,7 @@ import logging import threading from _typeshed import Incomplete, Self, SupportsKeysAndGetItem from collections.abc import Generator -from typing import NamedTuple, TypeVar +from typing import NamedTuple, TypeVar, Iterable, ClassVar class NullHandler(logging.Handler): def emit(self, record) -> None: ... @@ -27,7 +27,7 @@ class attrdict(dict[str, _VT]): OP: Incomplete DJANGO_MAP: Incomplete JOIN: Incomplete -PREFETCH_TYPE: attrdict[str, int] +PREFETCH_TYPE: attrdict[int] def chunked(it, n) -> Generator[Incomplete, None, None]: ... From daf36099da413a1277fd6f1c4f315b4dae2bcea8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 12 Nov 2022 19:33:44 +0000 Subject: [PATCH 4/5] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/peewee/peewee.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/peewee/peewee.pyi b/stubs/peewee/peewee.pyi index 44d9d6d29541..0246d0d6703b 100644 --- a/stubs/peewee/peewee.pyi +++ b/stubs/peewee/peewee.pyi @@ -3,7 +3,7 @@ import logging import threading from _typeshed import Incomplete, Self, SupportsKeysAndGetItem from collections.abc import Generator -from typing import NamedTuple, TypeVar, Iterable, ClassVar +from typing import ClassVar, Iterable, NamedTuple, TypeVar class NullHandler(logging.Handler): def emit(self, record) -> None: ... From 3da8b0ae2f666d81bc624a3ade1d7ff5b293ece7 Mon Sep 17 00:00:00 2001 From: Akuli Date: Sat, 12 Nov 2022 21:38:36 +0200 Subject: [PATCH 5/5] lint --- stubs/peewee/peewee.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stubs/peewee/peewee.pyi b/stubs/peewee/peewee.pyi index 0246d0d6703b..da8e5f9676da 100644 --- a/stubs/peewee/peewee.pyi +++ b/stubs/peewee/peewee.pyi @@ -2,8 +2,8 @@ import itertools import logging import threading from _typeshed import Incomplete, Self, SupportsKeysAndGetItem -from collections.abc import Generator -from typing import ClassVar, Iterable, NamedTuple, TypeVar +from collections.abc import Generator, Iterable +from typing import ClassVar, NamedTuple, TypeVar class NullHandler(logging.Handler): def emit(self, record) -> None: ...