From 653e723ce1932673eb5f4936ced84df9383b131b Mon Sep 17 00:00:00 2001 From: iElectric Date: Tue, 7 Sep 2010 02:25:29 +0200 Subject: [PATCH] move all exception classes to migrate.exceptions --- docs/api.rst | 20 ++++++---------- docs/changelog.rst | 2 ++ migrate/changeset/ansisql.py | 6 +++-- migrate/changeset/constraint.py | 2 +- migrate/changeset/databases/firebird.py | 6 +++-- migrate/changeset/databases/mysql.py | 5 +++- migrate/changeset/databases/oracle.py | 7 +++--- migrate/changeset/databases/sqlite.py | 4 +++- migrate/changeset/exceptions.py | 26 --------------------- migrate/changeset/schema.py | 2 +- migrate/{versioning => }/exceptions.py | 14 ++++++++++- migrate/tests/changeset/test_changeset.py | 12 +++++----- migrate/tests/changeset/test_constraint.py | 2 +- migrate/tests/versioning/test_api.py | 2 +- migrate/tests/versioning/test_genmodel.py | 2 +- migrate/tests/versioning/test_repository.py | 2 +- migrate/tests/versioning/test_schema.py | 3 ++- migrate/tests/versioning/test_shell.py | 2 +- migrate/tests/versioning/test_version.py | 2 +- migrate/versioning/api.py | 3 ++- migrate/versioning/pathed.py | 2 +- migrate/versioning/repository.py | 5 ++-- migrate/versioning/schema.py | 3 ++- migrate/versioning/script/base.py | 5 ++-- migrate/versioning/script/py.py | 8 +++---- migrate/versioning/shell.py | 3 ++- migrate/versioning/util/__init__.py | 7 +++--- migrate/versioning/version.py | 3 ++- 28 files changed, 78 insertions(+), 82 deletions(-) delete mode 100644 migrate/changeset/exceptions.py rename migrate/{versioning => }/exceptions.py (83%) diff --git a/docs/api.rst b/docs/api.rst index 02462dc..e44f5a1 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -1,3 +1,10 @@ +Module :mod:`exceptions ` -- Exception definitions +--------------------------------------------------------------------------------------- + +.. automodule:: migrate.exceptions + :members: + :synopsis: Migrate exception classes + Module :mod:`migrate.changeset` -- Schema migration API ============================================================= @@ -84,13 +91,6 @@ Module :mod:`visitor ` .. automodule:: migrate.changeset.databases.visitor :members: -Module :mod:`exceptions ` -- Exception definitions ---------------------------------------------------------------------------------------- - -.. automodule:: migrate.changeset.exceptions - :members: - :synopsis: Changeset exception classes - Module :mod:`schema ` -- Additional API to SQLAlchemy for migrations ------------------------------------------------------------------------------------------------- @@ -115,12 +115,6 @@ Module :mod:`api ` -- Python API commands :members: :synopsis: External API for :mod:`migrate.versioning` -Module :mod:`exceptions ` -- Exception definitions --------------------------------------------------------------------------------------- - -.. automodule:: migrate.versioning.exceptions - :members: - :synopsis: Exception classes for :mod:`migrate.versioning` Module :mod:`genmodel ` -- ORM Model generator ------------------------------------------------------------------------------------- diff --git a/docs/changelog.rst b/docs/changelog.rst index c0edfce..8f2e3b5 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -7,6 +7,8 @@ Fixed bugs - updated tests for Python 2.7 - added if main condition for manage.py script - fixed case sensitivity in setup.py dependencies +- moved :mod:`migrate.changeset.exceptions` and :mod:`migrate.versioning.exceptions` + to :mod:`migrate.exceptions` 0.6 (11.07.2010) --------------------------- diff --git a/migrate/changeset/ansisql.py b/migrate/changeset/ansisql.py index a608260..e5500b8 100644 --- a/migrate/changeset/ansisql.py +++ b/migrate/changeset/ansisql.py @@ -4,6 +4,8 @@ At the moment, this isn't so much based off of ANSI as much as things that just happen to work with multiple databases. """ +import StringIO + import sqlalchemy as sa from sqlalchemy.schema import SchemaVisitor from sqlalchemy.engine.default import DefaultDialect @@ -14,8 +16,8 @@ from sqlalchemy.schema import (ForeignKeyConstraint, UniqueConstraint, Index) -from migrate.changeset import exceptions, constraint, SQLA_06 -import StringIO +from migrate import exceptions +from migrate.changeset import constraint, SQLA_06 if not SQLA_06: from sqlalchemy.sql.compiler import SchemaGenerator, SchemaDropper diff --git a/migrate/changeset/constraint.py b/migrate/changeset/constraint.py index 866ea10..2e2ec7f 100644 --- a/migrate/changeset/constraint.py +++ b/migrate/changeset/constraint.py @@ -3,7 +3,7 @@ """ from sqlalchemy import schema -from migrate.changeset.exceptions import * +from migrate.exceptions import * from migrate.changeset import SQLA_06 class ConstraintChangeset(object): diff --git a/migrate/changeset/databases/firebird.py b/migrate/changeset/databases/firebird.py index 297fe6c..f880035 100644 --- a/migrate/changeset/databases/firebird.py +++ b/migrate/changeset/databases/firebird.py @@ -1,10 +1,12 @@ """ Firebird database specific implementations of changeset classes. """ - -from migrate.changeset import ansisql, exceptions, SQLA_06 from sqlalchemy.databases import firebird as sa_base +from migrate import exceptions +from migrate.changeset import ansisql, SQLA_06 + + if SQLA_06: FBSchemaGenerator = sa_base.FBDDLCompiler else: diff --git a/migrate/changeset/databases/mysql.py b/migrate/changeset/databases/mysql.py index 191b77a..badd9fe 100644 --- a/migrate/changeset/databases/mysql.py +++ b/migrate/changeset/databases/mysql.py @@ -2,10 +2,13 @@ MySQL database specific implementations of changeset classes. """ -from migrate.changeset import ansisql, exceptions, SQLA_06 from sqlalchemy.databases import mysql as sa_base from sqlalchemy import types as sqltypes +from migrate import exceptions +from migrate.changeset import ansisql, SQLA_06 + + if not SQLA_06: MySQLSchemaGenerator = sa_base.MySQLSchemaGenerator else: diff --git a/migrate/changeset/databases/oracle.py b/migrate/changeset/databases/oracle.py index fd2749a..bd761bc 100644 --- a/migrate/changeset/databases/oracle.py +++ b/migrate/changeset/databases/oracle.py @@ -2,12 +2,11 @@ Oracle database specific implementations of changeset classes. """ import sqlalchemy as sa - -from migrate.changeset import ansisql, exceptions - from sqlalchemy.databases import oracle as sa_base -from migrate.changeset import ansisql, exceptions, SQLA_06 +from migrate import exceptions +from migrate.changeset import ansisql, SQLA_06 + if not SQLA_06: OracleSchemaGenerator = sa_base.OracleSchemaGenerator diff --git a/migrate/changeset/databases/sqlite.py b/migrate/changeset/databases/sqlite.py index 31fdbdd..01c3642 100644 --- a/migrate/changeset/databases/sqlite.py +++ b/migrate/changeset/databases/sqlite.py @@ -8,7 +8,9 @@ from copy import copy from sqlalchemy.databases import sqlite as sa_base -from migrate.changeset import ansisql, exceptions, SQLA_06 +from migrate import exceptions +from migrate.changeset import ansisql, SQLA_06 + if not SQLA_06: SQLiteSchemaGenerator = sa_base.SQLiteSchemaGenerator diff --git a/migrate/changeset/exceptions.py b/migrate/changeset/exceptions.py deleted file mode 100644 index a3dacbd..0000000 --- a/migrate/changeset/exceptions.py +++ /dev/null @@ -1,26 +0,0 @@ -""" - This module provides exception classes. -""" - - -class Error(Exception): - """ - Changeset error. - """ - - -class NotSupportedError(Error): - """ - Not supported error. - """ - - -class InvalidConstraintError(Error): - """ - Invalid constraint error. - """ - -class MigrateDeprecationWarning(DeprecationWarning): - """ - Warning for deprecated features in Migrate - """ diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py index 32a2a8f..a18c9ae 100644 --- a/migrate/changeset/schema.py +++ b/migrate/changeset/schema.py @@ -6,8 +6,8 @@ from UserDict import DictMixin import sqlalchemy +from migrate.exceptions import * from migrate.changeset import SQLA_06 -from migrate.changeset.exceptions import * from migrate.changeset.databases.visitor import (get_engine_visitor, run_single_visitor) diff --git a/migrate/versioning/exceptions.py b/migrate/exceptions.py similarity index 83% rename from migrate/versioning/exceptions.py rename to migrate/exceptions.py index 00b5dd6..cb8c409 100644 --- a/migrate/versioning/exceptions.py +++ b/migrate/exceptions.py @@ -1,5 +1,5 @@ """ - Provide exception classes for :mod:`migrate.versioning` + Provide exception classes for :mod:`migrate` """ @@ -73,3 +73,15 @@ class InvalidScriptError(ScriptError): class InvalidVersionError(Error): """Invalid version error.""" + +# migrate.changeset + +class NotSupportedError(Error): + """Not supported error""" + + +class InvalidConstraintError(Error): + """Invalid constraint error""" + +class MigrateDeprecationWarning(DeprecationWarning): + """Warning for deprecated features in Migrate""" diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py index beeb509..d1a8fd2 100644 --- a/migrate/tests/changeset/test_changeset.py +++ b/migrate/tests/changeset/test_changeset.py @@ -3,7 +3,7 @@ import sqlalchemy from sqlalchemy import * -from migrate import changeset +from migrate import changeset, exceptions from migrate.changeset import * from migrate.changeset.schema import ColumnDelta from migrate.tests import fixture @@ -165,7 +165,7 @@ class TestAddDropColumn(fixture.DB): # create column with fk col = Column('data', Integer, ForeignKey(reftable.c.id)) if self.url.startswith('sqlite'): - self.assertRaises(changeset.exceptions.NotSupportedError, + self.assertRaises(exceptions.NotSupportedError, col.create, self.table) else: col.create(self.table) @@ -189,7 +189,7 @@ class TestAddDropColumn(fixture.DB): def test_pk(self): """Can create columns with primary key""" col = Column('data', Integer, nullable=False) - self.assertRaises(changeset.exceptions.InvalidConstraintError, + self.assertRaises(exceptions.InvalidConstraintError, col.create, self.table, primary_key_name=True) col.create(self.table, primary_key_name='data_pkey') @@ -228,7 +228,7 @@ class TestAddDropColumn(fixture.DB): @fixture.usedb(not_supported='sqlite') def test_unique(self): """Can create columns with unique constraint""" - self.assertRaises(changeset.exceptions.InvalidConstraintError, + self.assertRaises(exceptions.InvalidConstraintError, Column('data', Integer, unique=True).create, self.table) col = Column('data', Integer) col.create(self.table, unique_name='data_unique') @@ -249,7 +249,7 @@ class TestAddDropColumn(fixture.DB): @fixture.usedb() def test_index(self): """Can create columns with indexes""" - self.assertRaises(changeset.exceptions.InvalidConstraintError, + self.assertRaises(exceptions.InvalidConstraintError, Column('data', Integer).create, self.table, index_name=True) col = Column('data', Integer) col.create(self.table, index_name='ix_data') @@ -372,7 +372,7 @@ class TestRename(fixture.DB): # Index renames if self.url.startswith('sqlite') or self.url.startswith('mysql'): - self.assertRaises(changeset.exceptions.NotSupportedError, + self.assertRaises(exceptions.NotSupportedError, self.index.rename, index_name2) else: assert_index_name(index_name1) diff --git a/migrate/tests/changeset/test_constraint.py b/migrate/tests/changeset/test_constraint.py index 66fbb86..f2650e0 100644 --- a/migrate/tests/changeset/test_constraint.py +++ b/migrate/tests/changeset/test_constraint.py @@ -5,8 +5,8 @@ from sqlalchemy import * from sqlalchemy.util import * from sqlalchemy.exc import * +from migrate.exceptions import * from migrate.changeset import * -from migrate.changeset.exceptions import * from migrate.tests import fixture diff --git a/migrate/tests/versioning/test_api.py b/migrate/tests/versioning/test_api.py index 41152b0..03b6189 100644 --- a/migrate/tests/versioning/test_api.py +++ b/migrate/tests/versioning/test_api.py @@ -1,8 +1,8 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +from migrate.exceptions import * from migrate.versioning import api -from migrate.versioning.exceptions import * from migrate.tests.fixture.pathed import * from migrate.tests.fixture import models diff --git a/migrate/tests/versioning/test_genmodel.py b/migrate/tests/versioning/test_genmodel.py index 61610a1..c0cf786 100644 --- a/migrate/tests/versioning/test_genmodel.py +++ b/migrate/tests/versioning/test_genmodel.py @@ -3,8 +3,8 @@ import os +from migrate.exceptions import * from migrate.versioning.genmodel import * -from migrate.versioning.exceptions import * from migrate.tests import fixture diff --git a/migrate/tests/versioning/test_repository.py b/migrate/tests/versioning/test_repository.py index a23cd45..2c489d5 100644 --- a/migrate/tests/versioning/test_repository.py +++ b/migrate/tests/versioning/test_repository.py @@ -4,7 +4,7 @@ import os import shutil -from migrate.versioning import exceptions +from migrate import exceptions from migrate.versioning.repository import * from migrate.versioning.script import * from nose.tools import raises diff --git a/migrate/tests/versioning/test_schema.py b/migrate/tests/versioning/test_schema.py index d4b4861..8b0033c 100644 --- a/migrate/tests/versioning/test_schema.py +++ b/migrate/tests/versioning/test_schema.py @@ -4,8 +4,9 @@ import os import shutil +from migrate import exceptions from migrate.versioning.schema import * -from migrate.versioning import script, exceptions, schemadiff +from migrate.versioning import script, schemadiff from sqlalchemy import * diff --git a/migrate/tests/versioning/test_shell.py b/migrate/tests/versioning/test_shell.py index 042ca1f..73472fd 100644 --- a/migrate/tests/versioning/test_shell.py +++ b/migrate/tests/versioning/test_shell.py @@ -12,9 +12,9 @@ except ImportError: from sqlalchemy import MetaData, Table from nose.plugins.skip import SkipTest +from migrate.exceptions import * from migrate.versioning.repository import Repository from migrate.versioning import genmodel, shell, api -from migrate.versioning.exceptions import * from migrate.tests.fixture import Shell, DB, usedb from migrate.tests.fixture import models diff --git a/migrate/tests/versioning/test_version.py b/migrate/tests/versioning/test_version.py index 9ef15ef..7b38c3b 100644 --- a/migrate/tests/versioning/test_version.py +++ b/migrate/tests/versioning/test_version.py @@ -1,8 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +from migrate.exceptions import * from migrate.versioning.version import * -from migrate.versioning.exceptions import * from migrate.tests import fixture diff --git a/migrate/versioning/api.py b/migrate/versioning/api.py index a08f3bd..c159a49 100644 --- a/migrate/versioning/api.py +++ b/migrate/versioning/api.py @@ -29,7 +29,8 @@ import sys import inspect import logging -from migrate.versioning import (exceptions, repository, schema, version, +from migrate import exceptions +from migrate.versioning import (repository, schema, version, script as script_) # command name conflict from migrate.versioning.util import catch_known_errors, with_engine diff --git a/migrate/versioning/pathed.py b/migrate/versioning/pathed.py index 40ec532..fbee0e4 100644 --- a/migrate/versioning/pathed.py +++ b/migrate/versioning/pathed.py @@ -6,7 +6,7 @@ import os import shutil import logging -from migrate.versioning import exceptions +from migrate import exceptions from migrate.versioning.config import * from migrate.versioning.util import KeyedInstance diff --git a/migrate/versioning/repository.py b/migrate/versioning/repository.py index 987ea37..71f3912 100644 --- a/migrate/versioning/repository.py +++ b/migrate/versioning/repository.py @@ -9,7 +9,8 @@ import logging from pkg_resources import resource_filename from tempita import Template as TempitaTemplate -from migrate.versioning import exceptions, version, pathed, cfgparse +from migrate import exceptions +from migrate.versioning import version, pathed, cfgparse from migrate.versioning.template import Template from migrate.versioning.config import * @@ -86,7 +87,7 @@ class Repository(pathed.Pathed): """ Ensure the target path is a valid repository. - :raises: :exc:`InvalidRepositoryError ` + :raises: :exc:`InvalidRepositoryError ` """ # Ensure the existence of required files try: diff --git a/migrate/versioning/schema.py b/migrate/versioning/schema.py index eb3beba..ae615b5 100644 --- a/migrate/versioning/schema.py +++ b/migrate/versioning/schema.py @@ -10,7 +10,8 @@ from sqlalchemy.sql import and_ from sqlalchemy import exceptions as sa_exceptions from sqlalchemy.sql import bindparam -from migrate.versioning import exceptions, genmodel, schemadiff +from migrate import exceptions +from migrate.versioning import genmodel, schemadiff from migrate.versioning.repository import Repository from migrate.versioning.util import load_model from migrate.versioning.version import VerNum diff --git a/migrate/versioning/script/base.py b/migrate/versioning/script/base.py index 0a9d1b7..4287235 100644 --- a/migrate/versioning/script/base.py +++ b/migrate/versioning/script/base.py @@ -2,8 +2,9 @@ # -*- coding: utf-8 -*- import logging +from migrate import exceptions from migrate.versioning.config import operations -from migrate.versioning import pathed, exceptions +from migrate.versioning import pathed log = logging.getLogger(__name__) @@ -33,7 +34,7 @@ class BaseScript(pathed.Pathed): """Ensure this is a valid script This version simply ensures the script file's existence - :raises: :exc:`InvalidScriptError ` + :raises: :exc:`InvalidScriptError ` """ try: cls.require_found(path) diff --git a/migrate/versioning/script/py.py b/migrate/versioning/script/py.py index 9aeb3f4..efc41f0 100644 --- a/migrate/versioning/script/py.py +++ b/migrate/versioning/script/py.py @@ -7,12 +7,12 @@ import logging from StringIO import StringIO import migrate -from migrate.versioning import exceptions, genmodel, schemadiff +from migrate import exceptions +from migrate.versioning import genmodel, schemadiff from migrate.versioning.config import operations 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 * log = logging.getLogger(__name__) @@ -89,7 +89,7 @@ class PythonScript(base.BaseScript): :param path: Script location :type path: string - :raises: :exc:`InvalidScriptError ` + :raises: :exc:`InvalidScriptError ` :returns: Python module """ # Try to import and get the upgrade() func @@ -141,7 +141,7 @@ class PythonScript(base.BaseScript): script_func(engine) except TypeError: warnings.warn("upgrade/downgrade functions must accept engine" - " parameter (since version > 0.5.4)", MigrateDeprecationWarning) + " parameter (since version > 0.5.4)", exceptions.MigrateDeprecationWarning) raise @property diff --git a/migrate/versioning/shell.py b/migrate/versioning/shell.py index 8b59bdc..2d36c42 100644 --- a/migrate/versioning/shell.py +++ b/migrate/versioning/shell.py @@ -8,7 +8,8 @@ import inspect import logging from optparse import OptionParser, BadOptionError -from migrate.versioning import api, exceptions +from migrate import exceptions +from migrate.versioning import api from migrate.versioning.config import * from migrate.versioning.util import asbool diff --git a/migrate/versioning/util/__init__.py b/migrate/versioning/util/__init__.py index 4d39314..9b79f40 100644 --- a/migrate/versioning/util/__init__.py +++ b/migrate/versioning/util/__init__.py @@ -11,11 +11,10 @@ from sqlalchemy import create_engine from sqlalchemy.engine import Engine from sqlalchemy.pool import StaticPool -from migrate.versioning import exceptions +from migrate import exceptions from migrate.versioning.util.keyedinstance import KeyedInstance from migrate.versioning.util.importpath import import_path -from migrate.changeset import * log = logging.getLogger(__name__) @@ -31,7 +30,7 @@ def load_model(dotted_name): if ':' not in dotted_name: # backwards compatibility warnings.warn('model should be in form of module.model:User ' - 'and not module.model.User', MigrateDeprecationWarning) + 'and not module.model.User', exceptions.MigrateDeprecationWarning) dotted_name = ':'.join(dotted_name.rsplit('.', 1)) return EntryPoint.parse('x=%s' % dotted_name).load(False) else: @@ -127,7 +126,7 @@ def construct_engine(engine, **opts): if echo: warnings.warn('echo=True parameter is deprecated, pass ' 'engine_arg_echo=True or engine_dict={"echo": True}', - MigrateDeprecationWarning) + exceptions.MigrateDeprecationWarning) kwargs['echo'] = echo # parse keyword arguments diff --git a/migrate/versioning/version.py b/migrate/versioning/version.py index 04445a3..a09b8cd 100644 --- a/migrate/versioning/version.py +++ b/migrate/versioning/version.py @@ -6,7 +6,8 @@ import re import shutil import logging -from migrate.versioning import exceptions, pathed, script +from migrate import exceptions +from migrate.versioning import pathed, script log = logging.getLogger(__name__)