Changelog
### 1.4.0
```
: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::
```
### 1.3.3
```
:released: January 22, 2020
.. change::
:tags: bug, postgresql
:tickets: 637
Fixed issue where COMMENT directives for PostgreSQL failed to correctly
include an explicit schema name, as well as correct quoting rules for
schema, table, and column names. Pull request courtesy Matthew Sills.
.. change::
:tags: usecase, operations
:tickets: 624
Added support for rendering of "computed" elements on :class:`.Column`
objects, supported in SQLAlchemy via the new :class:`.Computed` element
introduced in version 1.3.11. Pull request courtesy Federico Caselli.
Note that there is currently no support for ALTER COLUMN to add, remove, or
modify the "GENERATED ALWAYS AS" element from a column; at least for
PostgreSQL, it does not seem to be supported by the database. Additionally,
SQLAlchemy does not currently reliably reflect the "GENERATED ALWAYS AS"
phrase from an existing column, so there is also no autogenerate support
for addition or removal of the :class:`.Computed` element to or from an
existing column, there is only support for adding new columns that include
the :class:`.Computed` element. In the case that the :class:`.Computed`
element is removed from the :class:`.Column` object in the table metadata,
PostgreSQL and Oracle currently reflect the "GENERATED ALWAYS AS"
expression as the "server default" which will produce an op that tries to
drop the element as a default.
.. changelog::
```
### 1.3.2
```
:released: December 16, 2019
.. change::
:tags: bug, api, autogenerate
:tickets: 635
Fixed regression introduced by :ticket:`579` where server default rendering
functions began to require a dialect implementation, however the
:func:`.render_python_code` convenience function did not include one, thus
causing the function to fail when used in a server default context. The
function now accepts a migration context argument and also creates one
against the default dialect if one is not provided.
.. changelog::
```
### 1.3.1
```
:released: November 13, 2019
.. change::
:tags: bug, mssql
:tickets: 621
Fixed bug in MSSQL dialect where the drop constraint execution steps used
to remove server default or implicit foreign key constraint failed to take
into account the schema name of the target table.
.. changelog::
```
### 1.3.0
```
:released: October 31, 2019
.. change::
:tags: feature, command
:tickets: 608
Added support for ALEMBIC_CONFIG environment variable,
refers to the location of the alembic configuration script
in lieu of using the -c command line option.
.. change::
:tags: bug, autogenerate
:tickets: 131
Fixed bug in new Variant autogenerate where the order of the arguments to
Variant were mistakenly reversed.
.. change::
:tags: change, compatibility
Some internal modifications have been made to how the names of indexes and
unique constraints work to make use of new functions added in SQLAlchemy
1.4, so that SQLAlchemy has more flexibility over how naming conventions
may be applied to these objects.
.. changelog::
```
### 1.2.1
```
:released: September 24, 2019
.. change::
:tags: bug, command
:tickets: 601
Reverted the name change of the "revisions" argument to
:func:`.command.stamp` to "revision" as apparently applications are
calling upon this argument as a keyword name. Pull request courtesy
Thomas Bechtold. Special translations are also added to the command
line interface so that it is still known as "revisions" in the CLI.
.. change::
:tags: bug, tests
:tickets: 592
Removed the "test requirements" from "setup.py test", as this command now
only emits a removal error in any case and these requirements are unused.
.. changelog::
```
### 1.2.0
```
:released: September 20, 2019
.. change::
:tags: feature, command
:tickets: 473
Added new ``--purge`` flag to the ``alembic stamp`` command, which will
unconditionally erase the version table before stamping anything. This is
useful for development where non-existent version identifiers might be left
within the table. Additionally, ``alembic.stamp`` now supports a list of
revision identifiers, which are intended to allow setting up muliple heads
at once. Overall handling of version identifiers within the
``alembic.stamp`` command has been improved with many new tests and
use cases added.
.. change::
:tags: bug, autogenerate
:tickets: 550
Improved the Python rendering of a series of migration operations such that
a single "pass" is rendered for a :class:`.UpgradeOps` or
:class:`.DowngradeOps` based on if no lines of Python code actually
rendered under the operation, rather than whether or not sub-directives
exist. Removed extra "pass" lines that would generate from the
:class:`.ModifyTableOps` directive so that these aren't duplicated under
operation rewriting scenarios.
.. change::
:tags: feature, runtime
:tickets: 123
Added new feature :meth:`.MigrationContext.autocommit_block`, a special
directive which will provide for a non-transactional block inside of a
migration script. The feature requres that: the database driver
(e.g. DBAPI) supports the AUTOCOMMIT isolation mode. The directive
also necessarily needs to COMMIT the existing transaction in progress
in order to enter autocommit mode.
.. seealso::
:meth:`.MigrationContext.autocommit_block`
.. change::
:tags: change: py3k
Python 3.4 support is dropped, as the upstream tooling (pip, mysqlclient)
etc are already dropping support for Python 3.4, which itself is no longer
maintained.
.. change::
:tags: usecase, autogenerate
:tickets: 518
Added autogenerate support for :class:`.Column` objects that have
dialect-specific ``**kwargs``, support first added in SQLAlchemy 1.3.
This includes SQLite "on conflict" as well as options used by some
third party dialects.
.. change::
:tags: usecase, autogenerate
:tickets: 131
Added rendering for SQLAlchemy ``Variant`` datatypes, which render as the
base type plus one or more ``.with_variant()`` method calls.
.. change::
:tags: usecase, commands
:tickets: 534
Made the command interface revision lookup behavior more strict in that an
Alembic revision number is only resolved based on a partial match rules if
it has at least four characters, to prevent simple typographical issues
from inadvertently running migrations.
.. change::
:tags: feature, commands
:tickets: 307
Added "post write hooks" to revision generation. These allow custom logic
to run after a revision Python script is generated, typically for the
purpose of running code formatters such as "Black" or "autopep8", but may
be used for any arbitrary post-render hook as well, including custom Python
functions or scripts. The hooks are enabled by providing a
``[post_write_hooks]`` section in the alembic.ini file. A single hook
is provided which runs an arbitrary Python executable on the newly
generated revision script, which can be configured to run code formatters
such as Black; full examples are included in the documentation.
.. seealso::
:ref:`post_write_hooks`
.. change::
:tags: feature, environment
:tickets: 463
Added new flag ``--package`` to ``alembic init``. For environments where
the Alembic migration files and such are within the package tree and
importable as modules, this flag can be specified which will add the
additional ``__init__.py`` files in the version location and the
environment location.
.. change::
:tags: bug, autogenerate
:tickets: 549
Fixed bug where rendering of comment text for table-level comments within
:meth:`.Operations.create_table_comment` and
:meth:`.Operations.drop_table_comment` was not properly quote-escaped
within rendered Python code for autogenerate.
.. change::
:tags: bug, autogenerate
:tickets: 505
Modified the logic of the :class:`.Rewriter` object such that it keeps a
memoization of which directives it has processed, so that it can ensure it
processes a particular directive only once, and additionally fixed
:class:`.Rewriter` so that it functions correctly for multiple-pass
autogenerate schemes, such as the one illustrated in the "multidb"
template. By tracking which directives have been processed, a
multiple-pass scheme which calls upon the :class:`.Rewriter` multiple times
for the same structure as elements are added can work without running
duplicate operations on the same elements more than once.
.. changelog::
```
Links
- PyPI: https://pypi.org/project/alembic
- Changelog: https://pyup.io/changelogs/alembic/
- Homepage: https://alembic.sqlalchemy.org
- Docs: https://pythonhosted.org/alembic/
Changelog
### 3.4.0
```
******************
Features:
- Improve type coverage (:issue:`1479`). Thanks :user:`Reskov`.
Bug fixes:
- Fix typing for ``data`` param of ``Schema.load`` and ``ValidationError`` (:issue:`1492`).
Thanks :user:`mehdigmira` for reporting and thanks :user:`dfirst` for the PR.
Other changes:
- Remove unnecessary typecasts (:pr:`1500`). Thanks :user:`hukkinj1`.
- Remove useless ``_serialize`` override in ``UUID`` field (:pr:`1489`).
```
### 3.3.0
```
******************
Features:
- ``fields.Nested`` may take a callable that returns a schema instance.
Use this to resolve order-of-declaration issues when schemas nest each other (:issue:`1146`).
.. code-block:: python
<3.3
class AlbumSchema(Schema):
title = fields.Str()
artist = fields.Nested("ArtistSchema", only=("name",))
class ArtistSchema(Schema):
name = fields.Str()
albums = fields.List(fields.Nested(AlbumSchema))
>=3.3
class AlbumSchema(Schema):
title = fields.Str()
artist = fields.Nested(lambda: ArtistSchema(only=("name",)))
class ArtistSchema(Schema):
name = fields.Str()
albums = fields.List(fields.Nested(AlbumSchema))
Deprecations:
- Passing the string ``"self"`` to ``fields.Nested`` is deprecated.
Use a callable instead.
.. code-block:: python
from marshmallow import Schema, fields
<3.3
class PersonSchema(Schema):
partner = fields.Nested("self", exclude=("partner",))
friends = fields.List(fields.Nested("self"))
>=3.3
class PersonSchema(Schema):
partner = fields.Nested(lambda: PersonSchema(exclude=("partner")))
friends = fields.List(fields.Nested(lambda: PersonSchema()))
Other changes:
- Fix typing for ``Number._format_num`` (:pr:`1466`). Thanks :user:`hukkinj1`.
- Make mypy stricter and remove dead code (:pr:`1467`). Thanks again, :user:`hukkinj1`.
```
### 3.2.2
```
******************
Bug fixes:
- Don't load fields for which ``load_only`` and ``dump_only`` are both ``True`` (:pr:`1448`).
- Fix types in ``marshmallow.validate`` (:pr:`1446`).
Support:
- Test against Python 3.8 (:pr:`1431`).
```
Links
- PyPI: https://pypi.org/project/marshmallow
- Changelog: https://pyup.io/changelogs/marshmallow/
- Repo: https://github.com/marshmallow-code/marshmallow
Changelog
### 2.4.4
```
===========================
Release date: 2019-11-13
* Exempt all the names found in type annotations from ``unused-import``
The previous code was assuming that only ``typing`` names need to be
exempted, but we need to do that for the rest of the type comment
names as well.
Close 3112
* Relax type import detection for names that do not come from the ``typing`` module
Close 3191
```
Links
- PyPI: https://pypi.org/project/pylint
- Changelog: https://pyup.io/changelogs/pylint/
- Repo: https://github.com/PyCQA/pylint
Changelog
### 20.0.3
```
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Document a programmatic API as ``from virtualenv import cli_run`` under :ref:`programmatic_api` -
by :user:`gaborbernat`. (`1585 <https://github.com/pypa/virtualenv/issues/1585>`_)
```
### 20.0.2
```
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Add link to the `legacy documentation <https://virtualenv.pypa.io/en/legacy>`_ for the changelog by :user:`jezdez`. (`1547 <https://github.com/pypa/virtualenv/issues/1547>`_)
- Fine tune the documentation layout: default width of theme, allow tables to wrap around, soft corners for code snippets
- by :user:`pradyunsg`. (`1548 <https://github.com/pypa/virtualenv/issues/1548>`_)
```
### 20.0.1
```
~~~~~~~~~~~~~~~~~
- Virtual environments created via relative path on Windows creates bad console executables - by :user:`gaborbernat`. (`1552 <https://github.com/pypa/virtualenv/issues/1552>`_)
- Seems sometimes venvs created set their base executable to themselves; we accept these without question, so we handle
virtual environments as system pythons causing issues - by :user:`gaborbernat`. (`1553 <https://github.com/pypa/virtualenv/issues/1553>`_)
v20.0.0. (2020-02-10)
---------------------
Improved Documentation - 20.0.0.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Fixes typos, repeated words and inconsistent heading spacing. Rephrase parts of the development documentation and CLI
documentation. Expands shorthands like ``env var`` and ``config`` to their full forms. Uses descriptions from respective
documentation, for projects listed in ``related links`` - by :user:`pradyunsg`. (`1540 <https://github.com/pypa/virtualenv/issues/1540>`_)
```
### 20.0.0b2
```
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Create the first iteration of the new documentation - by :user:`gaborbernat`. (`1465 <https://github.com/pypa/virtualenv/issues/1465>`_)
- Project readme is now of type MarkDown instead of reStructuredText - by :user:`gaborbernat`. (`1531 <https://github.com/pypa/virtualenv/issues/1531>`_)
```
### 20.0.0b1
```
----------------------
* First public release of the rewrite. Everything is brand new and just added.
.. warning::
The current virtualenv is the second iteration of implementation. From version ``0.8`` all the way to ``16.7.9``
we numbered the first iteration. Version ``20.0.0b1`` is a complete rewrite of the package, and as such this release
history starts from there. The old changelog is still available in the
`legacy branch documentation <https://virtualenv.pypa.io/en/legacy/changes.html>`_.
```
Links
- PyPI: https://pypi.org/project/virtualenv
- Changelog: https://pyup.io/changelogs/virtualenv/
- Homepage: https://virtualenv.pypa.io/
Update aiohttp-jinja2 from 1.1.2 to 1.2.0.
Changelog
### 1.2.0 ``` ------------------ - Add type hints 285 ```Links
- PyPI: https://pypi.org/project/aiohttp-jinja2 - Changelog: https://pyup.io/changelogs/aiohttp-jinja2/ - Repo: https://github.com/aio-libs/aiohttp_jinja2/Update aioredis from 1.3.0 to 1.3.1.
Changelog
### 1.3.1 ``` ^^^^^^^^^^^^^^^^^^ Bugfixes ~~~~~~~~ - Fix transaction data decoding (see `657 <https://github.com/aio-libs/aioredis/issues/657>`_); - Fix duplicate calls to ``pool.wait_closed()`` upon ``create_pool()`` exception. (see `671 <https://github.com/aio-libs/aioredis/issues/671>`_); Deprecations and Removals ~~~~~~~~~~~~~~~~~~~~~~~~~ - Drop explicit loop requirement in API. Deprecate ``loop`` argument. Throw warning in Python 3.8+ if explicit ``loop`` is passed to methods. (see `666 <https://github.com/aio-libs/aioredis/issues/666>`_); Misc ~~~~ - `643 <https://github.com/aio-libs/aioredis/issues/643>`_, `646 <https://github.com/aio-libs/aioredis/issues/646>`_, `648 <https://github.com/aio-libs/aioredis/issues/648>`_; ```Links
- PyPI: https://pypi.org/project/aioredis - Changelog: https://pyup.io/changelogs/aioredis/ - Repo: https://github.com/aio-libs/aioredisUpdate alembic from 1.1.0 to 1.4.0.
Changelog
### 1.4.0 ``` :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:: ``` ### 1.3.3 ``` :released: January 22, 2020 .. change:: :tags: bug, postgresql :tickets: 637 Fixed issue where COMMENT directives for PostgreSQL failed to correctly include an explicit schema name, as well as correct quoting rules for schema, table, and column names. Pull request courtesy Matthew Sills. .. change:: :tags: usecase, operations :tickets: 624 Added support for rendering of "computed" elements on :class:`.Column` objects, supported in SQLAlchemy via the new :class:`.Computed` element introduced in version 1.3.11. Pull request courtesy Federico Caselli. Note that there is currently no support for ALTER COLUMN to add, remove, or modify the "GENERATED ALWAYS AS" element from a column; at least for PostgreSQL, it does not seem to be supported by the database. Additionally, SQLAlchemy does not currently reliably reflect the "GENERATED ALWAYS AS" phrase from an existing column, so there is also no autogenerate support for addition or removal of the :class:`.Computed` element to or from an existing column, there is only support for adding new columns that include the :class:`.Computed` element. In the case that the :class:`.Computed` element is removed from the :class:`.Column` object in the table metadata, PostgreSQL and Oracle currently reflect the "GENERATED ALWAYS AS" expression as the "server default" which will produce an op that tries to drop the element as a default. .. changelog:: ``` ### 1.3.2 ``` :released: December 16, 2019 .. change:: :tags: bug, api, autogenerate :tickets: 635 Fixed regression introduced by :ticket:`579` where server default rendering functions began to require a dialect implementation, however the :func:`.render_python_code` convenience function did not include one, thus causing the function to fail when used in a server default context. The function now accepts a migration context argument and also creates one against the default dialect if one is not provided. .. changelog:: ``` ### 1.3.1 ``` :released: November 13, 2019 .. change:: :tags: bug, mssql :tickets: 621 Fixed bug in MSSQL dialect where the drop constraint execution steps used to remove server default or implicit foreign key constraint failed to take into account the schema name of the target table. .. changelog:: ``` ### 1.3.0 ``` :released: October 31, 2019 .. change:: :tags: feature, command :tickets: 608 Added support for ALEMBIC_CONFIG environment variable, refers to the location of the alembic configuration script in lieu of using the -c command line option. .. change:: :tags: bug, autogenerate :tickets: 131 Fixed bug in new Variant autogenerate where the order of the arguments to Variant were mistakenly reversed. .. change:: :tags: change, compatibility Some internal modifications have been made to how the names of indexes and unique constraints work to make use of new functions added in SQLAlchemy 1.4, so that SQLAlchemy has more flexibility over how naming conventions may be applied to these objects. .. changelog:: ``` ### 1.2.1 ``` :released: September 24, 2019 .. change:: :tags: bug, command :tickets: 601 Reverted the name change of the "revisions" argument to :func:`.command.stamp` to "revision" as apparently applications are calling upon this argument as a keyword name. Pull request courtesy Thomas Bechtold. Special translations are also added to the command line interface so that it is still known as "revisions" in the CLI. .. change:: :tags: bug, tests :tickets: 592 Removed the "test requirements" from "setup.py test", as this command now only emits a removal error in any case and these requirements are unused. .. changelog:: ``` ### 1.2.0 ``` :released: September 20, 2019 .. change:: :tags: feature, command :tickets: 473 Added new ``--purge`` flag to the ``alembic stamp`` command, which will unconditionally erase the version table before stamping anything. This is useful for development where non-existent version identifiers might be left within the table. Additionally, ``alembic.stamp`` now supports a list of revision identifiers, which are intended to allow setting up muliple heads at once. Overall handling of version identifiers within the ``alembic.stamp`` command has been improved with many new tests and use cases added. .. change:: :tags: bug, autogenerate :tickets: 550 Improved the Python rendering of a series of migration operations such that a single "pass" is rendered for a :class:`.UpgradeOps` or :class:`.DowngradeOps` based on if no lines of Python code actually rendered under the operation, rather than whether or not sub-directives exist. Removed extra "pass" lines that would generate from the :class:`.ModifyTableOps` directive so that these aren't duplicated under operation rewriting scenarios. .. change:: :tags: feature, runtime :tickets: 123 Added new feature :meth:`.MigrationContext.autocommit_block`, a special directive which will provide for a non-transactional block inside of a migration script. The feature requres that: the database driver (e.g. DBAPI) supports the AUTOCOMMIT isolation mode. The directive also necessarily needs to COMMIT the existing transaction in progress in order to enter autocommit mode. .. seealso:: :meth:`.MigrationContext.autocommit_block` .. change:: :tags: change: py3k Python 3.4 support is dropped, as the upstream tooling (pip, mysqlclient) etc are already dropping support for Python 3.4, which itself is no longer maintained. .. change:: :tags: usecase, autogenerate :tickets: 518 Added autogenerate support for :class:`.Column` objects that have dialect-specific ``**kwargs``, support first added in SQLAlchemy 1.3. This includes SQLite "on conflict" as well as options used by some third party dialects. .. change:: :tags: usecase, autogenerate :tickets: 131 Added rendering for SQLAlchemy ``Variant`` datatypes, which render as the base type plus one or more ``.with_variant()`` method calls. .. change:: :tags: usecase, commands :tickets: 534 Made the command interface revision lookup behavior more strict in that an Alembic revision number is only resolved based on a partial match rules if it has at least four characters, to prevent simple typographical issues from inadvertently running migrations. .. change:: :tags: feature, commands :tickets: 307 Added "post write hooks" to revision generation. These allow custom logic to run after a revision Python script is generated, typically for the purpose of running code formatters such as "Black" or "autopep8", but may be used for any arbitrary post-render hook as well, including custom Python functions or scripts. The hooks are enabled by providing a ``[post_write_hooks]`` section in the alembic.ini file. A single hook is provided which runs an arbitrary Python executable on the newly generated revision script, which can be configured to run code formatters such as Black; full examples are included in the documentation. .. seealso:: :ref:`post_write_hooks` .. change:: :tags: feature, environment :tickets: 463 Added new flag ``--package`` to ``alembic init``. For environments where the Alembic migration files and such are within the package tree and importable as modules, this flag can be specified which will add the additional ``__init__.py`` files in the version location and the environment location. .. change:: :tags: bug, autogenerate :tickets: 549 Fixed bug where rendering of comment text for table-level comments within :meth:`.Operations.create_table_comment` and :meth:`.Operations.drop_table_comment` was not properly quote-escaped within rendered Python code for autogenerate. .. change:: :tags: bug, autogenerate :tickets: 505 Modified the logic of the :class:`.Rewriter` object such that it keeps a memoization of which directives it has processed, so that it can ensure it processes a particular directive only once, and additionally fixed :class:`.Rewriter` so that it functions correctly for multiple-pass autogenerate schemes, such as the one illustrated in the "multidb" template. By tracking which directives have been processed, a multiple-pass scheme which calls upon the :class:`.Rewriter` multiple times for the same structure as elements are added can work without running duplicate operations on the same elements more than once. .. changelog:: ```Links
- PyPI: https://pypi.org/project/alembic - Changelog: https://pyup.io/changelogs/alembic/ - Homepage: https://alembic.sqlalchemy.org - Docs: https://pythonhosted.org/alembic/Update apscheduler from 3.6.1 to 3.6.3.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/apscheduler - Changelog: https://pyup.io/changelogs/apscheduler/ - Repo: https://github.com/agronholm/apscheduler - Docs: https://pythonhosted.org/APScheduler/Update asyncpgsa from 0.26.0 to 0.26.1.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/asyncpgsa - Changelog: https://pyup.io/changelogs/asyncpgsa/ - Repo: https://github.com/canopytax/asyncpgsaUpdate gunicorn from 19.9.0 to 20.0.4.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/gunicorn - Changelog: https://pyup.io/changelogs/gunicorn/ - Homepage: http://gunicorn.orgUpdate marshmallow from 3.2.1 to 3.4.0.
Changelog
### 3.4.0 ``` ****************** Features: - Improve type coverage (:issue:`1479`). Thanks :user:`Reskov`. Bug fixes: - Fix typing for ``data`` param of ``Schema.load`` and ``ValidationError`` (:issue:`1492`). Thanks :user:`mehdigmira` for reporting and thanks :user:`dfirst` for the PR. Other changes: - Remove unnecessary typecasts (:pr:`1500`). Thanks :user:`hukkinj1`. - Remove useless ``_serialize`` override in ``UUID`` field (:pr:`1489`). ``` ### 3.3.0 ``` ****************** Features: - ``fields.Nested`` may take a callable that returns a schema instance. Use this to resolve order-of-declaration issues when schemas nest each other (:issue:`1146`). .. code-block:: python <3.3 class AlbumSchema(Schema): title = fields.Str() artist = fields.Nested("ArtistSchema", only=("name",)) class ArtistSchema(Schema): name = fields.Str() albums = fields.List(fields.Nested(AlbumSchema)) >=3.3 class AlbumSchema(Schema): title = fields.Str() artist = fields.Nested(lambda: ArtistSchema(only=("name",))) class ArtistSchema(Schema): name = fields.Str() albums = fields.List(fields.Nested(AlbumSchema)) Deprecations: - Passing the string ``"self"`` to ``fields.Nested`` is deprecated. Use a callable instead. .. code-block:: python from marshmallow import Schema, fields <3.3 class PersonSchema(Schema): partner = fields.Nested("self", exclude=("partner",)) friends = fields.List(fields.Nested("self")) >=3.3 class PersonSchema(Schema): partner = fields.Nested(lambda: PersonSchema(exclude=("partner"))) friends = fields.List(fields.Nested(lambda: PersonSchema())) Other changes: - Fix typing for ``Number._format_num`` (:pr:`1466`). Thanks :user:`hukkinj1`. - Make mypy stricter and remove dead code (:pr:`1467`). Thanks again, :user:`hukkinj1`. ``` ### 3.2.2 ``` ****************** Bug fixes: - Don't load fields for which ``load_only`` and ``dump_only`` are both ``True`` (:pr:`1448`). - Fix types in ``marshmallow.validate`` (:pr:`1446`). Support: - Test against Python 3.8 (:pr:`1431`). ```Links
- PyPI: https://pypi.org/project/marshmallow - Changelog: https://pyup.io/changelogs/marshmallow/ - Repo: https://github.com/marshmallow-code/marshmallowUpdate pyyaml from 5.1.2 to 5.3.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/pyyaml - Repo: https://github.com/yaml/pyyamlUpdate ipython from 7.8.0 to 7.12.0.
Changelog
### 7.9.0 ``` None ```Links
- PyPI: https://pypi.org/project/ipython - Changelog: https://pyup.io/changelogs/ipython/ - Homepage: https://ipython.orgUpdate black from 19.3b0 to 19.10b0.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/black - Changelog: https://pyup.io/changelogs/black/ - Repo: https://github.com/psf/blackUpdate pylint from 2.4.3 to 2.4.4.
Changelog
### 2.4.4 ``` =========================== Release date: 2019-11-13 * Exempt all the names found in type annotations from ``unused-import`` The previous code was assuming that only ``typing`` names need to be exempted, but we need to do that for the rest of the type comment names as well. Close 3112 * Relax type import detection for names that do not come from the ``typing`` module Close 3191 ```Links
- PyPI: https://pypi.org/project/pylint - Changelog: https://pyup.io/changelogs/pylint/ - Repo: https://github.com/PyCQA/pylintUpdate pytest from 5.2.1 to 5.3.5.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/pytest - Homepage: https://docs.pytest.org/en/latest/Update tox from 3.14.0 to 3.14.5.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/tox - Docs: http://tox.readthedocs.orgUpdate mypy from 0.740 to 0.761.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/mypy - Homepage: http://www.mypy-lang.org/Update virtualenv from 16.0.0 to 20.0.4.
Changelog
### 20.0.3 ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Document a programmatic API as ``from virtualenv import cli_run`` under :ref:`programmatic_api` - by :user:`gaborbernat`. (`1585 <https://github.com/pypa/virtualenv/issues/1585>`_) ``` ### 20.0.2 ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Add link to the `legacy documentation <https://virtualenv.pypa.io/en/legacy>`_ for the changelog by :user:`jezdez`. (`1547 <https://github.com/pypa/virtualenv/issues/1547>`_) - Fine tune the documentation layout: default width of theme, allow tables to wrap around, soft corners for code snippets - by :user:`pradyunsg`. (`1548 <https://github.com/pypa/virtualenv/issues/1548>`_) ``` ### 20.0.1 ``` ~~~~~~~~~~~~~~~~~ - Virtual environments created via relative path on Windows creates bad console executables - by :user:`gaborbernat`. (`1552 <https://github.com/pypa/virtualenv/issues/1552>`_) - Seems sometimes venvs created set their base executable to themselves; we accept these without question, so we handle virtual environments as system pythons causing issues - by :user:`gaborbernat`. (`1553 <https://github.com/pypa/virtualenv/issues/1553>`_) v20.0.0. (2020-02-10) --------------------- Improved Documentation - 20.0.0. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Fixes typos, repeated words and inconsistent heading spacing. Rephrase parts of the development documentation and CLI documentation. Expands shorthands like ``env var`` and ``config`` to their full forms. Uses descriptions from respective documentation, for projects listed in ``related links`` - by :user:`pradyunsg`. (`1540 <https://github.com/pypa/virtualenv/issues/1540>`_) ``` ### 20.0.0b2 ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Create the first iteration of the new documentation - by :user:`gaborbernat`. (`1465 <https://github.com/pypa/virtualenv/issues/1465>`_) - Project readme is now of type MarkDown instead of reStructuredText - by :user:`gaborbernat`. (`1531 <https://github.com/pypa/virtualenv/issues/1531>`_) ``` ### 20.0.0b1 ``` ---------------------- * First public release of the rewrite. Everything is brand new and just added. .. warning:: The current virtualenv is the second iteration of implementation. From version ``0.8`` all the way to ``16.7.9`` we numbered the first iteration. Version ``20.0.0b1`` is a complete rewrite of the package, and as such this release history starts from there. The old changelog is still available in the `legacy branch documentation <https://virtualenv.pypa.io/en/legacy/changes.html>`_. ```Links
- PyPI: https://pypi.org/project/virtualenv - Changelog: https://pyup.io/changelogs/virtualenv/ - Homepage: https://virtualenv.pypa.io/