From ca633bbde85d9d88a0920bbd71d410af2d558950 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Sun, 31 Jul 2022 10:36:46 -0400 Subject: [PATCH] Add type hints to `flask_sqlalchemy.model` (#8389) --- .../flask_sqlalchemy/model.pyi | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi b/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi index b7f9a3485..b8250ae16 100644 --- a/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi +++ b/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi @@ -1,7 +1,11 @@ from re import Pattern -from typing import Any +from typing import Any, Generic, TypeVar +from sqlalchemy import Table from sqlalchemy.ext.declarative import DeclarativeMeta +from sqlalchemy.orm import Query + +_ModelT = TypeVar("_ModelT") def should_set_tablename(cls: type) -> bool: ... @@ -10,14 +14,14 @@ camelcase_re: Pattern[str] def camel_to_snake_case(name: str) -> str: ... class NameMetaMixin(type): - def __init__(cls, name, bases, d) -> None: ... - def __table_cls__(cls, *args, **kwargs): ... + def __init__(cls, name: str, bases: tuple[type, ...], d: dict[str, Any]) -> None: ... + def __table_cls__(cls, *args, **kwargs) -> Table | None: ... class BindMetaMixin(type): - def __init__(cls, name, bases, d) -> None: ... + def __init__(cls, name: str, bases: tuple[type, ...], d: dict[str, Any]) -> None: ... class DefaultMeta(NameMetaMixin, BindMetaMixin, DeclarativeMeta): ... -class Model: - query_class: Any | None - query: Any | None +class Model(Generic[_ModelT]): + query_class: type[Query[_ModelT]] | None + query: Query[_ModelT] | None