1.7.0
Released: August 30, 2021
changed
-
[changed] [installation] Alembic 1.7 now supports Python 3.6 and above; support for prior versions
including Python 2.7 has been dropped. -
[changed] [installation] Make the
python-dateutil
library an optional dependency.
This library is only required if thetimezone
option
is used in the Alembic configuration.
An extra require namedtz
is available with
pip install alembic[tz]
to install it.References: #674
-
[changed] [installation] The dependency on
pkg_resources
which is part ofsetuptools
has
been removed, so there is no longer any runtime dependency on
setuptools
. The functionality has been replaced with
importlib.metadata
andimportlib.resources
which are both part of
Python std.lib, or via pypy dependencyimportlib-metadata
for Python
version < 3.8 andimportlib-resources
for Python version < 3.9
(while importlib.resources was added to Python in 3.7, it did not include
the "files" API until 3.9).References: #885
feature
-
[feature] [environment] Enhance
version_locations
parsing to handle paths containing spaces.
The new configuration optionversion_path_separator
specifies the
character to use when splitting theversion_locations
string. The
default for new configurations isversion_path_separator = os
,
which will useos.pathsep
(e.g.,;
on Windows).References: #842
-
[feature] [tests] Created a "test suite" similar to the one for SQLAlchemy, allowing
developers of third-party dialects to test their code against a set of
Alembic tests that have been specially selected to exercise
back-end database operations. At the time of release,
third-party dialects that have adopted the Alembic test suite to verify
compatibility include
CockroachDB and
SAP ASE (Sybase).References: #855
-
[feature] [general] pep-484 type annotations have been added throughout the library.
Additionally, stub .pyi files have been added for the "dynamically"
generated Alembic modulesalembic.op
andalembic.config
, which
include complete function signatures and docstrings, so that the functions
in these namespaces will have both IDE support (vscode, pycharm, etc) as
well as support for typing tools like Mypy. The files themselves are
statically generated from their source functions within the source tree.
usecase
-
[usecase] [batch] Named CHECK constraints are now supported by batch mode, and will
automatically be part of the recreated table assuming they are named. They
also can be explicitly dropped usingop.drop_constraint()
. For
"unnamed" CHECK constraints, these are still skipped as they cannot be
distinguished from the CHECK constraints that are generated by the
Boolean
andEnum
datatypes.Note that this change may require adjustments to migrations that drop or
rename columns which feature an associated named check constraint, such
that an additionalop.drop_constraint()
directive should be added for
that named constraint as there will no longer be an associated column
for it; for theBoolean
andEnum
datatypes, anexisting_type
keyword may be passed toBatchOperations.drop_constraint
as well.References: #884
bug
-
[bug] [operations] Fixed regression due to #803 where the
.info
and.comment
attributes ofTable
would be lost inside of theDropTableOp
class, which when "reversed" into aCreateTableOp
would then have
lost these elements. Pull request courtesy Nicolas CANIART.References: #879
-
[bug] [batch] [sqlite] Batch "auto" mode will now select for "recreate" if the
add_column()
operation is used on SQLite, and the column itself meets the criteria for
SQLite where ADD COLUMN is not allowed, in this case a functional or
parenthesized SQL expression or aComputed
(i.e. generated) column.References: #883
-
[bug] [commands] Re-implemented the
python-editor
dependency as a small internal
function to avoid the need for external dependencies.References: #856
-
[bug] [postgresql] Fixed issue where usage of the PostgreSQL
postgresql_include
option
within aOperations.create_index()
would raise a KeyError, as the
additional column(s) need to be added to the table object used by the
construct internally. The issue is equivalent to the SQL Server issue fixed
in #513. Pull request courtesy Steven Bronson.References: #874