From f1518bac5529bf6a105872cdc17e6e4fcf090a74 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 18 Jan 2021 15:52:24 -0500 Subject: [PATCH] - 1.5.0 --- docs/build/changelog.rst | 191 ++++++++++++++++++++++++++- docs/build/conf.py | 4 +- docs/build/unreleased/650.rst | 29 ---- docs/build/unreleased/721.rst | 7 - docs/build/unreleased/728.rst | 5 - docs/build/unreleased/730.rst | 11 -- docs/build/unreleased/748.rst | 7 - docs/build/unreleased/753.rst | 12 -- docs/build/unreleased/757.rst | 14 -- docs/build/unreleased/761.rst | 7 - docs/build/unreleased/773.rst | 12 -- docs/build/unreleased/autocommit.rst | 21 --- docs/build/unreleased/clean_up.rst | 53 -------- 13 files changed, 192 insertions(+), 181 deletions(-) delete mode 100644 docs/build/unreleased/650.rst delete mode 100644 docs/build/unreleased/721.rst delete mode 100644 docs/build/unreleased/728.rst delete mode 100644 docs/build/unreleased/730.rst delete mode 100644 docs/build/unreleased/748.rst delete mode 100644 docs/build/unreleased/753.rst delete mode 100644 docs/build/unreleased/757.rst delete mode 100644 docs/build/unreleased/761.rst delete mode 100644 docs/build/unreleased/773.rst delete mode 100644 docs/build/unreleased/autocommit.rst delete mode 100644 docs/build/unreleased/clean_up.rst diff --git a/docs/build/changelog.rst b/docs/build/changelog.rst index 376f0000..c2646783 100644 --- a/docs/build/changelog.rst +++ b/docs/build/changelog.rst @@ -5,7 +5,196 @@ Changelog .. changelog:: :version: 1.5.0 - :include_notes_from: unreleased + :released: January 18, 2021 + + .. change:: + :tags: usecase, operations + :tickets: 730 + + 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. + + .. change:: + :tags: changed, environment + + To accommodate SQLAlchemy 1.4 and 2.0, the migration model now no longer + assumes that the SQLAlchemy Connection will autocommit an individual + operation. This essentially means that for databases that use + non-transactional DDL (pysqlite current driver behavior, MySQL), there is + still a BEGIN/COMMIT block that will surround each individual migration. + Databases that support transactional DDL should continue to have the + same flow, either per migration or per-entire run, depending on the + value of the :paramref:`.Environment.configure.transaction_per_migration` + flag. + + + .. change:: + :tags: changed, environment + + A :class:`.CommandError` is raised if a ``sqlalchemy.engine.Engine`` is + passed to the :meth:`.MigrationContext.configure` method instead of a + ``sqlalchemy.engine.Connection`` object. Previously, this would be a + warning only. + + .. change:: + :tags: bug, operations + :tickets: 753 + + 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``. This accommodates for the change + made in SQLAlchemy issue #5618 which prohibits a ``Column`` from being + associated with multiple ``table()`` objects. This resumes support for + using a ``Column`` inside of an Alembic operation that already refers to a + parent ``table()`` or ``Table`` as well as allows operation objects just + autogenerated to work. + + .. change:: + :tags: feature, autogenerate + :tickets: 650 + + Added new hook :paramref:`.EnvironmentContext.configure.include_name`, + which complements the + :paramref:`.EnvironmentContext.configure.include_object` hook by providing + a means of preventing objects of a certain name from being autogenerated + **before** the SQLAlchemy reflection process takes place, and notably + includes explicit support for passing each schema name when + :paramref:`.EnvironmentContext.configure.include_schemas` is set to True. + This is most important especially for enviroments that make use of + :paramref:`.EnvironmentContext.configure.include_schemas` where schemas are + actually databases (e.g. MySQL) in order to prevent reflection sweeps of + the entire server. + + .. seealso:: + + :ref:`autogenerate_include_hooks` - new documentation section + + .. change:: + :tags: removed, autogenerate + + The long deprecated + :paramref:`.EnvironmentContext.configure.include_symbol` hook is removed. + The :paramref:`.EnvironmentContext.configure.include_object` + and :paramref:`.EnvironmentContext.configure.include_name` + hooks both achieve the goals of this hook. + + + .. change:: + :tags: bug, autogenerate + :tickets: 721 + + Added rendering for the ``Table.prefixes`` element to autogenerate so that + the rendered Python code includes these directives. Pull request courtesy + Rodrigo Ce Moretto. + + .. change:: + :tags: bug, batch + :tickets: 761 + + Added missing "create comment" feature for columns that are altered in + batch migrations. + + + .. change:: + :tags: changed + :tickets: 748 + + Alembic 1.5.0 now supports **Python 2.7 and Python 3.6 and above**, as well + as **SQLAlchemy 1.3.0 and above**. Support is removed for Python 3 + versions prior to 3.6 and SQLAlchemy versions prior to the 1.3 series. + + .. change:: + :tags: bug, batch + :tickets: 773 + + Made an adjustment to the PostgreSQL dialect to allow it to work more + effectively in batch mode, where a datatype like Boolean or non-native Enum + that may have embedded rules to generate CHECK constraints will be more + correctly handled in that these constraints usually will not have been + generated on the PostgreSQL backend; previously it would inadvertently + assume they existed unconditionally in a special PG-only "drop constraint" + step. + + + .. change:: + :tags: feature, versioning + :tickets: 757 + + The revision tree is now checked for cycles and loops between revision + files when the revision environment is loaded up. Scenarios such as a + revision pointing to itself, or a revision that can reach itself via a + loop, are handled and will raise the :class:`.CycleDetected` exception when + the environment is loaded (expressed from the Alembic commandline as a + failure message and nonzero return code). Previously, these situations were + silently ignored up front, and the behavior of revision traversal would + either be silently incorrect, or would produce errors such as + :class:`.RangeNotAncestorError`. Pull request courtesy Koichiro Den. + + + .. change:: + :tags: usecase, commands + + Add ``__main__.py`` file to alembic package to support invocation + with ``python -m alembic``. + + .. change:: + :tags: removed, commands + + Removed deprecated ``--head_only`` option to the ``alembic current`` + command + + .. change:: + :tags: removed, operations + + Removed legacy parameter names from operations, these have been emitting + warnings since version 0.8. In the case that legacy version files have not + yet been updated, these can be modified directly in order to maintain + compatibility: + + * :meth:`.Operations.drop_constraint` - "type" (use "type_") and "name" + (use "constraint_name") + + * :meth:`.Operations.create_primary_key` - "cols" (use "columns") and + "name" (use "constraint_name") + + * :meth:`.Operations.create_unique_constraint` - "name" (use + "constraint_name"), "source" (use "table_name") and "local_cols" (use + "columns") + + * :meth:`.Operations.batch_create_unique_constraint` - "name" (use + "constraint_name") + + * :meth:`.Operations.create_foreign_key` - "name" (use "constraint_name"), + "source" (use "source_table"), "referent" (use "referent_table") + + * :meth:`.Operations.batch_create_foreign_key` - "name" (use + "constraint_name"), "referent" (use "referent_table") + + * :meth:`.Operations.create_check_constraint` - "name" (use + "constraint_name"), "source" (use "table_name") + + * :meth:`.Operations.batch_create_check_constraint` - "name" (use + "constraint_name") + + * :meth:`.Operations.create_index` - "name" (use "index_name") + + * :meth:`.Operations.drop_index` - "name" (use "index_name"), "tablename" + (use "table_name") + + * :meth:`.Operations.batch_drop_index` - "name" (use "index_name"), + + * :meth:`.Operations.create_table` - "name" (use "table_name") + + * :meth:`.Operations.drop_table` - "name" (use "table_name") + + * :meth:`.Operations.alter_column` - "name" (use "new_column_name") + + .. changelog:: :version: 1.4.3 diff --git a/docs/build/conf.py b/docs/build/conf.py index 75d91edc..67fd269b 100644 --- a/docs/build/conf.py +++ b/docs/build/conf.py @@ -85,8 +85,8 @@ # The short X.Y version. version = alembic.__version__ # The full version, including alpha/beta/rc tags. -release = "1.4.3" -release_date = "September 11, 2020" +release = "1.5.0" +release_date = "January 18, 2021" # The language for content autogenerated by Sphinx. Refer to documentation diff --git a/docs/build/unreleased/650.rst b/docs/build/unreleased/650.rst deleted file mode 100644 index 96daa0c2..00000000 --- a/docs/build/unreleased/650.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. change:: - :tags: feature, autogenerate - :tickets: 650 - - Added new hook :paramref:`.EnvironmentContext.configure.include_name`, - which complements the - :paramref:`.EnvironmentContext.configure.include_object` hook by providing - a means of preventing objects of a certain name from being autogenerated - **before** the SQLAlchemy reflection process takes place, and notably - includes explicit support for passing each schema name when - :paramref:`.EnvironmentContext.configure.include_schemas` is set to True. - This is most important especially for enviroments that make use of - :paramref:`.EnvironmentContext.configure.include_schemas` where schemas are - actually databases (e.g. MySQL) in order to prevent reflection sweeps of - the entire server. - - .. seealso:: - - :ref:`autogenerate_include_hooks` - new documentation section - -.. change:: - :tags: removed, autogenerate - - The long deprecated - :paramref:`.EnvironmentContext.configure.include_symbol` hook is removed. - The :paramref:`.EnvironmentContext.configure.include_object` - and :paramref:`.EnvironmentContext.configure.include_name` - hooks both achieve the goals of this hook. - diff --git a/docs/build/unreleased/721.rst b/docs/build/unreleased/721.rst deleted file mode 100644 index 017c5f13..00000000 --- a/docs/build/unreleased/721.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, autogenerate - :tickets: 721 - - Added rendering for the ``Table.prefixes`` element to autogenerate so that - the rendered Python code includes these directives. Pull request courtesy - Rodrigo Ce Moretto. diff --git a/docs/build/unreleased/728.rst b/docs/build/unreleased/728.rst deleted file mode 100644 index b7917436..00000000 --- a/docs/build/unreleased/728.rst +++ /dev/null @@ -1,5 +0,0 @@ -.. change:: - :tags: usecase, commands - - Add ``__main__.py`` file to alembic package to support invocation - with ``python -m alembic``. diff --git a/docs/build/unreleased/730.rst b/docs/build/unreleased/730.rst deleted file mode 100644 index e9b967f4..00000000 --- a/docs/build/unreleased/730.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: usecase, operations - :tickets: 730 - - 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. diff --git a/docs/build/unreleased/748.rst b/docs/build/unreleased/748.rst deleted file mode 100644 index b4ee377c..00000000 --- a/docs/build/unreleased/748.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: changed - :tickets: 748 - - Alembic 1.5.0 now supports **Python 2.7 and Python 3.6 and above**, as well - as **SQLAlchemy 1.3.0 and above**. Support is removed for Python 3 - versions prior to 3.6 and SQLAlchemy versions prior to the 1.3 series. diff --git a/docs/build/unreleased/753.rst b/docs/build/unreleased/753.rst deleted file mode 100644 index 687a8518..00000000 --- a/docs/build/unreleased/753.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, operations - :tickets: 753 - - 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``. This accommodates for the change - made in SQLAlchemy issue #5618 which prohibits a ``Column`` from being - associated with multiple ``table()`` objects. This resumes support for - using a ``Column`` inside of an Alembic operation that already refers to a - parent ``table()`` or ``Table`` as well as allows operation objects just - autogenerated to work. diff --git a/docs/build/unreleased/757.rst b/docs/build/unreleased/757.rst deleted file mode 100644 index 1b6d5300..00000000 --- a/docs/build/unreleased/757.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: feature, versioning - :tickets: 757 - - The revision tree is now checked for cycles and loops between revision - files when the revision environment is loaded up. Scenarios such as a - revision pointing to itself, or a revision that can reach itself via a - loop, are handled and will raise the :class:`.CycleDetected` exception when - the environment is loaded (expressed from the Alembic commandline as a - failure message and nonzero return code). Previously, these situations were - silently ignored up front, and the behavior of revision traversal would - either be silently incorrect, or would produce errors such as - :class:`.RangeNotAncestorError`. Pull request courtesy Koichiro Den. - diff --git a/docs/build/unreleased/761.rst b/docs/build/unreleased/761.rst deleted file mode 100644 index b4cc018e..00000000 --- a/docs/build/unreleased/761.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, batch - :tickets: 761 - - Added missing "create comment" feature for columns that are altered in - batch migrations. - diff --git a/docs/build/unreleased/773.rst b/docs/build/unreleased/773.rst deleted file mode 100644 index b0cfd45f..00000000 --- a/docs/build/unreleased/773.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, batch - :tickets: 773 - - Made an adjustment to the PostgreSQL dialect to allow it to work more - effectively in batch mode, where a datatype like Boolean or non-native Enum - that may have embedded rules to generate CHECK constraints will be more - correctly handled in that these constraints usually will not have been - generated on the PostgreSQL backend; previously it would inadvertently - assume they existed unconditionally in a special PG-only "drop constraint" - step. - diff --git a/docs/build/unreleased/autocommit.rst b/docs/build/unreleased/autocommit.rst deleted file mode 100644 index 61ba5be9..00000000 --- a/docs/build/unreleased/autocommit.rst +++ /dev/null @@ -1,21 +0,0 @@ -.. change:: - :tags: changed, environment - - To accommodate SQLAlchemy 1.4 and 2.0, the migration model now no longer - assumes that the SQLAlchemy Connection will autocommit an individual - operation. This essentially means that for databases that use - non-transactional DDL (pysqlite current driver behavior, MySQL), there is - still a BEGIN/COMMIT block that will surround each individual migration. - Databases that support transactional DDL should continue to have the - same flow, either per migration or per-entire run, depending on the - value of the :paramref:`.Environment.configure.transaction_per_migration` - flag. - - -.. change:: - :tags: changed, environment - - A :class:`.CommandError` is raised if a ``sqlalchemy.engine.Engine`` is - passed to the :meth:`.MigrationContext.configure` method instead of a - ``sqlalchemy.engine.Connection`` object. Previously, this would be a - warning only. \ No newline at end of file diff --git a/docs/build/unreleased/clean_up.rst b/docs/build/unreleased/clean_up.rst deleted file mode 100644 index ae35f95c..00000000 --- a/docs/build/unreleased/clean_up.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. change:: - :tags: removed, commands - - Removed deprecated ``--head_only`` option to the ``alembic current`` - command - -.. change:: - :tags: removed, operations - - Removed legacy parameter names from operations, these have been emitting - warnings since version 0.8. In the case that legacy version files have not - yet been updated, these can be modified directly in order to maintain - compatibility: - - * :meth:`.Operations.drop_constraint` - "type" (use "type_") and "name" - (use "constraint_name") - - * :meth:`.Operations.create_primary_key` - "cols" (use "columns") and - "name" (use "constraint_name") - - * :meth:`.Operations.create_unique_constraint` - "name" (use - "constraint_name"), "source" (use "table_name") and "local_cols" (use - "columns") - - * :meth:`.Operations.batch_create_unique_constraint` - "name" (use - "constraint_name") - - * :meth:`.Operations.create_foreign_key` - "name" (use "constraint_name"), - "source" (use "source_table"), "referent" (use "referent_table") - - * :meth:`.Operations.batch_create_foreign_key` - "name" (use - "constraint_name"), "referent" (use "referent_table") - - * :meth:`.Operations.create_check_constraint` - "name" (use - "constraint_name"), "source" (use "table_name") - - * :meth:`.Operations.batch_create_check_constraint` - "name" (use - "constraint_name") - - * :meth:`.Operations.create_index` - "name" (use "index_name") - - * :meth:`.Operations.drop_index` - "name" (use "index_name"), "tablename" - (use "table_name") - - * :meth:`.Operations.batch_drop_index` - "name" (use "index_name"), - - * :meth:`.Operations.create_table` - "name" (use "table_name") - - * :meth:`.Operations.drop_table` - "name" (use "table_name") - - * :meth:`.Operations.alter_column` - "name" (use "new_column_name") - -