From: Kai Mueller <15907922+kasium@users.noreply.github.com> Date: Tue, 30 Nov 2021 14:59:33 +0000 (+0000) Subject: Add tests and fix issues X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3f5e2f1b970b0d4ec027efec2fd31162686d51fa;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Add tests and fix issues --- diff --git a/lib/sqlalchemy/orm/decl_api.py b/lib/sqlalchemy/orm/decl_api.py index 25de0fb405..b5bfb0380f 100644 --- a/lib/sqlalchemy/orm/decl_api.py +++ b/lib/sqlalchemy/orm/decl_api.py @@ -809,7 +809,7 @@ class registry(object): class_dict["__abstract__"] = True if mapper: class_dict["__mapper_cls__"] = mapper - if cls.__class_getitem__: + if hasattr(cls, "__class_getitem__"): class_dict["__class_getitem__"] = cls.__class_getitem__ return metaclass(name, bases, class_dict) diff --git a/test/orm/declarative/test_typing_py3k.py b/test/orm/declarative/test_typing_py3k.py index e69de29bb2..96629f58ab 100644 --- a/test/orm/declarative/test_typing_py3k.py +++ b/test/orm/declarative/test_typing_py3k.py @@ -0,0 +1,19 @@ +from typing import TypeVar, Generic, Type +from sqlalchemy import Column, Integer +from sqlalchemy.orm import as_declarative + + +def test_class_getitem(): + T = TypeVar("T", bound="CommonBase") + + class CommonBase(Generic[T]): + @classmethod + def boring(cls: Type[T]) -> Type[T]: + return cls + + @as_declarative() + class Base(CommonBase[T]): + pass + + class Tab(Base["Tab"]): + a = Column(Integer, primary_key=True)