[python-migrate] improve sqlalchemy 0.8 compatibility

Pádraig Brady pbrady at fedoraproject.org
Mon Sep 23 22:31:40 UTC 2013


commit 3062cca76130b71a9fdc06e05c465096e536a092
Author: Pádraig Brady <P at draigBrady.com>
Date:   Mon Sep 23 23:11:51 2013 +0100

    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.

 python-migrate-sqlalchemy-0.8.patch |  110 +++++++++++++++++++++++++++++++++++
 python-migrate.spec                 |    5 +-
 2 files changed, 114 insertions(+), 1 deletions(-)
---
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 <pbrady at redhat.com> - 0.7.2-9
+- improve sqlalchemy 0.8 compatibility
+
 * Sun Aug 04 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.7.2-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
 


More information about the scm-commits mailing list