From ed7f35a2bc53610d5166cbccbb965fc97cfdbac4 Mon Sep 17 00:00:00 2001 From: P M <10617122+pylipp@users.noreply.github.com> Date: Tue, 23 Apr 2024 21:26:36 +0200 Subject: [PATCH] Add peewee `playhouse.flask_utils` stubs (#11731) Co-authored-by: Avasam Co-authored-by: Alex Waygood --- stubs/peewee/@tests/stubtest_allowlist.txt | 6 +++++ stubs/peewee/METADATA.toml | 8 +++++++ stubs/peewee/playhouse/__init__.pyi | 0 stubs/peewee/playhouse/flask_utils.pyi | 28 ++++++++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 stubs/peewee/playhouse/__init__.pyi create mode 100644 stubs/peewee/playhouse/flask_utils.pyi diff --git a/stubs/peewee/@tests/stubtest_allowlist.txt b/stubs/peewee/@tests/stubtest_allowlist.txt index b87531238..d398bf452 100644 --- a/stubs/peewee/@tests/stubtest_allowlist.txt +++ b/stubs/peewee/@tests/stubtest_allowlist.txt @@ -8,3 +8,9 @@ peewee.DQ.__invert__ peewee.Window.as_groups peewee.Window.as_range peewee.Window.as_rows + +# Ignore missing playhouse modules and names we don't currently provide +playhouse\.\w+? +playhouse.flask_utils.PaginatedQuery +playhouse.flask_utils.get_\w+ +playhouse.flask_utils.object_list diff --git a/stubs/peewee/METADATA.toml b/stubs/peewee/METADATA.toml index 7b87997bd..aa10ee81b 100644 --- a/stubs/peewee/METADATA.toml +++ b/stubs/peewee/METADATA.toml @@ -1,2 +1,10 @@ version = "3.17.3" upstream_repository = "https://github.com/coleifer/peewee" +# We're not providing stubs for all playhouse modules right now +# https://github.com/python/typeshed/pull/11731#issuecomment-2065729058 +partial_stub = true + +[tool.stubtest] +stubtest_requirements = ["Flask>=2.0.0"] +# Using stubtest_allowlist to ignore playhouse modules we don't provide. +ignore_missing_stub = false diff --git a/stubs/peewee/playhouse/__init__.pyi b/stubs/peewee/playhouse/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/stubs/peewee/playhouse/flask_utils.pyi b/stubs/peewee/playhouse/flask_utils.pyi new file mode 100644 index 000000000..78c9ce627 --- /dev/null +++ b/stubs/peewee/playhouse/flask_utils.pyi @@ -0,0 +1,28 @@ +from _typeshed import Unused +from collections.abc import Container +from typing import Any +from typing_extensions import TypeAlias + +from peewee import Database, ModelBase, Proxy + +# Is actually flask.Flask +_Flask: TypeAlias = Any + +class FlaskDB: + # Omitting undocumented base_model_class on purpose, use FlaskDB.Model instead + database: Database | Proxy + def __init__( + self, + app: _Flask | None = None, + database: Database | Proxy | None = None, + # Is actually type[ModelClass] but stubtest likely confuses with Model property + # https://github.com/python/typeshed/pull/11731#issuecomment-2067694259 + model_class=..., + excluded_routes: Container[str] | None = None, + ) -> None: ... + def init_app(self, app: _Flask) -> None: ... + def get_model_class(self) -> type[ModelBase]: ... + @property + def Model(self) -> type[ModelBase]: ... + def connect_db(self) -> None: ... + def close_db(self, exc: Unused) -> None: ...