# Path: alembic/util.py
# class CommandError(Exception):
# class memoized_property(object):
# class immutabledict(dict):
# def _safe_int(value):
# def requires_07(feature):
# def template_to_file(template_file, dest, **kw):
# def create_module_class_proxy(cls, globals_, locals_):
#     def _install_proxy(obj):
#     def _remove_proxy():
#     def _create_op_proxy(name):
#         def _name_error(name):
# def coerce_resource_to_filename(fname):
# def status(_statmsg, fn, *arg, **kw):
# def err(message):
# def obfuscate_url_pw(u):
# def asbool(value):
# def warn(msg):
# def msg(msg, newline=True):
# def load_python_file(dir_, filename):
# def pyc_file_from_path(path):
# def rev_id():
#     def __init__(self, fget, doc=None):
#     def __get__(self, obj, cls):
#     def _immutable(self, *arg, **kw):
#     def __new__(cls, *args):
#     def __init__(self, *args):
#     def __reduce__(self):
#     def union(self, d):
#     def __repr__(self):


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 types as sqltypes
                                table_name, column_name, name, schema=schema,
                                existing_type=existing_type,
                                existing_server_default=existing_server_default,
                                existing_nullable=existing_nullable,
                            ))

    def add_column(self, table_name, column):
        self._exec(base.AddColumn(table_name, column))

    def drop_column(self, table_name, column, **kw):
        self._exec(base.DropColumn(table_name, column))

    def add_constraint(self, const):
        if const._create_rule is None or \
            const._create_rule(self):
            self._exec(schema.AddConstraint(const))

    def drop_constraint(self, const):
        self._exec(schema.DropConstraint(const))

    def rename_table(self, old_table_name, new_table_name, schema=None):
        self._exec(base.RenameTable(old_table_name,
                    new_table_name, schema=schema))

    def create_table(self, table):
        if util.sqla_07:
            table.dispatch.before_create(table, self.connection,
                                        checkfirst=False,
                                            _ddl_runner=self)
        self._exec(schema.CreateTable(table))

# Path: alembic/util.py
# class CommandError(Exception):
# class memoized_property(object):
# class immutabledict(dict):
# def _safe_int(value):
# def requires_07(feature):
# def template_to_file(template_file, dest, **kw):
# def create_module_class_proxy(cls, globals_, locals_):
#     def _install_proxy(obj):
#     def _remove_proxy():
#     def _create_op_proxy(name):
#         def _name_error(name):
# def coerce_resource_to_filename(fname):
# def status(_statmsg, fn, *arg, **kw):
# def err(message):
# def obfuscate_url_pw(u):
# def asbool(value):
# def warn(msg):
# def msg(msg, newline=True):
# def load_python_file(dir_, filename):
# def pyc_file_from_path(path):
# def rev_id():
#     def __init__(self, fget, doc=None):
#     def __get__(self, obj, cls):
#     def _immutable(self, *arg, **kw):
#     def __new__(cls, *args):
#     def __init__(self, *args):
#     def __reduce__(self):
#     def union(self, d):
#     def __repr__(self):


# Path: alembic/ddl/impl.py
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 types as sqltypes

                                table_name, column_name, name, schema=schema,
                                existing_type=existing_type,
                                existing_server_default=existing_server_default,
                                existing_nullable=existing_nullable,
                            ))

    def add_column(self, table_name, column):
        self._exec(base.AddColumn(table_name, column))

    def drop_column(self, table_name, column, **kw):
        self._exec(base.DropColumn(table_name, column))

    def add_constraint(self, const):
        if const._create_rule is None or \
            const._create_rule(self):
            self._exec(schema.AddConstraint(const))

    def drop_constraint(self, const):
        self._exec(schema.DropConstraint(const))

    def rename_table(self, old_table_name, new_table_name, schema=None):
        self._exec(base.RenameTable(old_table_name,
                    new_table_name, schema=schema))

    def create_table(self, table):
        if util.sqla_07:
            table.dispatch.before_create(table, self.connection,
                                        checkfirst=False,
                                            _ddl_runner=self)
        self._exec(schema.CreateTable(table))

        if util.sqla_07: