summaryrefslogtreecommitdiff
path: root/test/orm/test_pickled.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/test_pickled.py')
-rw-r--r--test/orm/test_pickled.py233
1 files changed, 114 insertions, 119 deletions
diff --git a/test/orm/test_pickled.py b/test/orm/test_pickled.py
index f4e49c518..6b925806f 100644
--- a/test/orm/test_pickled.py
+++ b/test/orm/test_pickled.py
@@ -8,10 +8,10 @@ from sqlalchemy.testing import assert_raises_message
from sqlalchemy import Integer, String, ForeignKey, exc, MetaData
from sqlalchemy.testing.schema import Table, Column
from sqlalchemy.orm import mapper, relationship, create_session, \
- sessionmaker, attributes, interfaces,\
- clear_mappers, exc as orm_exc,\
- configure_mappers, Session, lazyload_all,\
- lazyload, aliased
+ sessionmaker, attributes, interfaces,\
+ clear_mappers, exc as orm_exc,\
+ configure_mappers, Session, lazyload_all,\
+ lazyload, aliased
from sqlalchemy.orm import state as sa_state
from sqlalchemy.orm import instrumentation
from sqlalchemy.orm.collections import attribute_mapped_collection, \
@@ -27,43 +27,42 @@ class PickleTest(fixtures.MappedTest):
@classmethod
def define_tables(cls, metadata):
Table('users', metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
Column('name', String(30), nullable=False),
test_needs_acid=True,
- test_needs_fk=True
- )
+ test_needs_fk=True)
Table('addresses', metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
Column('user_id', None, ForeignKey('users.id')),
Column('email_address', String(50), nullable=False),
test_needs_acid=True,
- test_needs_fk=True
- )
+ test_needs_fk=True)
Table('orders', metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
- Column('user_id', None, ForeignKey('users.id')),
- Column('address_id', None, ForeignKey('addresses.id')),
- Column('description', String(30)),
- Column('isopen', Integer),
- test_needs_acid=True,
- test_needs_fk=True
- )
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('user_id', None, ForeignKey('users.id')),
+ Column('address_id', None, ForeignKey('addresses.id')),
+ Column('description', String(30)),
+ Column('isopen', Integer),
+ test_needs_acid=True,
+ test_needs_fk=True)
Table("dingalings", metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
Column('address_id', None, ForeignKey('addresses.id')),
Column('data', String(30)),
test_needs_acid=True,
- test_needs_fk=True
- )
-
+ test_needs_fk=True)
def test_transient(self):
users, addresses = (self.tables.users,
- self.tables.addresses)
+ self.tables.addresses)
mapper(User, users, properties={
- 'addresses':relationship(Address, backref="user")
+ 'addresses': relationship(Address, backref="user")
})
mapper(Address, addresses)
@@ -82,7 +81,6 @@ class PickleTest(fixtures.MappedTest):
def test_no_mappers(self):
users = self.tables.users
-
umapper = mapper(User, users)
u1 = User(name='ed')
u1_pickled = pickle.dumps(u1, -1)
@@ -91,13 +89,13 @@ class PickleTest(fixtures.MappedTest):
assert_raises_message(
orm_exc.UnmappedInstanceError,
- "Cannot deserialize object of type <class 'sqlalchemy.testing.pickleable.User'> - no mapper()",
+ "Cannot deserialize object of type "
+ "<class 'sqlalchemy.testing.pickleable.User'> - no mapper()",
pickle.loads, u1_pickled)
def test_no_instrumentation(self):
users = self.tables.users
-
umapper = mapper(User, users)
u1 = User(name='ed')
u1_pickled = pickle.dumps(u1, -1)
@@ -111,10 +109,9 @@ class PickleTest(fixtures.MappedTest):
# compiles the mapper
eq_(str(u1), "User(name='ed')")
-
def test_class_deferred_cols(self):
addresses, users = (self.tables.addresses,
- self.tables.users)
+ self.tables.users)
mapper(User, users, properties={
'name': sa.orm.deferred(users.c.name),
@@ -137,17 +134,19 @@ class PickleTest(fixtures.MappedTest):
sess2 = create_session()
sess2.add(u2)
eq_(u2.name, 'ed')
- eq_(u2, User(name='ed', addresses=[Address(email_address='ed@bar.com')]))
+ eq_(u2, User(name='ed', addresses=[
+ Address(email_address='ed@bar.com')]))
u2 = pickle.loads(pickle.dumps(u1))
sess2 = create_session()
u2 = sess2.merge(u2, load=False)
eq_(u2.name, 'ed')
- eq_(u2, User(name='ed', addresses=[Address(email_address='ed@bar.com')]))
+ eq_(u2, User(name='ed', addresses=[
+ Address(email_address='ed@bar.com')]))
def test_instance_lazy_relation_loaders(self):
users, addresses = (self.tables.users,
- self.tables.addresses)
+ self.tables.addresses)
mapper(User, users, properties={
'addresses': relationship(Address, lazy='noload')
@@ -155,19 +154,13 @@ class PickleTest(fixtures.MappedTest):
mapper(Address, addresses)
sess = Session()
- u1 = User(name='ed', addresses=[
- Address(
- email_address='ed@bar.com',
- )
- ])
+ u1 = User(name='ed', addresses=[Address(email_address='ed@bar.com')])
sess.add(u1)
sess.commit()
sess.close()
- u1 = sess.query(User).options(
- lazyload(User.addresses)
- ).first()
+ u1 = sess.query(User).options(lazyload(User.addresses)).first()
u2 = pickle.loads(pickle.dumps(u1))
sess = Session()
@@ -175,8 +168,7 @@ class PickleTest(fixtures.MappedTest):
assert u2.addresses
def test_invalidated_flag_pickle(self):
- users, addresses = (self.tables.users,
- self.tables.addresses)
+ users, addresses = (self.tables.users, self.tables.addresses)
mapper(User, users, properties={
'addresses': relationship(Address, lazy='noload')
@@ -190,8 +182,7 @@ class PickleTest(fixtures.MappedTest):
eq_(len(u2.addresses), 2)
def test_invalidated_flag_deepcopy(self):
- users, addresses = (self.tables.users,
- self.tables.addresses)
+ users, addresses = (self.tables.users, self.tables.addresses)
mapper(User, users, properties={
'addresses': relationship(Address, lazy='noload')
@@ -206,11 +197,10 @@ class PickleTest(fixtures.MappedTest):
@testing.requires.non_broken_pickle
def test_instance_deferred_cols(self):
- users, addresses = (self.tables.users,
- self.tables.addresses)
+ users, addresses = (self.tables.users, self.tables.addresses)
mapper(User, users, properties={
- 'addresses':relationship(Address, backref="user")
+ 'addresses': relationship(Address, backref="user")
})
mapper(Address, addresses)
@@ -222,9 +212,9 @@ class PickleTest(fixtures.MappedTest):
sess.expunge_all()
u1 = sess.query(User).\
- options(sa.orm.defer('name'),
- sa.orm.defer('addresses.email_address')).\
- get(u1.id)
+ options(sa.orm.defer('name'),
+ sa.orm.defer('addresses.email_address')).\
+ get(u1.id)
assert 'name' not in u1.__dict__
assert 'addresses' not in u1.__dict__
@@ -236,7 +226,8 @@ class PickleTest(fixtures.MappedTest):
ad = u2.addresses[0]
assert 'email_address' not in ad.__dict__
eq_(ad.email_address, 'ed@bar.com')
- eq_(u2, User(name='ed', addresses=[Address(email_address='ed@bar.com')]))
+ eq_(u2, User(name='ed', addresses=[
+ Address(email_address='ed@bar.com')]))
u2 = pickle.loads(pickle.dumps(u1))
sess2 = create_session()
@@ -250,14 +241,14 @@ class PickleTest(fixtures.MappedTest):
assert 'email_address' not in ad.__dict__
eq_(ad.email_address, 'ed@bar.com')
- eq_(u2, User(name='ed', addresses=[Address(email_address='ed@bar.com')]))
+ eq_(u2, User(name='ed', addresses=[
+ Address(email_address='ed@bar.com')]))
def test_pickle_protocols(self):
- users, addresses = (self.tables.users,
- self.tables.addresses)
+ users, addresses = (self.tables.users, self.tables.addresses)
mapper(User, users, properties={
- 'addresses':relationship(Address, backref="user")
+ 'addresses': relationship(Address, backref="user")
})
mapper(Address, addresses)
@@ -307,14 +298,14 @@ class PickleTest(fixtures.MappedTest):
@testing.requires.non_broken_pickle
def test_options_with_descriptors(self):
users, addresses, dingalings = (self.tables.users,
- self.tables.addresses,
- self.tables.dingalings)
+ self.tables.addresses,
+ self.tables.dingalings)
mapper(User, users, properties={
- 'addresses':relationship(Address, backref="user")
+ 'addresses': relationship(Address, backref="user")
})
mapper(Address, addresses, properties={
- 'dingaling':relationship(Dingaling)
+ 'dingaling': relationship(Dingaling)
})
mapper(Dingaling, dingalings)
sess = create_session()
@@ -343,20 +334,16 @@ class PickleTest(fixtures.MappedTest):
m = MetaData()
c1 = Table('c1', m,
- Column('parent_id', String,
- ForeignKey('p.id'), primary_key=True)
- )
+ Column('parent_id', String, ForeignKey('p.id'),
+ primary_key=True))
c2 = Table('c2', m,
- Column('parent_id', String,
- ForeignKey('p.id'), primary_key=True)
- )
- p = Table('p', m,
- Column('id', String, primary_key=True)
- )
+ Column('parent_id', String, ForeignKey('p.id'),
+ primary_key=True))
+ p = Table('p', m, Column('id', String, primary_key=True))
mapper(Parent, p, properties={
- 'children1':relationship(Child1),
- 'children2':relationship(Child2)
+ 'children1': relationship(Child1),
+ 'children2': relationship(Child2)
})
mapper(Child1, c1)
mapper(Child2, c2)
@@ -386,87 +373,87 @@ class PickleTest(fixtures.MappedTest):
users, addresses = self.tables.users, self.tables.addresses
mapper(User, users, properties={
- 'addresses':relationship(
- Address,
- collection_class=
- attribute_mapped_collection('email_address')
- )
+ 'addresses': relationship(
+ Address,
+ collection_class=attribute_mapped_collection('email_address')
+ )
})
mapper(Address, addresses)
u1 = User()
- u1.addresses = {"email1":Address(email_address="email1")}
+ u1.addresses = {"email1": Address(email_address="email1")}
for loads, dumps in picklers():
repickled = loads(dumps(u1))
eq_(u1.addresses, repickled.addresses)
eq_(repickled.addresses['email1'],
- Address(email_address="email1"))
+ Address(email_address="email1"))
def test_column_mapped_collection(self):
users, addresses = self.tables.users, self.tables.addresses
mapper(User, users, properties={
- 'addresses':relationship(
- Address,
- collection_class=
- column_mapped_collection(
- addresses.c.email_address)
- )
+ 'addresses': relationship(
+ Address,
+ collection_class=column_mapped_collection(
+ addresses.c.email_address)
+ )
})
mapper(Address, addresses)
u1 = User()
u1.addresses = {
- "email1":Address(email_address="email1"),
- "email2":Address(email_address="email2")
+ "email1": Address(email_address="email1"),
+ "email2": Address(email_address="email2")
}
for loads, dumps in picklers():
repickled = loads(dumps(u1))
eq_(u1.addresses, repickled.addresses)
eq_(repickled.addresses['email1'],
- Address(email_address="email1"))
+ Address(email_address="email1"))
def test_composite_column_mapped_collection(self):
users, addresses = self.tables.users, self.tables.addresses
mapper(User, users, properties={
- 'addresses':relationship(
- Address,
- collection_class=
- column_mapped_collection([
- addresses.c.id,
- addresses.c.email_address])
- )
+ 'addresses': relationship(
+ Address,
+ collection_class=column_mapped_collection([
+ addresses.c.id,
+ addresses.c.email_address])
+ )
})
mapper(Address, addresses)
u1 = User()
u1.addresses = {
- (1, "email1"):Address(id=1, email_address="email1"),
- (2, "email2"):Address(id=2, email_address="email2")
+ (1, "email1"): Address(id=1, email_address="email1"),
+ (2, "email2"): Address(id=2, email_address="email2")
}
for loads, dumps in picklers():
repickled = loads(dumps(u1))
eq_(u1.addresses, repickled.addresses)
eq_(repickled.addresses[(1, 'email1')],
- Address(id=1, email_address="email1"))
+ Address(id=1, email_address="email1"))
+
class PolymorphicDeferredTest(fixtures.MappedTest):
@classmethod
def define_tables(cls, metadata):
Table('users', metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
- Column('name', String(30)),
- Column('type', String(30)))
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('name', String(30)),
+ Column('type', String(30)))
Table('email_users', metadata,
- Column('id', Integer, ForeignKey('users.id'), primary_key=True),
- Column('email_address', String(30)))
-
+ Column('id', Integer, ForeignKey('users.id'), primary_key=True),
+ Column('email_address', String(30)))
def test_polymorphic_deferred(self):
email_users, users = (self.tables.email_users,
- self.tables.users,
- )
+ self.tables.users,
+ )
- mapper(User, users, polymorphic_identity='user', polymorphic_on=users.c.type)
- mapper(EmailUser, email_users, inherits=User, polymorphic_identity='emailuser')
+ mapper(User, users, polymorphic_identity='user',
+ polymorphic_on=users.c.type)
+ mapper(EmailUser, email_users, inherits=User,
+ polymorphic_identity='emailuser')
eu = EmailUser(name="user1", email_address='foo@bar.com')
sess = create_session()
@@ -481,6 +468,7 @@ class PolymorphicDeferredTest(fixtures.MappedTest):
assert 'email_address' not in eu2.__dict__
eq_(eu2.email_address, 'foo@bar.com')
+
class TupleLabelTest(_fixtures.FixtureTest):
@classmethod
def setup_classes(cls):
@@ -488,14 +476,18 @@ class TupleLabelTest(_fixtures.FixtureTest):
@classmethod
def setup_mappers(cls):
- users, addresses, orders = cls.tables.users, cls.tables.addresses, cls.tables.orders
+ users, addresses, orders = (cls.tables.users, cls.tables.addresses,
+ cls.tables.orders)
mapper(User, users, properties={
- 'addresses':relationship(Address, backref='user', order_by=addresses.c.id),
- 'orders':relationship(Order, backref='user', order_by=orders.c.id), # o2m, m2o
+ 'addresses': relationship(Address, backref='user',
+ order_by=addresses.c.id),
+ # o2m, m2o
+ 'orders': relationship(Order, backref='user',
+ order_by=orders.c.id),
})
mapper(Address, addresses)
mapper(Order, orders, properties={
- 'address':relationship(Address), # m2o
+ 'address': relationship(Address), # m2o
})
def test_tuple_labeling(self):
@@ -519,7 +511,8 @@ class TupleLabelTest(_fixtures.FixtureTest):
eq_(row.name, row[0])
eq_(row.foobar, row[1])
- for row in sess.query(User).values(User.name, User.id.label('foobar')):
+ for row in sess.query(User).values(User.name,
+ User.id.label('foobar')):
if pickled is not False:
row = pickle.loads(pickle.dumps(row, pickled))
eq_(list(row.keys()), ['name', 'foobar'])
@@ -534,7 +527,8 @@ class TupleLabelTest(_fixtures.FixtureTest):
eq_(row.User, row[0])
oalias = aliased(Order, name='orders')
- for row in sess.query(User, oalias).join(oalias, User.orders).all():
+ for row in sess.query(User, oalias).join(oalias, User.orders) \
+ .all():
if pickled is not False:
row = pickle.loads(pickle.dumps(row, pickled))
eq_(list(row.keys()), ['User', 'orders'])
@@ -551,23 +545,25 @@ class TupleLabelTest(_fixtures.FixtureTest):
ret = sess.query(User, Address).join(User.addresses).all()
pickle.loads(pickle.dumps(ret, pickled))
+
class CustomSetupTeardownTest(fixtures.MappedTest):
@classmethod
def define_tables(cls, metadata):
Table('users', metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
Column('name', String(30), nullable=False),
test_needs_acid=True,
- test_needs_fk=True
- )
+ test_needs_fk=True)
Table('addresses', metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
Column('user_id', None, ForeignKey('users.id')),
Column('email_address', String(50), nullable=False),
test_needs_acid=True,
- test_needs_fk=True
- )
+ test_needs_fk=True)
+
def test_rebuild_state(self):
"""not much of a 'test', but illustrate how to
remove instance-level state before pickling.
@@ -584,4 +580,3 @@ class CustomSetupTeardownTest(fixtures.MappedTest):
u2 = pickle.loads(pickle.dumps(u1))
attributes.manager_of_class(User).setup_instance(u2)
assert attributes.instance_state(u2)
-