From 3062cca76130b71a9fdc06e05c465096e536a092 Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Sep 23 2013 22:16:05 +0000 Subject: improve sqlalchemy 0.8 compatibility Update the patch to include support for > 0.8.0b1, i.e. support for reflect=True deprecation done in >= 0.8.0b2 Also fix ansisql rename support which hits with postgresql at least. --- diff --git a/python-migrate-sqlalchemy-0.8.patch b/python-migrate-sqlalchemy-0.8.patch index 5280afa..a14a096 100644 --- a/python-migrate-sqlalchemy-0.8.patch +++ b/python-migrate-sqlalchemy-0.8.patch @@ -1,3 +1,11 @@ +Combination of 0.8 compat patches. + +All are currently after 0.7.2 tag at: +https://github.com/stackforge/sqlalchemy-migrate + +Also included is this adjustment: +https://review.openstack.org/#/c/47847/ + diff -Naur sqlalchemy-migrate-0.7.2.orig/migrate/tests/changeset/test_changeset.py sqlalchemy-migrate-0.7.2/migrate/tests/changeset/test_changeset.py --- sqlalchemy-migrate-0.7.2.orig/migrate/tests/changeset/test_changeset.py 2011-10-28 15:11:43.000000000 +0000 +++ sqlalchemy-migrate-0.7.2/migrate/tests/changeset/test_changeset.py 2013-03-11 11:45:29.066638792 +0000 @@ -31,3 +39,105 @@ diff -Naur sqlalchemy-migrate-0.7.2.orig/migrate/versioning/schema.py sqlalchemy from sqlalchemy.sql import bindparam from migrate import exceptions +diff -Naur sqlalchemy-migrate-0.7.2.orig/migrate/changeset/ansisql.py sqlalchemy-migrate-0.7.2/migrate/changeset/ansisql.py +--- sqlalchemy-migrate-0.7.2.orig/migrate/changeset/ansisql.py 2011-10-28 15:11:43.000000000 +0000 ++++ sqlalchemy-migrate-0.7.2/migrate/changeset/ansisql.py 2013-09-23 11:34:18.656844658 +0000 +@@ -171,8 +171,8 @@ + self.preparer.quote( + self._validate_identifier( + index.new_name, True), index.quote))) +- else: +- # SA >= 0.6.5 ++ elif hasattr(self, '_index_identifier'): ++ # SA >= 0.6.5, < 0.8 + self.append("ALTER INDEX %s RENAME TO %s" % ( + self.preparer.quote( + self._index_identifier( +@@ -180,6 +180,22 @@ + self.preparer.quote( + self._index_identifier( + index.new_name), index.quote))) ++ else: ++ # SA >= 0.8 ++ class NewName(object): ++ """Map obj.name -> obj.new_name""" ++ def __init__(self, index): ++ self.name = index.new_name ++ self._obj = index ++ ++ def __getattr__(self, attr): ++ if attr == 'name': ++ return getattr(self, attr) ++ return getattr(self._obj, attr) ++ ++ self.append("ALTER INDEX %s RENAME TO %s" % ( ++ self._prepared_index_name(index), ++ self._prepared_index_name(NewName(index)))) + self.execute() + + def visit_column(self, delta): +diff -Naur sqlalchemy-migrate-0.7.2.orig_reflect/migrate/tests/fixture/database.py sqlalchemy-migrate-0.7.2.reflect/migrate/tests/fixture/database.py +--- sqlalchemy-migrate-0.7.2.orig_reflect/migrate/tests/fixture/database.py 2011-10-28 15:11:43.000000000 +0000 ++++ sqlalchemy-migrate-0.7.2.reflect/migrate/tests/fixture/database.py 2013-09-23 12:20:26.022608233 +0000 +@@ -128,7 +128,8 @@ + def _setup(self, url): + self._connect(url) + # make sure there are no tables lying around +- meta = MetaData(self.engine, reflect=True) ++ meta = MetaData(self.engine) ++ meta.reflect() + meta.drop_all() + + def _teardown(self): +diff -Naur sqlalchemy-migrate-0.7.2.orig_reflect/migrate/tests/versioning/test_genmodel.py sqlalchemy-migrate-0.7.2.reflect/migrate/tests/versioning/test_genmodel.py +--- sqlalchemy-migrate-0.7.2.orig_reflect/migrate/tests/versioning/test_genmodel.py 2011-10-28 15:11:43.000000000 +0000 ++++ sqlalchemy-migrate-0.7.2.reflect/migrate/tests/versioning/test_genmodel.py 2013-09-23 12:21:42.254900961 +0000 +@@ -18,9 +18,11 @@ + + def _setup(self, url): + super(TestSchemaDiff, self)._setup(url) +- self.meta = MetaData(self.engine, reflect=True) ++ self.meta = MetaData(self.engine) ++ self.meta.reflect() + self.meta.drop_all() # in case junk tables are lying around in the test database +- self.meta = MetaData(self.engine, reflect=True) # needed if we just deleted some tables ++ self.meta = MetaData(self.engine) # needed if we just deleted some tables ++ self.meta.reflect() + self.table = Table(self.table_name, self.meta, + Column('id',Integer(), primary_key=True), + Column('name', UnicodeText()), +@@ -29,7 +31,8 @@ + + def _teardown(self): + if self.table.exists(): +- self.meta = MetaData(self.engine, reflect=True) ++ self.meta = MetaData(self.engine) ++ self.meta.reflect() + self.meta.drop_all() + super(TestSchemaDiff, self)._teardown() + +diff -Naur sqlalchemy-migrate-0.7.2.orig_reflect/migrate/tests/versioning/test_shell.py sqlalchemy-migrate-0.7.2.reflect/migrate/tests/versioning/test_shell.py +--- sqlalchemy-migrate-0.7.2.orig_reflect/migrate/tests/versioning/test_shell.py 2013-09-11 23:46:46.288846726 +0000 ++++ sqlalchemy-migrate-0.7.2.reflect/migrate/tests/versioning/test_shell.py 2013-09-23 12:20:41.229666598 +0000 +@@ -461,7 +461,7 @@ + old_model_module = 'migrate.tests.fixture.models:meta_old_rundiffs' + + # Create empty repository. +- self.meta = MetaData(self.engine, reflect=True) ++ self.meta = MetaData(self.engine) + self.meta.reflect() + self.meta.drop_all() # in case junk tables are lying around in the test database + +diff -Naur sqlalchemy-migrate-0.7.2.orig_reflect/migrate/versioning/schemadiff.py sqlalchemy-migrate-0.7.2.reflect/migrate/versioning/schemadiff.py +--- sqlalchemy-migrate-0.7.2.orig_reflect/migrate/versioning/schemadiff.py 2011-10-28 15:11:43.000000000 +0000 ++++ sqlalchemy-migrate-0.7.2.reflect/migrate/versioning/schemadiff.py 2013-09-23 12:20:06.302532576 +0000 +@@ -16,7 +16,8 @@ + :return: object which will evaluate to :keyword:`True` if there \ + are differences else :keyword:`False`. + """ +- db_metadata = sqlalchemy.MetaData(engine, reflect=True) ++ db_metadata = sqlalchemy.MetaData(engine) ++ db_metadata.reflect() + + # sqlite will include a dynamically generated 'sqlite_sequence' table if + # there are autoincrement sequences in the database; this should not be diff --git a/python-migrate.spec b/python-migrate.spec index e5338e1..0422600 100644 --- a/python-migrate.spec +++ b/python-migrate.spec @@ -6,7 +6,7 @@ Name: python-migrate Version: 0.7.2 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Schema migration tools for SQLAlchemy Group: Development/Languages @@ -102,6 +102,9 @@ nosetests %{python_sitelib}/* %changelog +* Mon Sep 23 2013 Pádraig Brady - 0.7.2-9 +- improve sqlalchemy 0.8 compatibility + * Sun Aug 04 2013 Fedora Release Engineering - 0.7.2-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild