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 --
signature.asc
Description: Digital signature