from alembic.script import ScriptDirectory
from alembic.environment import EnvironmentContext
-from alembic import util, ddl, autogenerate as autogen
+from alembic import util, autogenerate as autogen
import os
def list_templates(config):
if autogenerate:
environment = True
- util.requires_07("autogenerate")
def retrieve_migrations(rev, context):
if script.get_revision(rev) is not script.get_revision("head"):
raise util.CommandError("Target database is not up to date.")
import re
import inspect
import uuid
-from sqlalchemy.util import format_argspec_plus, update_wrapper
class CommandError(Exception):
pass
except:
return value
_vers = tuple([_safe_int(x) for x in re.findall(r'(\d+|[abc]\d)', __version__)])
-sqla_06 = _vers > (0, 6)
-sqla_07 = _vers > (0, 7)
+sqla_07 = _vers > (0, 7, 2)
sqla_08 = _vers >= (0, 8, 0, 'b2')
-if not sqla_06:
+if not sqla_07:
raise CommandError(
- "SQLAlchemy 0.6 or greater is required. "
- "Version 0.7 or above required for full featureset.")
-
-def requires_07(feature):
- if not sqla_07:
- raise CommandError(
- "The %s feature requires "
- "SQLAlchemy 0.7 or greater."
- % feature
- )
+ "SQLAlchemy 0.7.3 or greater is required. ")
+
+from sqlalchemy.util import format_argspec_plus, update_wrapper
+from sqlalchemy.util.compat import inspect_getfullargspec
+
try:
width = int(os.environ['COLUMNS'])
except (KeyError, ValueError):
num_defaults += len(spec[3])
name_args = spec[0]
if num_defaults:
- defaulted_vals = name_args[0-num_defaults:]
+ defaulted_vals = name_args[0 - num_defaults:]
else:
defaulted_vals = ()
return _proxy.%(name)s(%(apply_kw)s)
e
""" % {
- 'name':name,
- 'args':args[1:-1],
- 'apply_kw':apply_kw[1:-1],
- 'doc':fn.__doc__,
+ 'name': name,
+ 'args': args[1:-1],
+ 'apply_kw': apply_kw[1:-1],
+ 'doc': fn.__doc__,
})
lcl = {}
exec func_text in globals_, lcl
lines = textwrap.wrap(msg, width)
if len(lines) > 1:
for line in lines[0:-1]:
- sys.stdout.write(" " +line + "\n")
+ sys.stdout.write(" " + line + "\n")
sys.stdout.write(" " + lines[-1] + ("\n" if newline else ""))
def load_python_file(dir_, filename):
def _with_legacy_names(translations):
def decorate(fn):
- spec = inspect.getargspec(fn)
+
+ spec = inspect_getfullargspec(fn)
metadata = dict(target='target', fn='fn')
metadata.update(format_argspec_plus(spec, grouped=False))
Alembic's install process will ensure that `SQLAlchemy <http://www.sqlalchemy.org>`_
is installed, in addition to other dependencies. Alembic will work with
-SQLAlchemy as of version **0.6**, though with a limited featureset.
-The latest version of SQLAlchemy within the **0.7** or **0.8** series is strongly recommended.
+SQLAlchemy as of version **0.7.3**. The latest version of SQLAlchemy within
+the **0.7** or **0.8** series is strongly recommended.
+
+.. versionchanged:: 0.5.0
+ Support for SQLAlchemy 0.6 has been dropped.
Community