.. changelog::
:version: 1.7.0
- :include_notes_from: unreleased
+ :released: August 30, 2021
+
+ .. change::
+ :tags: bug, operations
+ :tickets: 879
+
+ 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.
+
+
+ .. change::
+ :tags: feature, environment
+ :tickets: 842
+
+ 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).
+
+ .. change::
+ :tags: installation, changed
+
+ Alembic 1.7 now supports Python 3.6 and above; support for prior versions
+ including Python 2.7 has been dropped.
+
+ .. change::
+ :tags: bug, sqlite, batch
+ :tickets: 883
+
+ 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.
+
+ .. change::
+ :tags: changed, installation
+ :tickets: 674
+
+ 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.
+
+ .. change::
+ :tags: bug, commands
+ :tickets: 856
+
+ Re-implemented the ``python-editor`` dependency as a small internal
+ function to avoid the need for external dependencies.
+
+ .. change::
+ :tags: usecase, batch
+ :tickets: 884
+
+ 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.
+
+ .. seealso::
+
+ :ref:`batch_schematype_constraints`
+
+ :ref:`batch_check_constraints`
+
+
+ .. change::
+ :tags: changed, installation
+ :tickets: 885
+
+ 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).
+
+ .. change::
+ :tags: feature, tests
+ :tickets: 855
+
+ 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 <https://pypi.org/project/sqlalchemy-cockroachdb/>`_ and
+ `SAP ASE (Sybase) <https://pypi.org/project/sqlalchemy-sybase/>`_.
+
+ .. change::
+ :tags: bug, postgresql
+ :tickets: 874
+
+ 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.
+
+ .. change::
+ :tags: feature, general
+
+ 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.
.. changelog::
:version: 1.6.5
+++ /dev/null
-.. change::
- :tags: usecase, batch
- :tickets: 884
-
- 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.
-
- .. seealso::
-
- :ref:`batch_schematype_constraints`
-
- :ref:`batch_check_constraints`
-