Skip to content

Releases: sqlalchemy/alembic

1.7.4

06 Oct 14:31
Compare
Choose a tag to compare

1.7.4

Released: October 6, 2021

bug

  • [bug] [regression] Fixed a regression that prevented the use of post write hooks
    on python version lower than 3.9

    References: #934

  • [bug] [environment] Fixed issue where the MigrationContext.autocommit_block() feature
    would fail to function when using a SQLAlchemy engine using 2.0 future
    mode.

    References: #944

1.7.3

17 Sep 15:29
Compare
Choose a tag to compare

1.7.3

Released: September 17, 2021

bug

  • [bug] [mypy] Fixed type annotations for the "constraint_name" argument of operations
    create_primary_key(), create_foreign_key(). Pull request courtesy
    TilmanK.

    References: #914

1.7.2

17 Sep 14:06
Compare
Choose a tag to compare

1.7.2

Released: September 17, 2021

bug

  • [bug] [typing] Added missing attributes from context stubs.

    References: #900

  • [bug] [mypy] Fixed an import in one of the .pyi files that was triggering an
    assertion error in some versions of mypy.

    References: #897

  • [bug] [ops] [regression] 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. The logic
    in question has been altered so that the annotations are rendered as
    forward references so that the exec() can proceed.

    References: #920

1.7.1

30 Aug 21:51
Compare
Choose a tag to compare

1.7.1

Released: August 30, 2021

bug

  • [bug] [installation] 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.

    References: #893

  • [bug] [pep484] Fixed issue in generated .pyi files where default values for Optional
    arguments were missing, thereby causing mypy to consider them as required.

    References: #895

  • [bug] [batch] [regression] Fixed regression in batch mode due to #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.

    References: #896

1.7.0

30 Aug 15:12
Compare
Choose a tag to compare

1.7.0

Released: August 30, 2021

changed

  • [changed] [installation] Alembic 1.7 now supports Python 3.6 and above; support for prior versions
    including Python 2.7 has been dropped.

  • [changed] [installation] 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.

    References: #674

  • [changed] [installation] 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).

    References: #885

feature

  • [feature] [environment] 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).

    References: #842

  • [feature] [tests] 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).

    References: #855

  • [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.

usecase

  • [usecase] [batch] 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.

    References: #884

bug

  • [bug] [operations] Fixed regression due to #803 where the .info and .comment
    attributes of Table would be lost inside of the DropTableOp
    class, which when "reversed" into a CreateTableOp would then have
    lost these elements. Pull request courtesy Nicolas CANIART.

    References: #879

  • [bug] [batch] [sqlite] 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.

    References: #883

  • [bug] [commands] Re-implemented the python-editor dependency as a small internal
    function to avoid the need for external dependencies.

    References: #856

  • [bug] [postgresql] Fixed issue where usage of the PostgreSQL postgresql_include option
    within a 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 #513. Pull request courtesy Steven Bronson.

    References: #874

1.6.5

27 May 19:50
Compare
Choose a tag to compare

1.6.5

Released: May 27, 2021

bug

  • [bug] [autogenerate] Fixed issue where dialect-specific keyword arguments within the
    DropIndex operation directive would not render in the
    autogenerated Python code. As support was improved for adding dialect
    specific arguments to directives as part of #803, in particular
    arguments such as "postgresql_concurrently" which apply to the actual
    create/drop of the index, support was needed for these to render even in a
    drop index operation. Pull request courtesy Jet Zhou.

    References: #849

1.6.4

24 May 20:40
Compare
Choose a tag to compare

1.6.4

Released: May 24, 2021

bug

  • [bug] [op directives] [regression] Fixed regression caused by just fixed #844 that scaled back the
    filter for unique=True/index=True too far such that these directives no
    longer worked for the op.create_table() op, this has been fixed.

    References: #848

1.6.3

21 May 20:52
Compare
Choose a tag to compare

1.6.3

Released: May 21, 2021

bug

  • [bug] [autogenerate] [regression] Fixed 1.6-series regression where UniqueConstraint and to a lesser
    extent Index objects would be doubled up in the generated model when
    the unique=True / index=True flags were used.

    References: #844

  • [bug] [autogenerate] Fixed a bug where paths defined in post-write hook options
    would be wrongly escaped in non posix environment (Windows).

    References: #839

  • [bug] [regression] [versioning] Fixed regression where a revision file that contained its own down revision
    as a dependency would cause an endless loop in the traversal logic.

    References: #843

1.6.2

07 May 02:34
Compare
Choose a tag to compare

1.6.2

Released: May 6, 2021

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.

    References: #839

1.6.1

06 May 17:11
Compare
Choose a tag to compare

1.6.1

Released: May 6, 2021

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.

    References: #838