rel_1_7_0
版本发布时间: 2021-08-30 23:12:06
sqlalchemy/alembic最新发布版本:rel_1_13_2(2024-06-26 23:46:26)
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 withpip 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 onsetuptools
. The functionality has been replaced withimportlib.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 modules
alembic.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 using
op.drop_constraint()
. For "unnamed" CHECK constraints, these are still skipped as they cannot be distinguished from the CHECK constraints that are generated by theBoolean
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 additional
op.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