[python-migrate/el6] add support for sqlalchemy 0.7

Pádraig Brady pbrady at fedoraproject.org
Mon Dec 5 00:41:44 UTC 2011


commit d8b4837f8d3cea3a1ec9f2894ba03e2c841b7a32
Author: Pádraig Brady <P at draigBrady.com>
Date:   Sun Dec 4 23:03:00 2011 +0000

    add support for sqlalchemy 0.7
    
    Since the parallel installable python-sqlalchemy0.7 is
    now present in EPEL6, python-migrate will need to support it.
    Note updating to python-migrate-0.7.2 is not straightforward
    as that drops support for sqlalchemy 0.5 which is used
    currently in RHEL6.2.

 migrate-0.7-compat.patch |   78 ++++++++++++++++++++++++++++++++++++++++++++++
 python-migrate.spec      |    4 ++
 2 files changed, 82 insertions(+), 0 deletions(-)
---
diff --git a/migrate-0.7-compat.patch b/migrate-0.7-compat.patch
new file mode 100644
index 0000000..1ff795a
--- /dev/null
+++ b/migrate-0.7-compat.patch
@@ -0,0 +1,78 @@
+diff -Naur sqlalchemy-migrate-0.6.orig/migrate/changeset/__init__.py sqlalchemy-migrate-0.6/migrate/changeset/__init__.py
+--- sqlalchemy-migrate-0.6.orig/migrate/changeset/__init__.py	2010-07-04 08:24:21.000000000 +0000
++++ sqlalchemy-migrate-0.6/migrate/changeset/__init__.py	2011-12-04 22:36:17.849710345 +0000
+@@ -11,6 +11,7 @@
+ 
+ _sa_version = tuple(int(re.match("\d+", x).group(0)) for x in _sa_version.split("."))
+ SQLA_06 = _sa_version >= (0, 6)
++SQLA_07 = _sa_version >= (0, 7)
+ 
+ del re
+ del _sa_version
+diff -Naur sqlalchemy-migrate-0.6.orig/migrate/changeset/schema.py sqlalchemy-migrate-0.6/migrate/changeset/schema.py
+--- sqlalchemy-migrate-0.6.orig/migrate/changeset/schema.py	2010-07-11 16:26:39.000000000 +0000
++++ sqlalchemy-migrate-0.6/migrate/changeset/schema.py	2011-12-04 22:36:54.562808367 +0000
+@@ -6,7 +6,7 @@
+ 
+ import sqlalchemy
+ 
+-from migrate.changeset import SQLA_06
++from migrate.changeset import SQLA_06, SQLA_07
+ from migrate.changeset.exceptions import *
+ from migrate.changeset.databases.visitor import (get_engine_visitor,
+                                                  run_single_visitor)
+@@ -556,14 +556,20 @@
+ 
+     def add_to_table(self, table):
+         if table is not None  and self.table is None:
+-            self._set_parent(table)
++            if SQLA_07:
++                table.append_column(self)
++            else:
++                self._set_parent(table)
+ 
+     def remove_from_table(self, table, unset_table=True):
+         # TODO: remove indexes, primary keys, constraints, etc
+         if unset_table:
+             self.table = None
+         if table.c.contains_column(self):
+-            table.c.remove(self)
++            if SQLA_07:
++                table._columns.remove(self)
++            else:
++                table.c.remove(self)
+ 
+     # TODO: this is fixed in 0.6
+     def copy_fixed(self, **kw):
+diff -Naur sqlalchemy-migrate-0.6.orig/migrate/versioning/schema.py sqlalchemy-migrate-0.6/migrate/versioning/schema.py
+--- sqlalchemy-migrate-0.6.orig/migrate/versioning/schema.py	2010-07-04 08:24:22.000000000 +0000
++++ sqlalchemy-migrate-0.6/migrate/versioning/schema.py	2011-12-04 22:36:34.746755563 +0000
+@@ -10,6 +10,7 @@
+ from sqlalchemy import exceptions as sa_exceptions
+ from sqlalchemy.sql import bindparam
+ 
++from migrate.changeset import SQLA_07
+ from migrate.versioning import exceptions, genmodel, schemadiff
+ from migrate.versioning.repository import Repository
+ from migrate.versioning.util import load_model
+@@ -56,10 +57,16 @@
+         """
+         Remove version control from a database.
+         """
+-        try:
+-            self.table.drop()
+-        except (sa_exceptions.SQLError):
+-            raise exceptions.DatabaseNotControlledError(str(self.table))
++        if SQLA_07:
++            try:
++                self.table.drop()
++            except (sa_exceptions.DatabaseError):
++                raise exceptions.DatabaseNotControlledError(str(self.table))
++        else:
++            try:
++                self.table.drop()
++            except (sa_exceptions.SQLError):
++                raise exceptions.DatabaseNotControlledError(str(self.table))
+ 
+     def changeset(self, version=None):
+         """API to Changeset creation.
diff --git a/python-migrate.spec b/python-migrate.spec
index 773d5bc..81906ac 100644
--- a/python-migrate.spec
+++ b/python-migrate.spec
@@ -19,6 +19,8 @@ Patch0: migrate-scripttest-update.patch
 Patch1: migrate-py27.patch
 # Fix invalid code causing an exception
 Patch2: migrate-fix-deprecation-warning.patch
+# Support sqlalchemy 0.7
+Patch3: migrate-0.7-compat.patch
 # Local patch to rename /usr/bin/migrate to sqlalchemy-migrate
 Patch100: python-migrate-sqlalchemy-migrate.patch
 
@@ -61,6 +63,7 @@ atabase change sets and database repository versioning.
 %patch0 -p1 -b .test
 %patch1 -p1 -b .py27
 %patch2 -p1 -b .exception
+%patch3 -p1 -b .compat
 %patch100 -p0 -b .rename
 
 # use real unittest in python 2.7 and up
@@ -101,6 +104,7 @@ nosetests
 %changelog
 * Sun Dec 04 2011 Pádraig Brady <P at draigBrady.com> - 0.6-6
 - Fix a crash when trying to issue a deprecation warning
+- Backport sqlalchemy 0.7 support
 
 * Wed Nov 16 2011 Toshio Kuratomi <toshio at fedoraproject.org> - 0.6-5
 - Require python-tempita


More information about the scm-commits mailing list