Path to this page:
Subject: CVS commit: pkgsrc/databases/py-alembic
From: Adam Ciarcinski
Date: 2021-11-14 19:42:37
Message id: 20211114184238.05FACFAEC@cvs.NetBSD.org
Log Message:
py-alembic: updated to 1.7.5
1.7.5
Released: November 11, 2021
bug
[bug] [tests]
Adjustments to the test suite to accommodate for error message changes occurring \
as of SQLAlchemy 1.4.27.
1.7.4
Released: October 6, 2021
bug
[bug] [regression]
Fixed a regression that prevented the use of post write hooks on python version \
lower than 3.9
[bug] [environment]
Fixed issue where the MigrationContext.autocommit_block() feature would fail to \
function when using a SQLAlchemy engine using 2.0 future mode.
1.7.3
Released: September 17, 2021
bug
[bug] [mypy]
Fixed type annotations for the “constraint_name” argument of operations \
create_primary_key(), create_foreign_key(). Pull request courtesy TilmanK.
1.7.2
Released: September 17, 2021
bug
[bug] [typing]
Added missing attributes from context stubs.
[bug] [mypy]
Fixed an import in one of the .pyi files that was triggering an assertion error \
in some versions of mypy.
[bug] [ops] [regression]
Fixed issue where registration of custom ops was prone to failure due to the \
registration process running exec() on generated code that as of the 1.7 series \
includes pep-484 annotations, which in the case of end user code would result in \
name resolution errors when the exec occurs. The logic in question has been \
altered so that the annotations are rendered as forward references so that the \
exec() can proceed.
1.7.1
Released: August 30, 2021
bug
[bug] [installation]
Corrected “universal wheel” directive in setup.cfg so that building a wheel \
does not target Python 2. The PyPi files index for 1.7.0 was corrected manually. \
Pull request courtesy layday.
[bug] [pep484]
Fixed issue in generated .pyi files where default values for Optional arguments \
were missing, thereby causing mypy to consider them as required.
[bug] [batch] [regression]
Fixed regression in batch mode due to 883 where the “auto” mode of batch \
would fail to accommodate any additional migration directives beyond \
encountering an add_column() directive, due to a mis-application of the \
conditional logic that was added as part of this change, leading to \
“recreate” mode not being used in cases where it is required for SQLite such \
as for unique constraints.
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 the timezone option is used in the Alembic configuration. An extra \
require named tz is available with pip install alembic[tz] to install it.
[changed] [installation]
The dependency on pkg_resources which is part of setuptools has been removed, so \
there is no longer any runtime dependency on setuptools. The functionality has \
been replaced with importlib.metadata and importlib.resources which are both \
part of Python std.lib, or via pypy dependency importlib-metadata for Python \
version < 3.8 and importlib-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).
feature
[feature] [environment]
Enhance version_locations parsing to handle paths containing spaces. The new \
configuration option version_path_separator specifies the character to use when \
splitting the version_locations string. The default for new configurations is \
version_path_separator = os, which will use os.pathsep (e.g., ; on Windows).
[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).
[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 and alembic.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 the Boolean and Enum 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 the \
Boolean and Enum datatypes, an existing_type keyword may be passed to \
BatchOperations.drop_constraint as well.
See also Changing the Type of Boolean, Enum and other implicit CHECK datatypes
Including CHECK constraints
bug
[bug] [operations]
Fixed regression due to 803 where the .info and .comment attributes of Table \
would be lost inside of the DropTableOp class, which when “reversed” into a \
CreateTableOp would then have lost these elements. Pull request courtesy Nicolas \
CANIART.
[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 a Computed (i.e. generated) column.
[bug] [commands]
Re-implemented the python-editor dependency as a small internal function to \
avoid the need for external dependencies.
[bug] [postgresql]
Fixed issue where usage of the PostgreSQL postgresql_include option within a \
Operations.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.
1.6.5
Released: May 27, 2021
bug
[bug] [autogenerate]
Fixed issue where dialect-specific keyword arguments within the DropIndex \
operation directive would not render in the autogenerated Python code. As \
support was improved for adding dialect specific arguments to directives as part \
of 803, in particular arguments such as “postgresql_concurrently” which \
apply to the actual create/drop of the index, support was needed for these to \
render even in a drop index operation. Pull request courtesy Jet Zhou.
1.6.4
Released: May 24, 2021
bug
[bug] [op directives] [regression]
Fixed regression caused by just fixed 844 that scaled back the filter for \
unique=True/index=True too far such that these directives no longer worked for \
the op.create_table() op, this has been fixed.
1.6.3
Released: May 21, 2021
bug
[bug] [autogenerate] [regression]
Fixed 1.6-series regression where UniqueConstraint and to a lesser extent Index \
objects would be doubled up in the generated model when the unique=True / \
index=True flags were used.
[bug] [autogenerate]
Fixed a bug where paths defined in post-write hook options would be wrongly \
escaped in non posix environment (Windows).
[bug] [regression] [versioning]
Fixed regression where a revision file that contained its own down revision as a \
dependency would cause an endless loop in the traversal logic.
1.6.2
Released: May 6, 2021
bug
[bug] [regression] [versioning]
Fixed additional regression nearly the same as that of 838 just released in \
1.6.1 but within a slightly different codepath, where “alembic downgrade \
head” (or equivalent) would fail instead of iterating no revisions.
1.6.1
Released: May 6, 2021
bug
[bug] [regression] [versioning]
Fixed regression in new revisioning traversal where “alembic downgrade base” \
would fail if the database itself were clean and unversioned; additionally \
repairs the case where downgrade would fail if attempting to downgrade to the \
current head that is already present.
1.6.0
Released: May 3, 2021
feature
[feature] [autogenerate]
Fix the documentation regarding the default command-line argument position of \
the revision script filename within the post-write hook arguments. Implement a \
REVISION_SCRIPT_FILENAME token, enabling the position to be changed. Switch from \
str.split() to shlex.split() for more robust command-line argument parsing.
[feature]
Implement a .cwd (current working directory) suboption for post-write hooks (of \
type console_scripts). This is useful for tools like pre-commit, which rely on \
the working directory to locate the necessary config files. Add pre-commit as an \
example to the documentation. Minor change: rename some variables from ticket \
819 to improve readability.
bug
[bug] [autogenerate]
Refactored the implementation of MigrateOperation constructs such as \
CreateIndexOp, CreateTableOp, etc. so that they no longer rely upon maintaining \
a persistent version of each schema object internally; instead, the state \
variables of each operation object will be used to produce the corresponding \
construct when the operation is invoked. The rationale is so that environments \
which make use of operation-manipulation schemes such as those those discussed \
in Fine-Grained Autogenerate Generation with Rewriters are better supported, \
allowing end-user code to manipulate the public attributes of these objects \
which will then be expressed in the final output, an example is \
some_create_index_op.kw["postgresql_concurrently"] = True.
Previously, these objects when generated from autogenerate would typically hold \
onto the original, reflected element internally without honoring the other state \
variables of each construct, preventing the public API from working.
[bug] [environment]
Fixed regression caused by the SQLAlchemy 1.4/2.0 compatibility switch where \
calling .rollback() or .commit() explicitly within the \
context.begin_transaction() context manager would cause it to fail when the \
block ended, as it did not expect that the transaction was manually closed.
[bug] [autogenerate]
Improved the rendering of op.add_column() operations when adding multiple \
columns to an existing table, so that the order of these statements matches the \
order in which the columns were declared in the application’s table metadata. \
Previously the added columns were being sorted alphabetically.
[bug] [versioning]
The algorithm used for calculating downgrades/upgrades/iterating revisions has \
been rewritten, to resolve ongoing issues of branches not being handled \
consistently particularly within downgrade operations, as well as for overall \
clarity and maintainability. This change includes that a deprecation warning is \
emitted if an ambiguous command such as “downgrade -1” when multiple heads \
are present is given.
In particular, the change implements a long-requested use case of allowing \
downgrades of a single branch to a branchpoint.
Huge thanks to Simon Bowly for their impressive efforts in successfully tackling \
this very difficult problem.
[bug] [batch] ¶
Added missing batch_op.create_table_comment(), batch_op.drop_table_comment() \
directives to batch ops.
Files: