Forwarded request #1321860 from yeey
- Update to 1.17.2
* [feature] [operations] Added Operations.implementation_for.replace parameter to
Operations.implementation_for(), allowing replacement of existing
operation implementations. This allows for existing operations such as
CreateTableOp to be extended directly.
* [bug] [mssql] Fixed issue in SQL Server dialect where the DROP that's automatically
emitted for existing default constraints during an ALTER COLUMN needs to
take place before not just the modification of the column's default, but
also before the column's type is changed.
OBS-URL: https://build.opensuse.org/request/show/1321929
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=88
* [feature] [operations] Added Operations.implementation_for.replace parameter to
Operations.implementation_for(), allowing replacement of existing
operation implementations. This allows for existing operations such as
CreateTableOp to be extended directly.
* [bug] [mssql] Fixed issue in SQL Server dialect where the DROP that's automatically
emitted for existing default constraints during an ALTER COLUMN needs to
take place before not just the modification of the column's default, but
also before the column's type is changed.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=178
* Fixed issue where the "modified_name" of :class:`.AlterColumnOp` would not
be considered when rendering op directives for autogenerate. While
autogenerate cannot detect changes in column name, this would nonetheless
impact approaches that made use of this attribute in rewriter recipes. Pull
request courtesy lenvk.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=172
* Modified SQLite’s dialect to render “ALTER TABLE <t> RENAME COLUMN”
when Operations.alter_column() is used with a straight rename,
supporting SQLite’s recently added column rename feature.
* Added tzdata to tz extras, which is required on some platforms
such as Windows. Pull request courtesy Danipulok.
* Fixed bug where autogen render of a “variant” type would fail to
catch the variants if the leading type were a dialect-specific type,
rather than a generic type.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=168
* **[usecase] [runtime]** Added a new hook to the
`DefaultImpl` `DefaultImpl.version_table_impl()`. This allows
third party dialects to define the exact structure of the
alembic_version table, to include use cases where the table
requires special directives and/or additional columns so that
it may function correctly on a particular backend.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=166
- update to 1.13.3:
* Render `if_exists` and `if_not_exists` parameters in
`CreateTableOp`, `CreateIndexOp`, `DropTableOp` and
`DropIndexOp` in an autogenerate context.
* Enhance `version_locations` parsing to handle paths containing
newlines.
* Added support for `Operations.create_table.if_not_exists` and
`Operations.drop_table.if_exists`, adding similar
functionality to render IF [NOT] EXISTS for table operations
in a similar way as with indexes.
- update to 1.13.2:
OBS-URL: https://build.opensuse.org/request/show/1204393
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=81
* Render `if_exists` and `if_not_exists` parameters in
`CreateTableOp`, `CreateIndexOp`, `DropTableOp` and
`DropIndexOp` in an autogenerate context.
* Enhance `version_locations` parsing to handle paths containing
newlines.
* Added support for `Operations.create_table.if_not_exists` and
`Operations.drop_table.if_exists`, adding similar
functionality to render IF [NOT] EXISTS for table operations
in a similar way as with indexes.
- update to 1.13.2:
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=164
- update to 1.31.2:
* Improve computed column compare function to support multi-line
expressions. Pull request courtesy of Georg Wicke-Arndt.
* Fixed bug in alembic command stdout where long messages were
not properly wrapping at the terminal width. Pull request
courtesy Saif Hakim.
* Fixed internal issue where Alembic would call
connection.execute() sending an empty tuple to indicate
“no params”. In SQLAlchemy 2.1 this case will be deprecated as
“empty sequence” is ambiguous as to its intent.
* Fixes to support pytest 8.1 for the test suite.
* Fixed the detection of serial column in autogenerate with
tables not under default schema on PostgreSQL.
- Drop pytest8.patch as it has merged upstream and included
in the 1.31.2 release.
OBS-URL: https://build.opensuse.org/request/show/1197961
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=162
- update to 1.13.1:
* Fixed :class:`.Rewriter` so that more than two instances
could be chained together correctly, also allowing multiple
``process_revision_directives`` callables to be chained.
* Fixed issue where the method
:meth:`.EnvironmentContext.get_x_argument` using the
:paramref:`.EnvironmentContext.get_x_argument.as_dictionary`
parameter would fail if an argument key were passed on the
command line as a name alone, that is, without an equal sign
``=`` or a value. Behavior is repaired where this condition is
detected and will return a blank string for the given key,
consistent with the behavior where the ``=`` sign is
present and no value.
* Fixed issue where the "unique" flag of an ``Index`` would not
be maintained when generating downgrade migrations.
* Fixed bug in versioning model where a downgrade across a
revision with two down revisions with one down revision
depending on the other, would produce an erroneous state in
the alembic_version table, making upgrades impossible
without manually repairing the table.
* Updated pep-484 typing to pass mypy "strict" mode, however
including per-module qualifications for specific typing
elements not yet complete.
* This allows us to catch specific typing issues that have been
ongoing such as import symbols not properly exported.
OBS-URL: https://build.opensuse.org/request/show/1135249
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=78
* Fixed :class:`.Rewriter` so that more than two instances
could be chained together correctly, also allowing multiple
``process_revision_directives`` callables to be chained.
* Fixed issue where the method
:meth:`.EnvironmentContext.get_x_argument` using the
:paramref:`.EnvironmentContext.get_x_argument.as_dictionary`
parameter would fail if an argument key were passed on the
command line as a name alone, that is, without an equal sign
``=`` or a value. Behavior is repaired where this condition is
detected and will return a blank string for the given key,
consistent with the behavior where the ``=`` sign is
present and no value.
* Fixed issue where the "unique" flag of an ``Index`` would not
be maintained when generating downgrade migrations.
* Fixed bug in versioning model where a downgrade across a
revision with two down revisions with one down revision
depending on the other, would produce an erroneous state in
the alembic_version table, making upgrades impossible
without manually repairing the table.
* Updated pep-484 typing to pass mypy "strict" mode, however
including per-module qualifications for specific typing
elements not yet complete.
* This allows us to catch specific typing issues that have been
ongoing such as import symbols not properly exported.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=158
- update to 1.13.0:
* Fixed issue where the ``alembic check`` command did not
function correctly with upgrade structures that have multiple,
top-level elements, as are generated from the "multi-env"
environment template.
* Updated logic introduced in 🎫`151` to allow
``if_exists`` and ``if_not_exists`` on index operations also
on SQLAlchemy 1.4 series. Previously this feature was
mistakenly requiring the 2.0 series.
* Replaced ``python-dateutil`` with the standard library module
zoneinfo.
* Alembic 1.13 now supports Python 3.8 and above.
* Fixed autogenerate issue where ``create_table_comment()`` and
``drop_table_comment()`` rendering in a batch table modify
would include the "table" and "schema" arguments, which are
not accepted in batch as these are already part of the top
level block.
* Additional fixes to PostgreSQL expression index compare
feature. The compare now correctly accommodates casts and
differences in spacing.
* Added detection logic for operation clauses inside the
expression, skipping the compare of these expressions.
* To accommodate these changes the logic for the comparison of
the indexes and unique constraints was moved to the dialect
implementation, allowing greater flexibility.
OBS-URL: https://build.opensuse.org/request/show/1133430
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=77
top-level elements, as are generated from the "multi-env"
environment template.
``if_exists`` and ``if_not_exists`` on index operations also
on SQLAlchemy 1.4 series. Previously this feature was
mistakenly requiring the 2.0 series.
zoneinfo.
``drop_table_comment()`` rendering in a batch table modify
would include the "table" and "schema" arguments, which are
not accepted in batch as these are already part of the top
level block.
feature. The compare now correctly accommodates casts and
differences in spacing.
expression, skipping the compare of these expressions.
the indexes and unique constraints was moved to the dialect
implementation, allowing greater flexibility.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=156
- update to 1.12.1:
* Fixed regression caused by 🎫`879` released in 1.7.0
where the ".info" dictionary of ``Table`` would not render in
autogenerate create table statements.
This can be useful for custom create table DDL rendering
schemes so it is restored.
* Improved typing in the
:paramref:`.EnvironmentContext.configure.process_revision_dir
ectives` callable to better indicate that the passed-in type is
:class:`.MigrationScript`, not the :class:`.MigrationOperation`
base class, and added typing to the example at
:ref:`cookbook_no_empty_migrations` to illustrate.
* Repaired :class:`.ExecuteSQLOp` so that it can participate in
"diff" operations; while this object is typically not present
in a reflected operation stream, custom hooks may be adding
this construct where it needs to have the correct
``to_diff_tuple()`` method.
* Improved the ``op.execute()`` method to correctly accept the
* ``Executable`` type that is the same which is used in
SQLAlchemy ``Connection.execute()``.
* Improve typing of the revision parameter in various command
functions.
* Fixed autogen render issue where expressions inside of
indexes for PG need to be double-parenthesized, meaning a
single parens must be present within the generated ``text()``
construct.
* Alembic now accommodates for Sequence and Identity that
support dialect kwargs.
This is a change that will be added to SQLAlchemy v2.1.
OBS-URL: https://build.opensuse.org/request/show/1125874
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=76
* Fixed regression caused by 🎫`879` released in 1.7.0
where the ".info" dictionary of ``Table`` would not render in
autogenerate create table statements.
This can be useful for custom create table DDL rendering
schemes so it is restored.
* Improved typing in the
:paramref:`.EnvironmentContext.configure.process_revision_dir
ectives` callable to better indicate that the passed-in type is
:class:`.MigrationScript`, not the :class:`.MigrationOperation`
base class, and added typing to the example at
:ref:`cookbook_no_empty_migrations` to illustrate.
* Repaired :class:`.ExecuteSQLOp` so that it can participate in
"diff" operations; while this object is typically not present
in a reflected operation stream, custom hooks may be adding
this construct where it needs to have the correct
``to_diff_tuple()`` method.
* Improved the ``op.execute()`` method to correctly accept the
* ``Executable`` type that is the same which is used in
SQLAlchemy ``Connection.execute()``.
* Improve typing of the revision parameter in various command
functions.
* Fixed autogen render issue where expressions inside of
indexes for PG need to be double-parenthesized, meaning a
single parens must be present within the generated ``text()``
construct.
* Alembic now accommodates for Sequence and Identity that
support dialect kwargs.
This is a change that will be added to SQLAlchemy v2.1.
not use semver, nor does its parent project SQLAlchemy;
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=153
- Clean up the SPEC file
- update to 1.12.0
* Added new feature to the "code formatter" function which allows standalone
executable tools to be run against code, without going through the Python
interpreter. Known as the `exec` runner, it complements the existing
`console_scripts` runner by allowing non-Python tools such as `ruff` to
be used.
* Change the default value of `.EnvironmentContext.configure.compare_type` to `True`.
As Alembic's autogenerate for types was dramatically improved in
version 1.4 released in 2020, the type comparison feature is now much
more reliable so is now enabled by default.
* Fixed issue where the `ForeignKeyConstraint.match` parameter would not be
rendered in autogenerated migrations.
* Fixed issue where the `revision_environment` directive in `alembic.ini`
was ignored by the `alembic merge` command, leading to issues when other
configurational elements depend upon `env.py` being invoked within the
command.
* Added support for `op.drop_constraint()` to support PostgreSQL
`ExcludeConstraint` objects, as well as other constraint-like objects
that may be present in third party dialects, by resolving the `type_`
parameter to be `None` for this case. Autogenerate has also been
enhanced to exclude the `type_` parameter from rendering within this
command when `type_` is `None`.
OBS-URL: https://build.opensuse.org/request/show/1113553
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=75
- update to 1.12.0
* Added new feature to the "code formatter" function which allows standalone
executable tools to be run against code, without going through the Python
interpreter. Known as the `exec` runner, it complements the existing
`console_scripts` runner by allowing non-Python tools such as `ruff` to
be used.
* Change the default value of `.EnvironmentContext.configure.compare_type` to `True`.
As Alembic's autogenerate for types was dramatically improved in
version 1.4 released in 2020, the type comparison feature is now much
more reliable so is now enabled by default.
* Fixed issue where the `ForeignKeyConstraint.match` parameter would not be
rendered in autogenerated migrations.
* Fixed issue where the `revision_environment` directive in `alembic.ini`
was ignored by the `alembic merge` command, leading to issues when other
configurational elements depend upon `env.py` being invoked within the
command.
* Added support for `op.drop_constraint()` to support PostgreSQL
`ExcludeConstraint` objects, as well as other constraint-like objects
that may be present in third party dialects, by resolving the `type_`
parameter to be `None` for this case. Autogenerate has also been
enhanced to exclude the `type_` parameter from rendering within this
command when `type_` is `None`.
OBS-URL: https://build.opensuse.org/request/show/1113500
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=150
* As Alembic 1.11.0 is considered a major release (Alembic does
not use semver, nor does its parent project SQLAlchemy;
this has been `clarified <versioning_scheme>` in the documentation),
* 🎫`1130` modified calling signatures for most
operations to consider all optional keyword parameters to
be keyword-only arguments, to match what was always documented
and generated by autogenerate. However, two of these
changes were identified as possibly problematic without a
more formal deprecation warning being emitted which were the
``table_name`` parameter to :meth:`.Operations.drop_index`,
which was generated positionally by autogenerate prior to
version 0.6.3 released in 2014, and
``type_`` in :meth:`.Operations.drop_constraint` and
:meth:`.BatchOperations.drop_constraint`, which was
documented positionally in one example in the batch documentation.
* Fixed typing use of :class:`~sqlalchemy.schema.Column` and
other generic SQLAlchemy classes.
* Restored the output type of :meth:`.Config.get_section` to
include ``Dict[str, str]`` as a potential return type, which
had been changed to immutable ``Mapping[str, str]``.
When a section is returned and the default is not used,
a mutable dictionary is returned.
* Added placeholder classes for :class:`~.sqla.Computed` and
* :class:`~.sqla.Identity` when older 1.x SQLAlchemy versions
are in use, namely prior to SQLAlchemy 1.3.11 when the
:class:`~.sqla.Computed` construct was introduced.
Previously these were set to None, however this
could cause issues with certain codepaths that were using
``isinstance()`` such as one within "batch mode".
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=146
- update to 1.10.4:
* Added support for autogenerate comparison of indexes on
PostgreSQL which include SQL sort option, such as
``ASC`` or ``NULLS FIRST``.
* Fixed various typing issues observed with pyright, including
issues involving the combination of :class:`.Function` and
:meth:`.MigrationContext.begin_transaction`.
* Fixed error raised by alembic when running autogenerate after
removing a function based index.
* Fixed regression where Alembic would not run with older
SQLAlchemy 1.3 versions prior to 1.3.24 due to a
missing symbol. Workarounds have been applied for older
1.3 versions.
* Fixed issue regarding PostgreSQL :class:`.ExcludeConstraint`,
where constraint elements which made use of :func:`.literal_column`
could not be rendered for autogenerate. Additionally, using SQLAlchemy
2.0.5 or greater, :func:`.text()` constructs are also supported within
PostgreSQL :class:`.ExcludeConstraint` objects for autogenerate render.
* Fixed issue in index detection where autogenerate change
detection would consider indexes with the same columns but with
different order as equal, while in general they are not equivalent
in how a database will use them.
* Recursive traversal of revision files in a particular
revision directory is now supported, by indicating
``recursive_version_locations = true`` in alembic.ini.
* Fixed issue where indexes on SQLite which include SQL
expressions would not compare correctly, generating false
positives under autogenerate. These indexes are now skipped,
generating a warning, in the same way that
expression-based indexes on PostgreSQL are skipped and
OBS-URL: https://build.opensuse.org/request/show/1085181
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=71
* Added support for autogenerate comparison of indexes on
PostgreSQL which include SQL sort option, such as
``ASC`` or ``NULLS FIRST``.
* Fixed various typing issues observed with pyright, including
issues involving the combination of :class:`.Function` and
:meth:`.MigrationContext.begin_transaction`.
* Fixed error raised by alembic when running autogenerate after
removing a function based index.
* Fixed regression where Alembic would not run with older
SQLAlchemy 1.3 versions prior to 1.3.24 due to a
missing symbol. Workarounds have been applied for older
1.3 versions.
* Fixed issue regarding PostgreSQL :class:`.ExcludeConstraint`,
where constraint elements which made use of :func:`.literal_column`
could not be rendered for autogenerate. Additionally, using SQLAlchemy
2.0.5 or greater, :func:`.text()` constructs are also supported within
PostgreSQL :class:`.ExcludeConstraint` objects for autogenerate render.
* Fixed issue in index detection where autogenerate change
detection would consider indexes with the same columns but with
different order as equal, while in general they are not equivalent
in how a database will use them.
* Recursive traversal of revision files in a particular
revision directory is now supported, by indicating
``recursive_version_locations = true`` in alembic.ini.
* Fixed issue where indexes on SQLite which include SQL
expressions would not compare correctly, generating false
positives under autogenerate. These indexes are now skipped,
generating a warning, in the same way that
expression-based indexes on PostgreSQL are skipped and
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=142
* Fixed typing definitions for :meth:`.EnvironmentContext.get_x_argument`.
Typing stubs are now generated for overloaded proxied methods such as
* Fixed regression caused by 🎫`1145` where the string transformations
applied to server defaults caused expressions such as ``(getdate())`` to no
longer compare as equivalent on SQL Server, others.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=138
.. change::
🎟️ 1145
Fixed issue where server default compare would not work for string defaults
that contained backslashes, due to mis-rendering of these values when
comparing their contents.
.. change::
:tags: bug, oracle
Implemented basic server default comparison for the Oracle backend;
previously, Oracle's formatting of reflected defaults prevented any
matches from occurring.
.. change::
:tags: bug, sqlite
Adjusted SQLite's compare server default implementation to better handle
defaults with or without parens around them, from both the reflected and
the local metadata side.
.. change::
:tags: bug, mssql
Adjusted SQL Server's compare server default implementation to better
handle defaults with or without parens around them, from both the reflected
and the local metadata side.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=135
- Update to 1.9.0:
feature
* Added new Alembic command alembic check. This performs the widely requested feature of running an “autogenerate” comparison
between the current database and the MetaData that’s currently set up for autogenerate, returning an error code if the two do not match,
based on current autogenerate settings. Pull request courtesy Nathan Louie.
See also Running Alembic Check to test for new upgrade operations
References: #724
bug
* Fixed issue in tox.ini file where changes in the tox 4.0 series to the format of “passenv” caused tox to not function correctly,
in particular raising an error as of tox 4.0.6.
* Fixed typing issue where revision.process_revision_directives was not fully typed; additionally ensured all Callable and Dict arguments
to EnvironmentContext.configure() include parameters in the typing declaration.
Additionally updated the codebase for Mypy 0.990 compliance.
References: #1110
OBS-URL: https://build.opensuse.org/request/show/1056256
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=134
- update to 1.8.1:
* Fixed bug where the SQLite implementation of
:meth:`.Operations.rename_table` would render an explicit schema name for
both the old and new table name, which while is the standard ALTER syntax,
is not accepted by SQLite's syntax which doesn't support a rename across
schemas. In particular, the syntax issue would prevent batch mode from
working for SQLite databases that made use of attached databases (which are
treated as "schemas" in SQLAlchemy).
* Added an error raise for the condition where
:meth:`.Operations.batch_alter_table` is used in ``--sql`` mode, where the
operation requires table reflection, as is the case when running against
SQLite without giving it a fixed ``Table`` object. Previously the operation
would fail with an internal error. To get a "move and copy" batch
operation as a SQL script without connecting to a database,
a ``Table`` object should be passed to the
:paramref:`.Operations.batch_alter_table.copy_from` parameter so that
reflection may be skipped.
OBS-URL: https://build.opensuse.org/request/show/992110
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-alembic?expand=0&rev=66
* Fixed bug where the SQLite implementation of
:meth:`.Operations.rename_table` would render an explicit schema name for
both the old and new table name, which while is the standard ALTER syntax,
is not accepted by SQLite's syntax which doesn't support a rename across
schemas. In particular, the syntax issue would prevent batch mode from
working for SQLite databases that made use of attached databases (which are
treated as "schemas" in SQLAlchemy).
* Added an error raise for the condition where
:meth:`.Operations.batch_alter_table` is used in ``--sql`` mode, where the
operation requires table reflection, as is the case when running against
SQLite without giving it a fixed ``Table`` object. Previously the operation
would fail with an internal error. To get a "move and copy" batch
operation as a SQL script without connecting to a database,
a ``Table`` object should be passed to the
:paramref:`.Operations.batch_alter_table.copy_from` parameter so that
reflection may be skipped.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-alembic?expand=0&rev=132