]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- formatting
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 26 Nov 2014 19:58:32 +0000 (14:58 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 26 Nov 2014 19:59:26 +0000 (14:59 -0500)
(cherry picked from commit a88be57fb7ef96e914d8a7fb90de375ec7f0befd)

examples/versioned_history/history_meta.py
examples/versioned_history/test_versioning.py

index f9e979a6a955a36cf99b67e1ef40395fc12aff7f..f10444e52198d38f316a70139505c3f14815f01c 100644 (file)
@@ -8,15 +8,18 @@ from sqlalchemy import event
 import datetime
 from sqlalchemy.orm.properties import RelationshipProperty
 
+
 def col_references_table(col, table):
     for fk in col.foreign_keys:
         if fk.references(table):
             return True
     return False
 
+
 def _is_versioning_col(col):
     return "version_meta" in col.info
 
+
 def _history_mapper(local_mapper):
     cls = local_mapper.class_
 
@@ -38,7 +41,8 @@ def _history_mapper(local_mapper):
         col.default = col.server_default = None
         return col
 
-    if not super_mapper or local_mapper.local_table is not super_mapper.local_table:
+    if not super_mapper or \
+            local_mapper.local_table is not super_mapper.local_table:
         cols = []
         for column in local_mapper.local_table.c:
             if _is_versioning_col(column):
@@ -46,8 +50,14 @@ def _history_mapper(local_mapper):
 
             col = _col_copy(column)
 
-            if super_mapper and col_references_table(column, super_mapper.local_table):
-                super_fks.append((col.key, list(super_history_mapper.local_table.primary_key)[0]))
+            if super_mapper and \
+                    col_references_table(column, super_mapper.local_table):
+                super_fks.append(
+                    (
+                        col.key,
+                        list(super_history_mapper.local_table.primary_key)[0]
+                    )
+                )
 
             cols.append(col)
 
@@ -55,15 +65,21 @@ def _history_mapper(local_mapper):
                 polymorphic_on = col
 
         if super_mapper:
-            super_fks.append(('version', super_history_mapper.local_table.c.version))
+            super_fks.append(
+                (
+                    'version', super_history_mapper.local_table.c.version
+                )
+            )
 
         version_meta = {"version_meta": True}  # add column.info to identify
                                                # columns specific to versioning
 
         # "version" stores the integer version id.  This column is
         # required.
-        cols.append(Column('version', Integer, primary_key=True,
-                            autoincrement=False, info=version_meta))
+        cols.append(
+            Column(
+                'version', Integer, primary_key=True,
+                autoincrement=False, info=version_meta))
 
         # "changed" column stores the UTC timestamp of when the
         # history row was created.
@@ -75,10 +91,11 @@ def _history_mapper(local_mapper):
         if super_fks:
             cols.append(ForeignKeyConstraint(*zip(*super_fks)))
 
-        table = Table(local_mapper.local_table.name + '_history',
-                        local_mapper.local_table.metadata,
-                        *cols,
-                        schema=local_mapper.local_table.schema
+        table = Table(
+            local_mapper.local_table.name + '_history',
+            local_mapper.local_table.metadata,
+            *cols,
+            schema=local_mapper.local_table.schema
         )
     else:
         # single table inheritance.  take any additional columns that may have
@@ -108,7 +125,8 @@ def _history_mapper(local_mapper):
         local_mapper.local_table.append_column(
             Column('version', Integer, default=1, nullable=False)
         )
-        local_mapper.add_property("version", local_mapper.local_table.c.version)
+        local_mapper.add_property(
+            "version", local_mapper.local_table.c.version)
 
 
 class Versioned(object):
@@ -126,6 +144,7 @@ def versioned_objects(iter):
         if hasattr(obj, '__history_mapper__'):
             yield obj
 
+
 def create_version(obj, session, deleted=False):
     obj_mapper = object_mapper(obj)
     history_mapper = obj.__history_mapper__
@@ -137,7 +156,10 @@ def create_version(obj, session, deleted=False):
 
     obj_changed = False
 
-    for om, hm in zip(obj_mapper.iterate_to_root(), history_mapper.iterate_to_root()):
+    for om, hm in zip(
+            obj_mapper.iterate_to_root(),
+            history_mapper.iterate_to_root()
+    ):
         if hm.single:
             continue
 
@@ -157,11 +179,12 @@ def create_version(obj, session, deleted=False):
                 # in the case of single table inheritance, there may be
                 # columns on the mapped table intended for the subclass only.
                 # the "unmapped" status of the subclass column on the
-                # base class is a feature of the declarative module as of sqla 0.5.2.
+                # base class is a feature of the declarative module.
                 continue
 
-            # expired object attributes and also deferred cols might not be in the
-            # dict.  force it to load no matter what by using getattr().
+            # expired object attributes and also deferred cols might not
+            # be in the dict.  force it to load no matter what by
+            # using getattr().
             if prop.key not in obj_state.dict:
                 getattr(obj, prop.key)
 
@@ -182,8 +205,9 @@ def create_version(obj, session, deleted=False):
         # check those too
         for prop in obj_mapper.iterate_properties:
             if isinstance(prop, RelationshipProperty) and \
-                attributes.get_history(obj, prop.key,
-                        passive=attributes.PASSIVE_NO_INITIALIZE).has_changes():
+                attributes.get_history(
+                    obj, prop.key,
+                    passive=attributes.PASSIVE_NO_INITIALIZE).has_changes():
                 for p in prop.local_columns:
                     if p.foreign_keys:
                         obj_changed = True
@@ -201,6 +225,7 @@ def create_version(obj, session, deleted=False):
     session.add(hist)
     obj.version += 1
 
+
 def versioned_session(session):
     @event.listens_for(session, 'before_flush')
     def before_flush(session, flush_context, instances):
index 874223d6276054f213f30c9aa07369d7a0653e8c..ed6935eb756e70bf8030aa3d4d3768b564232eab 100644 (file)
@@ -1,4 +1,5 @@
-"""Unit tests illustrating usage of the ``history_meta.py`` module functions."""
+"""Unit tests illustrating usage of the ``history_meta.py``
+module functions."""
 
 from unittest import TestCase
 from sqlalchemy.ext.declarative import declarative_base
@@ -11,10 +12,12 @@ from sqlalchemy.orm import exc as orm_exc
 
 engine = None
 
+
 def setup_module():
     global engine
     engine = create_engine('sqlite://', echo=True)
 
+
 class TestVersioning(TestCase, AssertsCompiledSQL):
     __dialect__ = 'default'
 
@@ -52,14 +55,16 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         SomeClassHistory = SomeClass.__history_mapper__.class_
 
         eq_(
-            sess.query(SomeClassHistory).filter(SomeClassHistory.version == 1).all(),
+            sess.query(SomeClassHistory).filter(
+                SomeClassHistory.version == 1).all(),
             [SomeClassHistory(version=1, name='sc1')]
         )
 
         sc.name = 'sc1modified2'
 
         eq_(
-            sess.query(SomeClassHistory).order_by(SomeClassHistory.version).all(),
+            sess.query(SomeClassHistory).order_by(
+                SomeClassHistory.version).all(),
             [
                 SomeClassHistory(version=1, name='sc1'),
                 SomeClassHistory(version=2, name='sc1modified')
@@ -76,7 +81,8 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         sess.commit()
 
         eq_(
-            sess.query(SomeClassHistory).order_by(SomeClassHistory.version).all(),
+            sess.query(SomeClassHistory).order_by(
+                SomeClassHistory.version).all(),
             [
                 SomeClassHistory(version=1, name='sc1'),
                 SomeClassHistory(version=2, name='sc1modified')
@@ -87,7 +93,8 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         sess.commit()
 
         eq_(
-            sess.query(SomeClassHistory).order_by(SomeClassHistory.version).all(),
+            sess.query(SomeClassHistory).order_by(
+                SomeClassHistory.version).all(),
             [
                 SomeClassHistory(version=1, name='sc1'),
                 SomeClassHistory(version=2, name='sc1modified'),
@@ -164,13 +171,13 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         SomeClassHistory = SomeClass.__history_mapper__.class_
 
         eq_(
-            sess.query(SomeClassHistory.boole).order_by(SomeClassHistory.id).all(),
+            sess.query(SomeClassHistory.boole).order_by(
+                SomeClassHistory.id).all(),
             [(True, ), (None, )]
         )
 
         eq_(sc.version, 3)
 
-
     def test_deferred(self):
         """test versioning of unloaded, deferred columns."""
 
@@ -199,11 +206,11 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         SomeClassHistory = SomeClass.__history_mapper__.class_
 
         eq_(
-            sess.query(SomeClassHistory).filter(SomeClassHistory.version == 1).all(),
+            sess.query(SomeClassHistory).filter(
+                SomeClassHistory.version == 1).all(),
             [SomeClassHistory(version=1, name='sc1', data='somedata')]
         )
 
-
     def test_joined_inheritance(self):
         class BaseClass(Versioned, self.Base, ComparableEntity):
             __tablename__ = 'basetable'
@@ -212,7 +219,9 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
             name = Column(String(50))
             type = Column(String(20))
 
-            __mapper_args__ = {'polymorphic_on': type, 'polymorphic_identity': 'base'}
+            __mapper_args__ = {
+                'polymorphic_on': type,
+                'polymorphic_identity': 'base'}
 
         class SubClassSeparatePk(BaseClass):
             __tablename__ = 'subtable1'
@@ -246,38 +255,50 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         sess.commit()
 
         BaseClassHistory = BaseClass.__history_mapper__.class_
-        SubClassSeparatePkHistory = SubClassSeparatePk.__history_mapper__.class_
+        SubClassSeparatePkHistory = \
+            SubClassSeparatePk.__history_mapper__.class_
         SubClassSamePkHistory = SubClassSamePk.__history_mapper__.class_
         eq_(
             sess.query(BaseClassHistory).order_by(BaseClassHistory.id).all(),
             [
-                SubClassSeparatePkHistory(id=1, name='sep1', type='sep', version=1),
+                SubClassSeparatePkHistory(
+                    id=1, name='sep1', type='sep', version=1),
                 BaseClassHistory(id=2, name='base1', type='base', version=1),
-                SubClassSamePkHistory(id=3, name='same1', type='same', version=1)
+                SubClassSamePkHistory(
+                    id=3, name='same1', type='same', version=1)
             ]
         )
 
         same1.subdata2 = 'same1subdatamod2'
 
         eq_(
-            sess.query(BaseClassHistory).order_by(BaseClassHistory.id, BaseClassHistory.version).all(),
+            sess.query(BaseClassHistory).order_by(
+                BaseClassHistory.id, BaseClassHistory.version).all(),
             [
-                SubClassSeparatePkHistory(id=1, name='sep1', type='sep', version=1),
+                SubClassSeparatePkHistory(
+                    id=1, name='sep1', type='sep', version=1),
                 BaseClassHistory(id=2, name='base1', type='base', version=1),
-                SubClassSamePkHistory(id=3, name='same1', type='same', version=1),
-                SubClassSamePkHistory(id=3, name='same1', type='same', version=2)
+                SubClassSamePkHistory(
+                    id=3, name='same1', type='same', version=1),
+                SubClassSamePkHistory(
+                    id=3, name='same1', type='same', version=2)
             ]
         )
 
         base1.name = 'base1mod2'
         eq_(
-            sess.query(BaseClassHistory).order_by(BaseClassHistory.id, BaseClassHistory.version).all(),
+            sess.query(BaseClassHistory).order_by(
+                BaseClassHistory.id, BaseClassHistory.version).all(),
             [
-                SubClassSeparatePkHistory(id=1, name='sep1', type='sep', version=1),
+                SubClassSeparatePkHistory(
+                    id=1, name='sep1', type='sep', version=1),
                 BaseClassHistory(id=2, name='base1', type='base', version=1),
-                BaseClassHistory(id=2, name='base1mod', type='base', version=2),
-                SubClassSamePkHistory(id=3, name='same1', type='same', version=1),
-                SubClassSamePkHistory(id=3, name='same1', type='same', version=2)
+                BaseClassHistory(
+                    id=2, name='base1mod', type='base', version=2),
+                SubClassSamePkHistory(
+                    id=3, name='same1', type='same', version=1),
+                SubClassSamePkHistory(
+                    id=3, name='same1', type='same', version=2)
             ]
         )
 
@@ -289,8 +310,9 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
             name = Column(String(50))
             type = Column(String(20))
 
-            __mapper_args__ = {'polymorphic_on': type,
-                                'polymorphic_identity': 'base'}
+            __mapper_args__ = {
+                'polymorphic_on': type,
+                'polymorphic_identity': 'base'}
 
         class SubClass(BaseClass):
             __tablename__ = 'subtable'
@@ -342,7 +364,8 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
             "ON basetable_history.id = subtable_history.base_id "
             "AND basetable_history.version = subtable_history.version "
             "JOIN subsubtable_history ON subtable_history.id = "
-            "subsubtable_history.id AND subtable_history.version = subsubtable_history.version"
+            "subsubtable_history.id AND subtable_history.version = "
+            "subsubtable_history.version"
         )
 
         ssc = SubSubClass(name='ss1', subdata1='sd1', subdata2='sd2')
@@ -360,8 +383,9 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
             [SubSubHistory(name='ss1', subdata1='sd1',
                                 subdata2='sd2', type='subsub', version=1)]
         )
-        eq_(ssc, SubSubClass(name='ss1', subdata1='sd11',
-                    subdata2='sd22', version=2))
+        eq_(ssc, SubSubClass(
+            name='ss1', subdata1='sd11',
+            subdata2='sd22', version=2))
 
 
 
@@ -372,8 +396,9 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
             id = Column(Integer, primary_key=True)
             name = Column(String(50))
             type = Column(String(50))
-            __mapper_args__ = {'polymorphic_on': type,
-                                'polymorphic_identity': 'base'}
+            __mapper_args__ = {
+                'polymorphic_on': type,
+                'polymorphic_identity': 'base'}
 
         class SubClass(BaseClass):
 
@@ -396,8 +421,8 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         SubClassHistory = SubClass.__history_mapper__.class_
 
         eq_(
-            sess.query(BaseClassHistory).order_by(BaseClassHistory.id,
-                                        BaseClassHistory.version).all(),
+            sess.query(BaseClassHistory).order_by(
+                BaseClassHistory.id, BaseClassHistory.version).all(),
             [BaseClassHistory(id=1, name='b1', type='base', version=1)]
         )
 
@@ -405,11 +430,12 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         b1.name = 'b1modified2'
 
         eq_(
-            sess.query(BaseClassHistory).order_by(BaseClassHistory.id,
-                            BaseClassHistory.version).all(),
+            sess.query(BaseClassHistory).order_by(
+                BaseClassHistory.id, BaseClassHistory.version).all(),
             [
                 BaseClassHistory(id=1, name='b1', type='base', version=1),
-                BaseClassHistory(id=1, name='b1modified', type='base', version=2),
+                BaseClassHistory(
+                    id=1, name='b1modified', type='base', version=2),
                 SubClassHistory(id=2, name='s1', type='sub', version=1)
             ]
         )
@@ -475,14 +501,16 @@ class TestVersioning(TestCase, AssertsCompiledSQL):
         assert sc.version == 2
 
         eq_(
-            sess.query(SomeClassHistory).filter(SomeClassHistory.version == 1).all(),
+            sess.query(SomeClassHistory).filter(
+                SomeClassHistory.version == 1).all(),
             [SomeClassHistory(version=1, name='sc1', related_id=None)]
         )
 
         sc.related = None
 
         eq_(
-            sess.query(SomeClassHistory).order_by(SomeClassHistory.version).all(),
+            sess.query(SomeClassHistory).order_by(
+                SomeClassHistory.version).all(),
             [
                 SomeClassHistory(version=1, name='sc1', related_id=None),
                 SomeClassHistory(version=2, name='sc1', related_id=sr1.id)