700d90eb6f
- 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.
Matej Cepl2025-12-10 10:06:40 +00:00
178a1bb78f
- Update to 1.15.2 * 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.
Matej Cepl2025-04-04 10:52:09 +00:00
e4fd8ef792
Accepting request 1255008 from devel:languages:python
Ana Guerrero2025-03-24 12:25:16 +00:00
6020932414
- Update to 1.15.1 * Fixed an issue in the new :pep:621 `pyproject.toml layout that prevented Alembic's template files from being included in the .whl` file in the distribution.
Markéta Machová2025-03-21 13:02:23 +00:00
6a1c2d7825
Accepting request 1240751 from devel:languages:python
Ana Guerrero2025-01-29 15:09:48 +00:00
c6c000eada
- Update to 1.14.1 * 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.
Markéta Machová2025-01-28 10:11:27 +00:00
070ff8df28
Accepting request 1225089 from devel:languages:python
Ana Guerrero2024-11-20 15:59:18 +00:00
7d861e46ab
- update to el_1_14_0: * **[usecase] [runtime]** Added a new hook to the DefaultImplDefaultImpl.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.
Dirk Mueller2024-11-19 12:32:07 +00:00
1758204b1a
Accepting request 1204393 from devel:languages:python
Ana Guerrero2024-09-30 13:34:28 +00:00
5a2f0ae1c0
- 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:
Dirk Mueller2024-09-28 19:20:47 +00:00
151458f6b5
Accepting request 1197961 from home:yeey:branches:devel:languages:python
Dirk Mueller2024-08-31 12:30:43 +00:00
6c014dee6d
Accepting request 1175384 from devel:languages:python
Ana Guerrero2024-05-21 16:34:38 +00:00
0b3663ef98
Accepting request 1174864 from home:mcalabkova:branches:devel:languages:python:pytest
Matej Cepl2024-05-20 18:21:40 +00:00
48db8f25d5
Accepting request 1135249 from devel:languages:python
Ana Guerrero2023-12-28 21:54:29 +00:00
0602180fd7
- 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.
Dirk Mueller2023-12-27 09:37:37 +00:00
8967288842
Accepting request 1133430 from devel:languages:python
Ana Guerrero2023-12-15 20:46:38 +00:00
dc38f212c2
function correctly with upgrade structures that have multiple, 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.
Dirk Mueller2023-12-15 12:24:07 +00:00
0bdc71b604
Accepting request 1133130 from home:pgajdos:python
Markéta Machová2023-12-15 12:18:53 +00:00
2b32ec9ded
Accepting request 1125874 from devel:languages:python
Ana Guerrero2023-11-15 20:06:42 +00:00
1856070e91
- 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. not use semver, nor does its parent project SQLAlchemy;
Dirk Mueller2023-11-14 12:42:00 +00:00
f8c61da28b
- 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.
Dirk Mueller2023-08-13 19:32:51 +00:00
8e2cbab40b
- 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 <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".
Dirk Mueller2023-07-29 21:25:10 +00:00
1b1933f9a8
- 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
Dirk Mueller2023-05-05 22:20:37 +00:00
54e5ab24a2
- 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.
Dirk Mueller2023-02-10 12:37:16 +00:00
8177a78286
- 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 🎫1145 where the string transformations applied to server defaults caused expressions such as `(getdate())` to no longer compare as equivalent on SQL Server, others.
Dirk Mueller2023-01-28 14:31:50 +00:00
9e76909512
- update to 1.9.1: .. 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.
Dirk Mueller2023-01-05 20:35:40 +00:00
a04516353e
Accepting request 1056256 from home:yarunachalam:branches:devel:languages:python
Markéta Machová2023-01-05 19:13:45 +00:00
7330b420a7
- 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.
Dirk Mueller2022-08-01 21:39:51 +00:00
aa5cf3b673
- 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.
Dirk Mueller2022-03-26 20:29:40 +00:00
79c60bbf9c
- 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.
Dirk Mueller2022-02-14 21:38:59 +00:00
7579caac78
- update to 1.7.5: * Adjustments to the test suite to accommodate for error message change in newer SQLAlchemy
Dirk Mueller2021-12-06 17:52:49 +00:00
8f4718df5c
- 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
Dirk Mueller2021-10-17 22:31:09 +00:00
fee531ce11
Accepting request 916927 from home:apersaud:branches:devel:languages:python
Dirk Mueller2021-10-16 09:35:36 +00:00
d575709490
- 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
Dirk Mueller2021-06-06 13:41:51 +00:00
571f67a833
Accepting request 893330 from home:apersaud:branches:devel:languages:python
Matej Cepl2021-05-18 12:24:06 +00:00
d67c63d82e
Accepting request 883477 from devel:languages:python
Richard Brown
2021-04-08 19:31:51 +00:00
0b47322de4
- 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.
Steve Kowalik2021-04-07 05:40:49 +00:00
c3d65a819c
- update to 1.2.1:
Tomáš Chvátal
2019-09-26 07:50:58 +00:00
f02ff6c7c5
- update to 1.2.0: * bugs + Reverted the name change of the “revisions” argument to command.stamp() to “revision” as apparently applications are calling upon this argument as a keyword name. Pull request courtesy Thomas Bechtold. Special translations are also added to the command line interface so that it is still known as “revisions” in the CLI. References: #601 + Removed the “test requirements” from “setup.py test”, as this command now only emits a removal error in any case and these requirements are unused.
Thomas Bechtold2019-09-25 03:30:28 +00:00