.. changelog::
:version: 1.4.0
- :include_notes_from: unreleased
+ :released: February 4, 2020
+
+ .. change::
+ :tags: change
+
+ The internal inspection routines no longer use SQLAlchemy's
+ ``Inspector.from_engine()`` method, which is expected to be deprecated in
+ 1.4. The ``inspect()`` function is now used.
+
+
+ .. change::
+ :tags: bug, autogenerate
+ :tickets: 647
+
+ Adjusted the unique constraint comparison logic in a similar manner as that
+ of :ticket:`421` did for indexes in order to take into account SQLAlchemy's
+ own truncation of long constraint names when a naming convention is in use.
+ Without this step, a name that is truncated by SQLAlchemy based on a unique
+ constraint naming convention or hardcoded name will not compare properly.
+
+
+ .. change::
+ :tags: feature, batch
+ :tickets: 640
+
+ Added new parameters :paramref:`.BatchOperations.add_column.insert_before`,
+ :paramref:`.BatchOperations.add_column.insert_after` which provide for
+ establishing the specific position in which a new column should be placed.
+ Also added :paramref:`.Operations.batch_alter_table.partial_reordering`
+ which allows the complete set of columns to be reordered when the new table
+ is created. Both operations apply only to when batch mode is recreating
+ the whole table using ``recreate="always"``. Thanks to Marcin Szymanski
+ for assistance with the implementation.
+
+ .. change::
+ :tags: usecase, environment
+ :tickets: 648
+
+ Moved the use of the ``__file__`` attribute at the base of the Alembic
+ package into the one place that it is specifically needed, which is when
+ the config attempts to locate the template directory. This helps to allow
+ Alembic to be fully importable in environments that are using Python
+ memory-only import schemes. Pull request courtesy layday.
+
+ .. change::
+ :tags: bug, autogenerate
+ :tickets: 605
+
+ A major rework of the "type comparison" logic is in place which changes the
+ entire approach by which column datatypes are compared. Types are now
+ compared based on the DDL string generated by the metadata type vs. the
+ datatype reflected from the database. This means we compare types based on
+ what would actually render and additionally if elements of the types change
+ like string length, those changes are detected as well. False positives
+ like those generated between SQLAlchemy Boolean and MySQL TINYINT should
+ also be resolved. Thanks very much to Paul Becotte for lots of hard work
+ and patience on this one.
+
+ .. seealso::
+
+ :ref:`autogenerate_detects` - updated comments on type comparison
.. changelog::
:version: 1.3.3
# The short X.Y version.
version = alembic.__version__
# The full version, including alpha/beta/rc tags.
-release = "1.3.3"
-release_date = "January 22, 2020"
+release = "1.4.0"
+release_date = "February 4, 2020"
# The language for content autogenerated by Sphinx. Refer to documentation
+++ /dev/null
-.. change::
- :tags: bug, autogenerate
- :tickets: 605
-
- A major rework of the "type comparison" logic is in place which changes the
- entire approach by which column datatypes are compared. Types are now
- compared based on the DDL string generated by the metadata type vs. the
- datatype reflected from the database. This means we compare types based on
- what would actually render and additionally if elements of the types change
- like string length, those changes are detected as well. False positives
- like those generated between SQLAlchemy Boolean and MySQL TINYINT should
- also be resolved. Thanks very much to Paul Becotte for lots of hard work
- and patience on this one.
-
- .. seealso::
-
- :ref:`autogenerate_detects` - updated comments on type comparison
\ No newline at end of file
+++ /dev/null
-.. change::
- :tags: feature, batch
- :tickets: 640
-
- Added new parameters :paramref:`.BatchOperations.add_column.insert_before`,
- :paramref:`.BatchOperations.add_column.insert_after` which provide for
- establishing the specific position in which a new column should be placed.
- Also added :paramref:`.Operations.batch_alter_table.partial_reordering`
- which allows the complete set of columns to be reordered when the new table
- is created. Both operations apply only to when batch mode is recreating
- the whole table using ``recreate="always"``. Thanks to Marcin Szymanski
- for assistance with the implementation.
+++ /dev/null
-.. change::
- :tags: bug, autogenerate
- :tickets: 647
-
- Adjusted the unique constraint comparison logic in a similar manner as that
- of :ticket:`421` did for indexes in order to take into account SQLAlchemy's
- own truncation of long constraint names when a naming convention is in use.
- Without this step, a name that is truncated by SQLAlchemy based on a unique
- constraint naming convention or hardcoded name will not compare properly.
-
+++ /dev/null
-.. change::
- :tags: usecase, environment
- :tickets: 648
-
- Moved the use of the ``__file__`` attribute at the base of the Alembic
- package into the one place that it is specifically needed, which is when
- the config attempts to locate the template directory. This helps to allow
- Alembic to be fully importable in environments that are using Python
- memory-only import schemes. Pull request courtesy layday.
+++ /dev/null
-.. change::
- :tags: change
-
- The internal inspection routines no longer use SQLAlchemy's
- ``Inspector.from_engine()`` method, which is expected to be deprecated in
- 1.4. The ``inspect()`` function is now used.
-