summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2020-07-07 00:18:20 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2020-07-07 00:18:20 +0000
commitbcb2421e9faaab8ce48e2731b9a2f7411204f393 (patch)
tree65b68042535a9d4c0fc892c06d7a4d45393ba3aa /test
parentf97691e2a7a75657b6ef0d02d814f22f219fd780 (diff)
parent67504137e96547664754691bdd3269b473a488d1 (diff)
downloadsqlalchemy-bcb2421e9faaab8ce48e2731b9a2f7411204f393.tar.gz
Merge "Add **kw support to DeclarativeMeta.__init__"
Diffstat (limited to 'test')
-rw-r--r--test/ext/declarative/test_basic.py28
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):