-from sqlalchemy.testing import fixtures, eq_
+from sqlalchemy.testing import fixtures
from ..orm._fixtures import FixtureTest
from sqlalchemy.ext.automap import automap_base
-from sqlalchemy.orm import relationship, interfaces, backref
+from sqlalchemy.orm import relationship, interfaces
from sqlalchemy.ext.automap import generate_relationship
-from sqlalchemy.testing.mock import Mock, call
+from sqlalchemy.testing.mock import Mock
from sqlalchemy import String, Integer, ForeignKey
from sqlalchemy import testing
from sqlalchemy.testing.schema import Table, Column
+
class AutomapTest(fixtures.MappedTest):
@classmethod
def define_tables(cls, metadata):
def test_relationship_explicit_override_o2m(self):
Base = automap_base(metadata=self.metadata)
prop = relationship("addresses", collection_class=set)
+
class User(Base):
__tablename__ = 'users'
Base = automap_base(metadata=self.metadata)
prop = relationship("users")
+
class Address(Base):
__tablename__ = 'addresses'
u1 = User(name='u1', address_collection=[a1])
assert a1.users is u1
-
def test_relationship_self_referential(self):
Base = automap_base(metadata=self.metadata)
Base.prepare()
def classname_for_table(base, tablename, table):
return str("cls_" + tablename)
- def name_for_scalar_relationship(base, local_cls, referred_cls, constraint):
+ def name_for_scalar_relationship(
+ base, local_cls, referred_cls, constraint):
return "scalar_" + referred_cls.__name__
- def name_for_collection_relationship(base, local_cls, referred_cls, constraint):
+ def name_for_collection_relationship(
+ base, local_cls, referred_cls, constraint):
return "coll_" + referred_cls.__name__
Base.prepare(
- classname_for_table=classname_for_table,
- name_for_scalar_relationship=name_for_scalar_relationship,
- name_for_collection_relationship=name_for_collection_relationship
- )
+ classname_for_table=classname_for_table,
+ name_for_scalar_relationship=name_for_scalar_relationship,
+ name_for_collection_relationship=name_for_collection_relationship
+ )
User = Base.classes.cls_users
Address = Base.classes.cls_addresses
class Order(Base):
__tablename__ = 'orders'
- items_collection = relationship("items",
- secondary="order_items",
- collection_class=set)
+ items_collection = relationship(
+ "items",
+ secondary="order_items",
+ collection_class=set)
Base.prepare()
Item = Base.classes['items']
Base = automap_base(metadata=self.metadata)
mock = Mock()
- def _gen_relationship(base, direction, return_fn, attrname,
- local_cls, referred_cls, **kw):
+
+ def _gen_relationship(
+ base, direction, return_fn, attrname,
+ local_cls, referred_cls, **kw):
mock(base, direction, attrname)
- return generate_relationship(base, direction, return_fn,
- attrname, local_cls, referred_cls, **kw)
+ return generate_relationship(
+ base, direction, return_fn,
+ attrname, local_cls, referred_cls, **kw)
Base.prepare(generate_relationship=_gen_relationship)
assert set(tuple(c[1]) for c in mock.mock_calls).issuperset([
- (Base, interfaces.MANYTOONE, "nodes"),
- (Base, interfaces.MANYTOMANY, "keywords_collection"),
- (Base, interfaces.MANYTOMANY, "items_collection"),
- (Base, interfaces.MANYTOONE, "users"),
- (Base, interfaces.ONETOMANY, "addresses_collection"),
+ (Base, interfaces.MANYTOONE, "nodes"),
+ (Base, interfaces.MANYTOMANY, "keywords_collection"),
+ (Base, interfaces.MANYTOMANY, "items_collection"),
+ (Base, interfaces.MANYTOONE, "users"),
+ (Base, interfaces.ONETOMANY, "addresses_collection"),
])
class AutomapInhTest(fixtures.MappedTest):
@classmethod
def define_tables(cls, metadata):
- Table('single', metadata,
- Column('id', Integer, primary_key=True),
- Column('type', String(10)),
- test_needs_fk=True
- )
-
- Table('joined_base', metadata,
- Column('id', Integer, primary_key=True),
- Column('type', String(10)),
- test_needs_fk=True
- )
-
- Table('joined_inh', metadata,
- Column('id', Integer, ForeignKey('joined_base.id'), primary_key=True),
- test_needs_fk=True
- )
+ Table(
+ 'single', metadata,
+ Column('id', Integer, primary_key=True),
+ Column('type', String(10)),
+ test_needs_fk=True
+ )
+
+ Table(
+ 'joined_base', metadata,
+ Column('id', Integer, primary_key=True),
+ Column('type', String(10)),
+ test_needs_fk=True
+ )
+
+ Table(
+ 'joined_inh', metadata,
+ Column(
+ 'id', Integer,
+ ForeignKey('joined_base.id'), primary_key=True),
+ test_needs_fk=True
+ )
FixtureTest.define_tables(metadata)
type = Column(String)
- __mapper_args__ = {"polymorphic_identity": "u0",
+ __mapper_args__ = {
+ "polymorphic_identity": "u0",
"polymorphic_on": type}
class SubUser1(Single):
type = Column(String)
- __mapper_args__ = {"polymorphic_identity": "u0",
+ __mapper_args__ = {
+ "polymorphic_identity": "u0",
"polymorphic_on": type}
class SubJoined(Joined):
__tablename__ = 'joined_inh'
__mapper_args__ = {"polymorphic_identity": "u1"}
-
Base.prepare(engine=testing.db, reflect=True)
assert SubJoined.__mapper__.inherits is Joined.__mapper__
def test_conditional_relationship(self):
Base = automap_base()
+
def _gen_relationship(*arg, **kw):
return None
- Base.prepare(engine=testing.db, reflect=True, generate_relationship=_gen_relationship)
+ Base.prepare(
+ engine=testing.db, reflect=True,
+ generate_relationship=_gen_relationship)