summaryrefslogtreecommitdiff
path: root/alembic/script
diff options
context:
space:
mode:
authorCaselIT <cfederico87@gmail.com>2021-06-15 22:32:05 +0200
committerCaselIT <cfederico87@gmail.com>2021-06-15 23:38:07 +0200
commit7756b35e23ec11b64a1ac37afcb41dda3ca29913 (patch)
treea2c46870a195f22c7489bface5a890cf90acff5c /alembic/script
parentc0f0a3238fe1ec8029d66ad6ac518b60c78c36ed (diff)
downloadalembic-7756b35e23ec11b64a1ac37afcb41dda3ca29913.tar.gz
Revendor editor and make dateutil optional
Re-implemented the ``python-editor`` dependency as a small internal function to avoid the need for external dependencies. The implementation is based on the original version in 7b91b325ff43a0e9235e0f15b57391fa92352626. Make the ``python-dateutil`` library an optional dependency. This library is only required if the ``timezone`` option is used in the Alembic configuration. An extra require named ``tz`` is available with ``pip install alembic[tz]`` to install it. Fixes: #674 Fixes: #856 Change-Id: I07f17b2fea01e3a3d677ce95333fe3e8d8d438fd
Diffstat (limited to 'alembic/script')
-rw-r--r--alembic/script/base.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/alembic/script/base.py b/alembic/script/base.py
index 3f61864..723c011 100644
--- a/alembic/script/base.py
+++ b/alembic/script/base.py
@@ -5,14 +5,17 @@ import re
import shutil
import sys
-from dateutil import tz
-
from . import revision
from . import write_hooks
from .. import util
from ..runtime import migration
from ..util import compat
+try:
+ from dateutil import tz
+except ImportError:
+ tz = None # noqa
+
_sourceless_rev_file = re.compile(r"(?!\.\#|__init__)(.*\.py)(c|o)?$")
_only_source_rev_file = re.compile(r"(?!\.\#|__init__)(.*\.py)$")
_legacy_rev = re.compile(r"([a-f0-9]+)\.py$")
@@ -515,6 +518,11 @@ class ScriptDirectory(object):
def _generate_create_date(self):
if self.timezone is not None:
+ if tz is None:
+ raise util.CommandError(
+ "The library 'python-dateutil' is required "
+ "for timezone support"
+ )
# First, assume correct capitalization
tzinfo = tz.gettz(self.timezone)
if tzinfo is None: