|
|
|
|
Changelog for python312-alembic-1.13.1-2.1.noarch.rpm :
* Fri May 17 2024 Markéta Machová - Add pytest8.patch to fix the tests with the new pytest * Wed Dec 27 2023 Dirk Müller - 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. * Thu Dec 14 2023 Petr Gajdos - 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 :ticket:`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. * Tue Nov 14 2023 Dirk Müller - update to 1.12.1: * Fixed regression caused by :ticket:`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. * Mon Sep 25 2023 Matej Cepl - Clean up the SPEC file * Mon Sep 25 2023 Ondřej Súkup - 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`. * Sun Aug 13 2023 Dirk Müller - update to 1.11.2: * Added typing to the default script mako templates. * Added support in autogenerate for NULLS NOT DISTINCT in * the PostgreSQL dialect. * Fixed format string logged when running a post write hook * Added parameters if_exists and if_not_exists for index operations. * Sat Jul 29 2023 Dirk Müller - update to 1.11.1: * 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 ` in the documentation), * :ticket:`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\". * Correctly pass previously ignored arguments ``insert_before`` and ``insert_after`` in ``batch_alter_column`` * Argument signatures of Alembic operations now enforce keyword-only arguments as passed as keyword and not positionally, such as Operations.create_table.schema .Operations.add_column.type_, etc. * Fix autogenerate issue with PostgreSQL :class:`.ExcludeConstraint` that included sqlalchemy functions. The function text was previously rendered as a plain string without surrounding with ``text()``. * Fixed regression caused by :ticket:`1166` released in version 1.10.0 which caused MySQL unique constraints with multiple columns to not compare correctly within autogenerate, due to different sorting rules on unique constraints vs. indexes, which in MySQL are shared constructs. * Repaired the return signatures for :class:`.Operations` that mostly return ``None``, and were erroneously referring to ``Optional[Table]`` in many cases. * Modified the autogenerate implementation for comparing \"server default\" values from user-defined metadata to not apply any quoting to the value before comparing it to the server-reported default, except for within dialect-specific routines as needed. This change will affect the format of the server default as passed to the :paramref:`.EnvironmentContext.configure.compare_server_defau lt` hook, as well as for third party dialects that implement a custom ``compare_server_default`` hook in their alembic impl, to be passed \"as is\" and not including additional quoting. Custom implementations which rely on this quoting should adjust their approach based on observed formatting. * allow running async functions in the ``upgrade`` or ``downgrade`` migration function when running alembic using an async dialect. This function will receive as first argument an :class:`~sqlalchemy.ext.asyncio.AsyncConnection` sharing the transaction used in the migration context. * Tue Jun 13 2023 Dirk Müller - tag sle15 build for new python * Fri May 05 2023 Dirk Müller - 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 generate warnings when SQLAlchemy 1.x installations are in use. Note that reflection of SQLite expression-based indexes continues to not yet be supported under SQLAlchemy 2.0, even though PostgreSQL expression-based indexes have now been implemented. * Properly escape constraint name on SQL Server when dropping a column while specifying ``mssql_drop_default=True`` or ``mssql_drop_check=True`` or ``mssql_drop_foreign_key=True``. * Fri Feb 10 2023 Dirk Müller - update to 1.9.3: * Fixed issue where rendering of user-defined types that then went onto use the .with_variant() method would fail to render, if using SQLAlchemy 2.0\'s version of variants. * Sat Jan 28 2023 Dirk Müller - update to 1.9.2: * Fixed typing definitions for :meth:`.EnvironmentContext.get_x_argument`. Typing stubs are now generated for overloaded proxied methods such as * Fixed regression caused by :ticket:`1145` where the string transformations applied to server defaults caused expressions such as ``(getdate())`` to no longer compare as equivalent on SQL Server, others. * Thu Jan 05 2023 Dirk Müller - update to 1.9.1: .. change:: :tickets: 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. * Thu Jan 05 2023 Yogalakshmi Arunachalam - 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 * Mon Aug 01 2022 Dirk Müller - 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. * Sat Jun 04 2022 Arun Persaud - update to version 1.8.0: * changed + [changed] [installation] Alembic 1.8 now supports Python 3.7 and above. References: #1025 + [changed] [environment] The “Pylons” environment template has been removed as of Alembic 1.8. This template was based on the very old pre-Pyramid Pylons web framework which has been long superseded by Pyramid. References: #987 * feature + [feature] [typing] PEP 484 typing annotations have been added to the env.py and revision template files within migration templates. Pull request by Nikita Sobolev. References: #764 * usecase + [usecase] [operations] The op.drop_table() operation directive will now trigger the before_drop() and after_drop() DDL event hooks at the table level, which is similar to how the before_create() and after_create() hooks are triggered by the op.create_table() directive. Note that as op.drop_table() accepts only a table name and optional schema name, the Table object received by the event will not have any information within it other than the table name and schema name. References: #1037 + [usecase] [commands] Added new token epoch to the file_template option, which will populate the integer epoch as determined by int(create_date.timestamp()). Pull request courtesy Caio Carvalho. References: #1027 * bug + [bug] [revisioning] Fixed issue where a downgrade using a relative revision would fail in case of multiple branches with a single effectively head due to interdependencies between revisions. References: #1026 + [bug] [batch] Fixed issue in batch mode where CREATE INDEX would not use a new column name in the case of a column rename. References: #1034 * Sat Mar 26 2022 Dirk Müller - update to 1.7.7: * Fixed issue where using :meth:`.Operations.create_table` in conjunction with a :class:`.CheckConstraint` that referred to table-bound :class:`.Column` objects rather than string expressions would be added to the parent table potentially multiple times, resulting in an incorrect DDL sequence. Pull request courtesy Nicolas CANIART. * The ``logging.fileConfig()`` line in ``env.py`` templates, which is used to setup Python logging for the migration run, is now conditional on :attr:`.Config.config_file_name` not being ``None``. Otherwise, the line is skipped as there is no default logging configuration present. * Fixed bug where an :meth:`.Operations.alter_column` operation would change a \"NOT NULL\" column to \"NULL\" by emitting an ALTER COLUMN statement that did not specify \"NOT NULL\". (In the absence of \"NOT NULL\" T-SQL was implicitly assuming \"NULL\"). An :meth:`.Operations.alter_column` operation that specifies :paramref:`.Operations.alter_column.type` should also specify include either :paramref:`.Operations.alter_column.nullable` or :paramref:`.Operations.alter_column.existing_nullable` to inform Alembic as to whether the emitted DDL should include \"NULL\" or \"NOT NULL\"; a warning is now emitted if this is missing under this scenario. * Mon Feb 14 2022 Dirk Müller - update to 1.7.6: * Add a new command alembic ensure_version, which will ensure that the Alembic version table is present in the target database, but does not alter its contents. * Fixed regression where usage of a with_variant() datatype in conjunction with the existing_type option of op.alter_column() under batch mode would lead to an internal exception. * Implemented support for recognizing and rendering SQLAlchemy “variant” types going forward into SQLAlchemy 2.0, where the architecture of “variant” datatypes will be changing. * Added a rule to the MySQL impl so that the translation between JSON / LONGTEXT is accommodated by autogenerate, treating LONGTEXT from the server as equivalent to an existing JSON in the model. * Removed a warning raised by SQLAlchemy when dropping constraints on MSSQL regarding statement caching. * Mon Dec 06 2021 Dirk Müller - update to 1.7.5: * Adjustments to the test suite to accommodate for error message change in newer SQLAlchemy * Sat Nov 06 2021 Ben Greiner - Update requirements- Remove unused python-alembic-rpmlintrc * Sun Oct 17 2021 Dirk Müller - update to 1.7.4: * Fixed a regression that prevented the use of post write hooks on python version lower than 3.9 * Added missing attributes from context stubs. * 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 * Sun Sep 05 2021 Arun Persaud - specfile: * skip python 2 builds * require importlib-resources- update to version 1.7.1: * 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. * Fixed issue in generated .pyi files where default values for \"Optional\" arguments were missing, thereby causing mypy to consider them as required. * Fixed regression in batch mode due to :ticket:`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.- changes from version 1.7.0: * Fixed regression due to :ticket:`803` where the \".info\" and \".comment\" attributes of \"Table\" would be lost inside of the :class:`.DropTableOp` class, which when \"reversed\" into a :class:`.CreateTableOp` would then have lost these elements. Pull request courtesy Nicolas CANIART. * 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). * Alembic 1.7 now supports Python 3.6 and above; support for prior versions including Python 2.7 has been dropped. * 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. * 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. * Re-implemented the \"python-editor\" dependency as a small internal function to avoid the need for external dependencies. * 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. * 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). * 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) `_. * Fixed issue where usage of the PostgreSQL \"postgresql_include\" option within a :meth:`.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 :ticket:`513`. Pull request courtesy Steven Bronson. * 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. * Sun Jun 06 2021 Dirk Müller - update to 1.6.5: * 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 m * Fri May 14 2021 Arun Persaud - update to version 1.6.2: * 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.- changes from version 1.6.1: * 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.- changes from version 1.6.0: * 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. * Wed Apr 07 2021 Steve Kowalik - Update to 1.5.8: * Fixed regression caused by SQLAlchemy 1.4 where the \"alembic current\" command would fail due to changes in the ``URL`` object. * Add async template to Alembic to bootstrap environments that use async DBAPI. Updated the cookbook to include a migration guide on how to adapt an existing enviroment for use with DBAPI drivers. * Fixed bug in versioning model where a downgrade across a revision with a dependency on another branch, yet an ancestor is also dependent on that branch, would produce an erroneous state in the alembic_version table, making upgrades impossible without manually repairing the table. * Changed the default ordering of \"CREATE\" and \"DROP\" statements indexes and unique constraints within the autogenerate process, so that for example in an upgrade() operation, a particular index or constraint that is to be replaced such as for a casing convention change will not produce any naming conflicts. * Fixed issue where autogenerate rendering of ``op.alter_column()`` would fail to include MySQL ``existing_nullable=False`` if the column were part of a primary key constraint within the table metadata. * Added support for rendering of \"identity\" elements on :class:`.Column` objects, supported in SQLAlchemy via the :class:`.Identity` element introduced in version 1.4. * Adding columns with identity is supported on PostgreSQL, MSSQL and Oracle. Changing the identity options or removing it is supported only on PostgreSQL and Oracle. * To accommodate SQLAlchemy 1.4 and 2.0, the migration model now no longer assumes that the SQLAlchemy Connection will autocommit an individual operation. * Modified the ``add_column()`` operation such that the ``Column`` object in use is shallow copied to a new instance if that ``Column`` is already attached to a ``table()`` or ``Table``. * Added rendering for the ``Table.prefixes`` element to autogenerate so that the rendered Python code includes these directives. * Alembic 1.5.0 now supports * *Python 2.7 and Python 3.6 and above * *, as well as * *SQLAlchemy 1.3.0 and above * *. * Add ``__main__.py`` file to alembic package to support invocation with ``python -m alembic``. * Removed deprecated ``--head_only`` option to the ``alembic current`` command- Drop pytest_depr_from_parent.patch, pytest plugin no longer used.
|
|
|