Skip to content

1.7.0

Compare
Choose a tag to compare
@sqla-tester sqla-tester released this 30 Aug 15:12

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