package_dir = path.abspath(path.dirname(__file__))
-from alembic import op
-from alembic import context
+from . import op
+from . import context
"""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__)
###################################################
-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"""
-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.
-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.
-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
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.
-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_)
-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'
-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'
-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'
-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'
-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):
-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.
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
-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):
-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.
-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',)
@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):
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$')
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
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')
+
+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,\
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):
-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",
-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()
"""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):
-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)
-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):
"""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":
"""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):
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
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
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):