diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2020-07-07 00:18:20 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-07-07 00:18:20 +0000 |
| commit | bcb2421e9faaab8ce48e2731b9a2f7411204f393 (patch) | |
| tree | 65b68042535a9d4c0fc892c06d7a4d45393ba3aa /test | |
| parent | f97691e2a7a75657b6ef0d02d814f22f219fd780 (diff) | |
| parent | 67504137e96547664754691bdd3269b473a488d1 (diff) | |
| download | sqlalchemy-bcb2421e9faaab8ce48e2731b9a2f7411204f393.tar.gz | |
Merge "Add **kw support to DeclarativeMeta.__init__"
Diffstat (limited to 'test')
| -rw-r--r-- | test/ext/declarative/test_basic.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/ext/declarative/test_basic.py b/test/ext/declarative/test_basic.py index 7dfcc70bb..1c03f7bd9 100644 --- a/test/ext/declarative/test_basic.py +++ b/test/ext/declarative/test_basic.py @@ -13,6 +13,7 @@ from sqlalchemy import testing from sqlalchemy import UniqueConstraint from sqlalchemy import util from sqlalchemy.ext import declarative as decl +from sqlalchemy.ext.declarative import DeclarativeMeta from sqlalchemy.ext.declarative import declared_attr from sqlalchemy.ext.declarative import synonym_for from sqlalchemy.ext.declarative.base import _DeferredMapperConfig @@ -2131,6 +2132,33 @@ class DeclarativeTest(DeclarativeTestBase): assert not hasattr(Foo, "data_hybrid") + @testing.requires.python3 + def test_kw_support_in_declarative_meta_init(self): + # This will not fail if DeclarativeMeta __init__ supports **kw + + class BaseUser(Base): + __tablename__ = "base" + id_ = Column(Integer, primary_key=True) + + @classmethod + def __init_subclass__(cls, random_keyword=False, **kw): + super().__init_subclass__(**kw) + cls._set_random_keyword_used_here = random_keyword + + class User(BaseUser): + __tablename__ = "user" + id_ = Column(Integer, ForeignKey("base.id_"), primary_key=True) + + # Check the default option + eq_(User._set_random_keyword_used_here, False) + + # Build the metaclass with a keyword! + bases = (BaseUser,) + UserType = DeclarativeMeta("UserType", bases, {}, random_keyword=True) + + # Check to see if __init_subclass__ works in supported versions + eq_(UserType._set_random_keyword_used_here, True) + def _produce_test(inline, stringbased): class ExplicitJoinTest(fixtures.MappedTest): |
