(which when using DeclarativeMeta is cls.__dict__). This should
in theory make it easier for custom metaclasses to modify
the state passed into _as_declarative.
-
+
+ - the __mapper_args__ dict is copied when propagating to a subclass.
+ Still need to decide how the argument propagation should
+ work in the bigger picture. [ticket:1393]
+
- mysql
- Fixed reflection bug whereby when COLLATE was present,
nullable flag and server defaults would not be reflected.
raise exceptions.ArgumentError(
"Can't add additional column %r when specifying __table__" % key)
- mapper_args = getattr(cls, '__mapper_args__', {})
+ mapper_args = dict(getattr(cls, '__mapper_args__', {}))
if 'inherits' not in mapper_args:
for c in cls.__bases__:
if _is_mapped_class(c):
class DeclarativeInheritanceTest(DeclarativeTestBase):
+
+ def test_we_must_copy_mapper_args(self):
+ class Person(Base):
+ __tablename__ = 'people'
+ id = Column(Integer, primary_key=True)
+ discriminator = Column('type', String(50))
+ __mapper_args__ = {'polymorphic_on': discriminator}
+
+ class Engineer(Person):
+ primary_language = Column(String(50))
+
+ assert 'inherits' not in Person.__mapper_args__
+
def test_custom_join_condition(self):
class Foo(Base):
__tablename__ = 'foo'