Package: python-migrate
Version: 0.6-4
Severity: normal
Tags: upstream patch

Hello,

Attached is a migration script (script.py) which triggers a non-intuitive error
in sqlalchemy-migrate. It has several type errors, but migrate catches
TypeError and fails to display a message because of wrong imports.

When I try to upgrade the schema, the following exception is thrown :

    $ python dbmanage.py test
    Upgrading...
    Traceback (most recent call last):
      File "dbmanage.py", line 3, in <module>
        main(url='sqlite:///development.db', debug='False', 
repository='migrations')
      File "/usr/lib/pymodules/python2.6/migrate/versioning/shell.py", line 
203, in main
        ret = command_func(**kwargs)
      File "<string>", line 2, in test
      File "/usr/lib/pymodules/python2.6/migrate/versioning/util/__init__.py", 
line 160, in with_engine
        return f(*a, **kw)
      File "/usr/lib/pymodules/python2.6/migrate/versioning/api.py", line 218, 
in test
        script.run(engine, 1)
      File "/usr/lib/pymodules/python2.6/migrate/versioning/script/py.py", line 
143, in run
        " parameter (since version > 0.5.4)", 
exceptions.MigrateDeprecationWarning)
    AttributeError: 'module' object has no attribute 'MigrateDeprecationWarning'

According to upstream
(http://code.google.com/p/sqlalchemy-migrate/issues/detail?id=98), this is
related to a wrong exception being thrown. I backported the patch mentioned
there to migrate 0.6.

Hope that helps,

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (900, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-686 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages python-migrate depends on:
ii  libjs-jquery            1.4.2-2          JavaScript library for dynamic web
ii  python                  2.6.6-3+squeeze4 interactive high-level object-orie
ii  python-decorator        3.2.0-1          simplify usage of python decorator
ii  python-pkg-resources    0.6.14-4         Package Discovery and Resource Acc
ii  python-sqlalchemy       0.6.3-3          SQL toolkit and Object Relational 
ii  python-support          1.0.10           automated rebuilding support for P
ii  python-tempita          0.4-1            very small text templating languag

python-migrate recommends no packages.

python-migrate suggests no packages.

-- no debconf information

-- 
Etienne Millon
from sqlalchemy import *
from migrate import *

def t_account(meta):
    Table( "account"
         , meta.metadata
         , Column( "id"
                 , Integer
                 , primary_key=True
                 )
         , Column( "username"
                 , String(100)
                 , unique=True
                 )
         , Column( "password"
                 , String(100)
                 )
         )

def upgrade(migrate_engine):
    m = MetaData(migrate_engine)
    t = t_account(m)
    c = UniqueConstraint(table=t,cols=['username'])
    c.create()

def downgrade(migrate_engine):
    m = MetaData(migrate_engine)
    t = t_account(m)
    c = UniqueConstraint(table=t,cols=['username'])
    c.drop()
From: Etienne Millon <etienne.mil...@gmail.com>
Date: Fri, 7 Jan 2011 21:19:02 +0100
Subject: [PATCH] use absolute imports of exception classes

This has been inspired by upstream change :
https://code.google.com/p/sqlalchemy-migrate/source/detail?r=3ba66abc4d194deaffdb0a0ea846cdd3419eb024
---
 migrate/versioning/script/py.py |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/migrate/versioning/script/py.py b/migrate/versioning/script/py.py
index 93ad776..f2d79b1 100644
--- a/migrate/versioning/script/py.py
+++ b/migrate/versioning/script/py.py
@@ -12,6 +12,7 @@
 from migrate.versioning.template import Template
 from migrate.versioning.script import base
 from migrate.versioning.util import import_path, load_model, with_engine
+from migrate.changeset.exceptions import MigrateDeprecationWarning
 
 
 log = logging.getLogger(__name__)
@@ -140,7 +141,7 @@
             script_func(engine)
         except TypeError:
             warnings.warn("upgrade/downgrade functions must accept engine"
-                " parameter (since version > 0.5.4)", exceptions.MigrateDeprecationWarning)
+                " parameter (since version > 0.5.4)", MigrateDeprecationWarning)
             raise
 
     @property
-- 

Attachment: signature.asc
Description: Digital signature

Reply via email to