diff options
author | Hong Minhee <minhee@dahlia.kr> | 2013-04-11 05:34:07 +0900 |
---|---|---|
committer | Hong Minhee <minhee@dahlia.kr> | 2013-04-11 05:34:07 +0900 |
commit | 3c780af24f0e69155edc946e114cbdd1839fb488 (patch) | |
tree | 10dfe56e35db0e347c5705d20f1d034149c80d5e | |
parent | 45f013170c345a987efafc6d23b36035a124a8ce (diff) | |
download | alembic-3c780af24f0e69155edc946e114cbdd1839fb488.tar.gz |
Use relative imports
This change does not affect to any behaviors of it, but is just stylish
improvements to remove 2to3 dependency.
1. All old-style absolute imports e.g. `from alembic import util` are
replaced by relative imports e.g. `from . import util`.
2. Use of proxy modules (`alembic.op` and `alembic.context`) are replaced
by deferred import patterns, but these modules still exist.
3. Imports are grouped by 3 types of their origins (standard libraries,
third party libraries, and local modules) and blank lines are put between
each group of imports. This style is from PEP 8:
<http://www.python.org/dev/peps/pep-0008/#imports>
For stylish change, I can't do that much, because it was intentionally done
as it was by the author. If the author will allow me to make it more closer
to PEP 8 style, I will do that as well.
31 files changed, 153 insertions, 107 deletions
diff --git a/alembic/__init__.py b/alembic/__init__.py index eb81028..0625c43 100644 --- a/alembic/__init__.py +++ b/alembic/__init__.py @@ -5,6 +5,6 @@ __version__ = '0.5.0' package_dir = path.abspath(path.dirname(__file__)) -from alembic import op -from alembic import context +from . import op +from . import context diff --git a/alembic/autogenerate.py b/alembic/autogenerate.py index 91ddcfc..c54d788 100644 --- a/alembic/autogenerate.py +++ b/alembic/autogenerate.py @@ -1,13 +1,14 @@ """Provide the 'autogenerate' feature which can produce migration operations automatically.""" -from alembic import util +import logging +import re + +from . import util from sqlalchemy.engine.reflection import Inspector from sqlalchemy.util import OrderedSet from sqlalchemy import schema as sa_schema, types as sqltypes -import re -import logging log = logging.getLogger(__name__) ################################################### diff --git a/alembic/command.py b/alembic/command.py index aad9691..ddaf00a 100644 --- a/alembic/command.py +++ b/alembic/command.py @@ -1,8 +1,9 @@ -from alembic.script import ScriptDirectory -from alembic.environment import EnvironmentContext -from alembic import util, autogenerate as autogen import os +from .script import ScriptDirectory +from .environment import EnvironmentContext +from . import util, autogenerate as autogen + def list_templates(config): """List available templates""" diff --git a/alembic/config.py b/alembic/config.py index 822df8c..cf667b9 100644 --- a/alembic/config.py +++ b/alembic/config.py @@ -1,10 +1,11 @@ -from alembic import command, util, package_dir from argparse import ArgumentParser import ConfigParser import inspect import os import sys +from . import command, util, package_dir + class Config(object): """Represent an Alembic configuration. diff --git a/alembic/context.py b/alembic/context.py index 51b38ff..9c0f676 100644 --- a/alembic/context.py +++ b/alembic/context.py @@ -1,5 +1,5 @@ -from alembic.environment import EnvironmentContext -from alembic import util +from .environment import EnvironmentContext +from . import util # create proxy functions for # each method on the EnvironmentContext class. diff --git a/alembic/ddl/__init__.py b/alembic/ddl/__init__.py index e252fae..bfc8ab4 100644 --- a/alembic/ddl/__init__.py +++ b/alembic/ddl/__init__.py @@ -1,2 +1,2 @@ -import postgresql, mysql, sqlite, mssql, oracle -from impl import DefaultImpl
\ No newline at end of file +from . import postgresql, mysql, sqlite, mssql, oracle +from .impl import DefaultImpl diff --git a/alembic/ddl/base.py b/alembic/ddl/base.py index 053cf45..5d703a5 100644 --- a/alembic/ddl/base.py +++ b/alembic/ddl/base.py @@ -1,9 +1,10 @@ import functools + from sqlalchemy.ext.compiler import compiles from sqlalchemy.schema import DDLElement, Column from sqlalchemy import Integer - from sqlalchemy import types as sqltypes + class AlterTable(DDLElement): """Represent an ALTER TABLE statement. diff --git a/alembic/ddl/impl.py b/alembic/ddl/impl.py index 60cf4d5..ce24864 100644 --- a/alembic/ddl/impl.py +++ b/alembic/ddl/impl.py @@ -1,11 +1,11 @@ -from sqlalchemy import text from sqlalchemy.sql.expression import _BindParamClause from sqlalchemy.ext.compiler import compiles -from sqlalchemy import schema -from alembic.ddl import base -from alembic import util +from sqlalchemy import schema, text from sqlalchemy import types as sqltypes +from .. import util +from . import base + class ImplMeta(type): def __init__(cls, classname, bases, dict_): newtype = type.__init__(cls, classname, bases, dict_) diff --git a/alembic/ddl/mssql.py b/alembic/ddl/mssql.py index 0f2a759..4125251 100644 --- a/alembic/ddl/mssql.py +++ b/alembic/ddl/mssql.py @@ -1,9 +1,10 @@ -from alembic.ddl.impl import DefaultImpl -from alembic.ddl.base import alter_table, AddColumn, ColumnName, \ +from sqlalchemy.ext.compiler import compiles + +from .. import util +from .impl import DefaultImpl +from .base import alter_table, AddColumn, ColumnName, \ format_table_name, format_column_name, ColumnNullable, alter_column,\ format_server_default,ColumnDefault, format_type, ColumnType -from alembic import util -from sqlalchemy.ext.compiler import compiles class MSSQLImpl(DefaultImpl): __dialect__ = 'mssql' diff --git a/alembic/ddl/mysql.py b/alembic/ddl/mysql.py index 04d8473..d04727e 100644 --- a/alembic/ddl/mysql.py +++ b/alembic/ddl/mysql.py @@ -1,12 +1,13 @@ -from alembic.ddl.impl import DefaultImpl -from alembic.ddl.base import ColumnNullable, ColumnName, ColumnDefault, \ - ColumnType, AlterColumn from sqlalchemy.ext.compiler import compiles -from alembic.ddl.base import alter_table -from alembic import util from sqlalchemy import types as sqltypes from sqlalchemy import schema +from .impl import DefaultImpl +from .base import ColumnNullable, ColumnName, ColumnDefault, \ + ColumnType, AlterColumn +from .base import alter_table +from .. import util + class MySQLImpl(DefaultImpl): __dialect__ = 'mysql' diff --git a/alembic/ddl/oracle.py b/alembic/ddl/oracle.py index c87e130..28eb246 100644 --- a/alembic/ddl/oracle.py +++ b/alembic/ddl/oracle.py @@ -1,8 +1,9 @@ -from alembic.ddl.impl import DefaultImpl -from alembic.ddl.base import alter_table, AddColumn, ColumnName, \ +from sqlalchemy.ext.compiler import compiles + +from .impl import DefaultImpl +from .base import alter_table, AddColumn, ColumnName, \ format_column_name, ColumnNullable, \ format_server_default,ColumnDefault, format_type, ColumnType -from sqlalchemy.ext.compiler import compiles class OracleImpl(DefaultImpl): __dialect__ = 'oracle' diff --git a/alembic/ddl/postgresql.py b/alembic/ddl/postgresql.py index fce467b..d63958b 100644 --- a/alembic/ddl/postgresql.py +++ b/alembic/ddl/postgresql.py @@ -1,7 +1,9 @@ -from alembic.ddl.impl import DefaultImpl +import re + from sqlalchemy import types as sqltypes + from .base import compiles, alter_table, format_table_name, RenameTable -import re +from .impl import DefaultImpl class PostgresqlImpl(DefaultImpl): __dialect__ = 'postgresql' diff --git a/alembic/ddl/sqlite.py b/alembic/ddl/sqlite.py index b08e60f..8afc993 100644 --- a/alembic/ddl/sqlite.py +++ b/alembic/ddl/sqlite.py @@ -1,8 +1,8 @@ -from alembic.ddl.impl import DefaultImpl -from alembic import util +from .. import util +from .impl import DefaultImpl #from sqlalchemy.ext.compiler import compiles -#from alembic.ddl.base import AddColumn, alter_table +#from .base import AddColumn, alter_table #from sqlalchemy.schema import AddConstraint class SQLiteImpl(DefaultImpl): diff --git a/alembic/environment.py b/alembic/environment.py index 584b6f0..1808145 100644 --- a/alembic/environment.py +++ b/alembic/environment.py @@ -1,9 +1,9 @@ -import alembic -from alembic.operations import Operations -from alembic.migration import MigrationContext -from alembic import util from contextlib import contextmanager +from .operations import Operations +from .migration import MigrationContext +from . import util + class EnvironmentContext(object): """Represent the state made available to an ``env.py`` script. @@ -99,12 +99,14 @@ class EnvironmentContext(object): be made available as ``from alembic import context``. """ - alembic.context._install_proxy(self) + from .context import _install_proxy + _install_proxy(self) return self def __exit__(self, *arg, **kw): - alembic.context._remove_proxy() - alembic.op._remove_proxy() + from . import context, op + context._remove_proxy() + op._remove_proxy() def is_offline_mode(self): """Return True if the current migrations environment diff --git a/alembic/migration.py b/alembic/migration.py index b336ec9..82fee9c 100644 --- a/alembic/migration.py +++ b/alembic/migration.py @@ -1,12 +1,13 @@ -from alembic import util +import codecs +import logging +import sys + from sqlalchemy import MetaData, Table, Column, String, literal_column from sqlalchemy import create_engine -from alembic import ddl -import sys from sqlalchemy.engine import url as sqla_url -import codecs -import logging +from . import ddl, util + log = logging.getLogger(__name__) class MigrationContext(object): diff --git a/alembic/op.py b/alembic/op.py index 6934ccc..8e5f777 100644 --- a/alembic/op.py +++ b/alembic/op.py @@ -1,5 +1,5 @@ -from alembic.operations import Operations -from alembic import util +from .operations import Operations +from . import util # create proxy functions for # each method on the Operations class. diff --git a/alembic/operations.py b/alembic/operations.py index 1e21bc7..1b29a75 100644 --- a/alembic/operations.py +++ b/alembic/operations.py @@ -1,9 +1,10 @@ -from alembic import util -from alembic.ddl import impl +from contextlib import contextmanager + from sqlalchemy.types import NULLTYPE, Integer from sqlalchemy import schema as sa_schema -from contextlib import contextmanager -import alembic + +from . import util +from .ddl import impl __all__ = ('Operations',) @@ -45,10 +46,11 @@ class Operations(object): @classmethod @contextmanager def context(cls, migration_context): + from .op import _install_proxy, _remove_proxy op = Operations(migration_context) - alembic.op._install_proxy(op) + _install_proxy(op) yield op - alembic.op._remove_proxy() + _remove_proxy() def _primary_key_constraint(self, name, table_name, cols, schema=None): diff --git a/alembic/script.py b/alembic/script.py index 2fbccae..53dbb2e 100644 --- a/alembic/script.py +++ b/alembic/script.py @@ -1,10 +1,11 @@ from __future__ import with_statement +import datetime import os -from alembic import util -import shutil import re -import datetime +import shutil + +from . import util _rev_file = re.compile(r'.*\.py$') _legacy_rev = re.compile(r'([a-f0-9]+)\.py$') diff --git a/alembic/util.py b/alembic/util.py index 7f06f4a..826247f 100644 --- a/alembic/util.py +++ b/alembic/util.py @@ -1,16 +1,17 @@ from __future__ import with_statement -from mako.template import Template import sys import os import textwrap -from sqlalchemy.engine import url import imp import warnings import re import inspect import uuid +from mako.template import Template +from sqlalchemy.engine import url + class CommandError(Exception): pass diff --git a/tests/__init__.py b/tests/__init__.py index 4d9a5b9..83d5825 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,23 +1,33 @@ from __future__ import with_statement -from sqlalchemy.engine import default -import shutil +try: + import builtins +except ImportError: + import __builtin__ as builtins +try: + import configparser +except ImportError: + import ConfigParser as configparser +import io import os +import re +import shutil +import StringIO +import textwrap + +from nose import SkipTest +from sqlalchemy.engine import default from sqlalchemy import create_engine, text +from sqlalchemy.exc import SQLAlchemyError +from sqlalchemy.util import decorator + +import alembic from alembic import util from alembic.migration import MigrationContext from alembic.environment import EnvironmentContext -import re -import alembic from alembic.operations import Operations from alembic.script import ScriptDirectory, Script -import StringIO from alembic.ddl.impl import _impls -import ConfigParser -from nose import SkipTest -from sqlalchemy.exc import SQLAlchemyError -from sqlalchemy.util import decorator -import textwrap staging_directory = os.path.join(os.path.dirname(__file__), 'scratch') files_directory = os.path.join(os.path.dirname(__file__), 'files') diff --git a/tests/test_autogenerate.py b/tests/test_autogenerate.py index 8f2d116..1519d82 100644 --- a/tests/test_autogenerate.py +++ b/tests/test_autogenerate.py @@ -1,3 +1,8 @@ + +import re +import sys +from unittest import TestCase + from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \ Numeric, CHAR, ForeignKey, DATETIME, \ TypeDecorator, CheckConstraint, Unicode, Enum,\ @@ -7,14 +12,12 @@ from sqlalchemy.types import NULLTYPE, TIMESTAMP from sqlalchemy.dialects import mysql from sqlalchemy.engine.reflection import Inspector from sqlalchemy.sql import and_, column, literal_column -from alembic import autogenerate + +from alembic import autogenerate, util from alembic.migration import MigrationContext -from unittest import TestCase -from tests import staging_env, sqlite_db, clear_staging_env, eq_, \ +from . import staging_env, sqlite_db, clear_staging_env, eq_, \ eq_ignore_whitespace, requires_07, db_for_dialect -from alembic import util -import re -import sys + py3k = sys.version_info >= (3, ) def _model_one(schema=None): diff --git a/tests/test_bulk_insert.py b/tests/test_bulk_insert.py index d6c37a3..a3fe28c 100644 --- a/tests/test_bulk_insert.py +++ b/tests/test_bulk_insert.py @@ -1,10 +1,12 @@ -from tests import op_fixture, eq_, assert_raises_message +from unittest import TestCase + from alembic import op from sqlalchemy import Integer, String from sqlalchemy.sql import table, column -from unittest import TestCase from sqlalchemy import Table, Column, MetaData +from . import op_fixture, eq_, assert_raises_message + def _table_fixture(dialect, as_sql): context = op_fixture(dialect, as_sql) t1 = table("ins_table", diff --git a/tests/test_config.py b/tests/test_config.py index 0b6df76..9610600 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,9 +1,9 @@ -from alembic import config +from alembic import config, util from alembic.migration import MigrationContext from alembic.operations import Operations -from alembic import util from alembic.script import ScriptDirectory -from tests import eq_, capture_db, assert_raises_message + +from . import eq_, capture_db, assert_raises_message def test_config_no_file_main_option(): cfg = config.Config() diff --git a/tests/test_mssql.py b/tests/test_mssql.py index 66cdb9a..398d228 100644 --- a/tests/test_mssql.py +++ b/tests/test_mssql.py @@ -1,11 +1,14 @@ """Test op functions against MSSQL.""" from __future__ import with_statement -from tests import op_fixture, capture_context_buffer, \ + +from unittest import TestCase + +from sqlalchemy import Integer, Column + +from alembic import op, command, util +from . import op_fixture, capture_context_buffer, \ _no_sql_testing_config, assert_raises_message, staging_env, \ three_rev_fixture, clear_staging_env -from alembic import op, command, util -from sqlalchemy import Integer, Column -from unittest import TestCase class FullEnvironmentTests(TestCase): diff --git a/tests/test_mysql.py b/tests/test_mysql.py index 246181a..8ffa2a5 100644 --- a/tests/test_mysql.py +++ b/tests/test_mysql.py @@ -1,7 +1,8 @@ -from tests import op_fixture, assert_raises_message -from alembic import op, util from sqlalchemy import Integer, func +from alembic import op, util +from . import op_fixture, assert_raises_message + def test_rename_column(): context = op_fixture('mysql') op.alter_column('t1', 'c1', new_column_name="c2", existing_type=Integer) diff --git a/tests/test_offline_environment.py b/tests/test_offline_environment.py index c5e5c59..4a727d3 100644 --- a/tests/test_offline_environment.py +++ b/tests/test_offline_environment.py @@ -1,9 +1,10 @@ -from tests import clear_staging_env, staging_env, \ +from unittest import TestCase + +from alembic import command, util +from . import clear_staging_env, staging_env, \ _no_sql_testing_config, \ three_rev_fixture, env_file_fixture,\ assert_raises_message -from alembic import command, util -from unittest import TestCase class OfflineEnvironmentTest(TestCase): diff --git a/tests/test_op.py b/tests/test_op.py index 3e91472..9d6a2d2 100644 --- a/tests/test_op.py +++ b/tests/test_op.py @@ -1,12 +1,13 @@ """Test against the builders in the op.* module.""" -from tests import op_fixture, assert_raises_message -from alembic import op from sqlalchemy import Integer, Column, ForeignKey, \ Table, String, Boolean from sqlalchemy.sql import column, func - from sqlalchemy import event + +from alembic import op +from . import op_fixture, assert_raises_message + @event.listens_for(Table, "after_parent_attach") def _add_cols(table, metadata): if table.name == "tbl_with_auto_appended_column": diff --git a/tests/test_oracle.py b/tests/test_oracle.py index 87a3e4f..ae9677d 100644 --- a/tests/test_oracle.py +++ b/tests/test_oracle.py @@ -1,11 +1,14 @@ """Test op functions against ORACLE.""" from __future__ import with_statement -from tests import op_fixture, capture_context_buffer, \ + +from unittest import TestCase + +from sqlalchemy import Integer, Column + +from alembic import op, command +from . import op_fixture, capture_context_buffer, \ _no_sql_testing_config, staging_env, \ three_rev_fixture, clear_staging_env -from alembic import op, command -from sqlalchemy import Integer, Column -from unittest import TestCase class FullEnvironmentTests(TestCase): diff --git a/tests/test_postgresql.py b/tests/test_postgresql.py index 3adaa2b..3c0bb39 100644 --- a/tests/test_postgresql.py +++ b/tests/test_postgresql.py @@ -1,13 +1,16 @@ from __future__ import with_statement -from tests import db_for_dialect, eq_, staging_env, \ - clear_staging_env, _no_sql_testing_config,\ - capture_context_buffer, requires_07, write_script + from unittest import TestCase + from sqlalchemy import DateTime, MetaData, Table, Column, text, Integer, String from sqlalchemy.engine.reflection import Inspector + from alembic import command, util from alembic.migration import MigrationContext from alembic.script import ScriptDirectory +from . import db_for_dialect, eq_, staging_env, \ + clear_staging_env, _no_sql_testing_config,\ + capture_context_buffer, requires_07, write_script class PGOfflineEnumTest(TestCase): @requires_07 diff --git a/tests/test_sql_script.py b/tests/test_sql_script.py index e5a41e0..6cea44c 100644 --- a/tests/test_sql_script.py +++ b/tests/test_sql_script.py @@ -2,12 +2,13 @@ from __future__ import with_statement, unicode_literals -from tests import clear_staging_env, staging_env, \ +import unittest + +from . import clear_staging_env, staging_env, \ _no_sql_testing_config, capture_context_buffer, \ three_rev_fixture, write_script from alembic import command, util from alembic.script import ScriptDirectory -import unittest cfg = None a, b, c = None, None, None diff --git a/tests/test_versioning.py b/tests/test_versioning.py index fdf400f..84dd777 100644 --- a/tests/test_versioning.py +++ b/tests/test_versioning.py @@ -1,11 +1,13 @@ from __future__ import with_statement -from tests import clear_staging_env, staging_env, \ - _sqlite_testing_config, sqlite_db, eq_, write_script, \ - assert_raises_message + +import os +import unittest + from alembic import command, util from alembic.script import ScriptDirectory -import unittest -import os +from . import clear_staging_env, staging_env, \ + _sqlite_testing_config, sqlite_db, eq_, write_script, \ + assert_raises_message class VersioningTest(unittest.TestCase): def test_001_revisions(self): |