diff options
author | CaselIT <cfederico87@gmail.com> | 2021-06-15 22:32:05 +0200 |
---|---|---|
committer | CaselIT <cfederico87@gmail.com> | 2021-06-15 23:38:07 +0200 |
commit | 7756b35e23ec11b64a1ac37afcb41dda3ca29913 (patch) | |
tree | a2c46870a195f22c7489bface5a890cf90acff5c /alembic/script | |
parent | c0f0a3238fe1ec8029d66ad6ac518b60c78c36ed (diff) | |
download | alembic-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.py | 12 |
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: |