Changelog
### 20.1.0
```
-------------------
Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Python 3.4 is not supported anymore.
It has been unsupported by the Python core team for a while now, its PyPI downloads are negligible, and our CI provider removed it as a supported option.
It's very unlikely that ``attrs`` will break under 3.4 anytime soon, which is why we do *not* block its installation on Python 3.4.
But we don't test it anymore and will block it once someone reports breakage.
`608 <https://github.com/python-attrs/attrs/issues/608>`_
Deprecations
^^^^^^^^^^^^
- Less of a deprecation and more of a heads up: the next release of ``attrs`` will introduce an ``attrs`` namespace.
That means that you'll finally be able to run ``import attrs`` with new functions that aren't cute abbreviations and that will carry better defaults.
This should not break any of your code, because project-local packages have priority before installed ones.
If this is a problem for you for some reason, please report it to our bug tracker and we'll figure something out.
The old ``attr`` namespace isn't going anywhere and its defaults are not changing – this is a purely additive measure.
Please check out the linked issue for more details.
These new APIs have been added *provisionally* as part of 666 so you can try them out today and provide feedback.
Learn more in the `API docs <https://www.attrs.org/en/stable/api.htmlprovisional-apis>`_.
`408 <https://github.com/python-attrs/attrs/issues/408>`_
Changes
^^^^^^^
- Added ``attr.resolve_types()``.
It ensures that all forward-references and types in string form are resolved into concrete types.
You need this only if you need concrete types at runtime.
That means that if you only use types for static type checking, you do **not** need this function.
`288 <https://github.com/python-attrs/attrs/issues/288>`_,
`302 <https://github.com/python-attrs/attrs/issues/302>`_
- Added ``attr.s(collect_by_mro=False)`` argument that if set to ``True`` fixes the collection of attributes from base classes.
It's only necessary for certain cases of multiple-inheritance but is kept off for now for backward-compatibility reasons.
It will be turned on by default in the future.
As a side-effect, ``attr.Attribute`` now *always* has an ``inherited`` attribute indicating whether an attribute on a class was directly defined or inherited.
`428 <https://github.com/python-attrs/attrs/issues/428>`_,
`635 <https://github.com/python-attrs/attrs/issues/635>`_
- On Python 3, all generated methods now have a docstring explaining that they have been created by ``attrs``.
`506 <https://github.com/python-attrs/attrs/issues/506>`_
- It is now possible to prevent ``attrs`` from auto-generating the ``__setstate__`` and ``__getstate__`` methods that are required for pickling of slotted classes.
Either pass ``attr.s(getstate_setstate=False)`` or pass ``attr.s(auto_detect=True)`` and implement them yourself:
if ``attrs`` finds either of the two methods directly on the decorated class, it assumes implicitly ``getstate_setstate=False`` (and implements neither).
This option works with dict classes but should never be necessary.
`512 <https://github.com/python-attrs/attrs/issues/512>`_,
`513 <https://github.com/python-attrs/attrs/issues/513>`_,
`642 <https://github.com/python-attrs/attrs/issues/642>`_
- Fixed a ``ValueError: Cell is empty`` bug that could happen in some rare edge cases.
`590 <https://github.com/python-attrs/attrs/issues/590>`_
- ``attrs`` can now automatically detect your own implementations and infer ``init=False``, ``repr=False``, ``eq=False``, ``order=False``, and ``hash=False`` if you set ``attr.s(auto_detect=True)``.
``attrs`` will ignore inherited methods.
If the argument implies more than one method (e.g. ``eq=True`` creates both ``__eq__`` and ``__ne__``), it's enough for *one* of them to exist and ``attrs`` will create *neither*.
This feature requires Python 3.
`607 <https://github.com/python-attrs/attrs/issues/607>`_
- Added ``attr.converters.pipe()``.
The feature allows combining multiple conversion callbacks into one by piping the value through all of them, and retuning the last result.
As part of this feature, we had to relax the type information for converter callables.
`618 <https://github.com/python-attrs/attrs/issues/618>`_
- Fixed serialization behavior of non-slots classes with ``cache_hash=True``.
The hash cache will be cleared on operations which make "deep copies" of instances of classes with hash caching,
though the cache will not be cleared with shallow copies like those made by ``copy.copy()``.
Previously, ``copy.deepcopy()`` or serialization and deserialization with ``pickle`` would result in an un-initialized object.
This change also allows the creation of ``cache_hash=True`` classes with a custom ``__setstate__``,
which was previously forbidden (`494 <https://github.com/python-attrs/attrs/issues/494>`_).
`620 <https://github.com/python-attrs/attrs/issues/620>`_
- It is now possible to specify hooks that are called whenever an attribute is set **after** a class has been instantiated.
You can pass ``on_setattr`` both to ``attr.s()`` to set the default for all attributes on a class, and to ``attr.ib()`` to overwrite it for individual attributes.
``attrs`` also comes with a new module ``attr.setters`` that brings helpers that run validators, converters, or allow to freeze a subset of attributes.
`645 <https://github.com/python-attrs/attrs/issues/645>`_,
`660 <https://github.com/python-attrs/attrs/issues/660>`_
- **Provisional** APIs called ``attr.define()``, ``attr.mutable()``, and ``attr.frozen()`` have been added.
They are only available on Python 3.6 and later, and call ``attr.s()`` with different default values.
If nothing comes up, they will become the official way for creating classes in 20.2.0 (see above).
**Please note** that it may take some time until mypy – and other tools that have dedicated support for ``attrs`` – recognize these new APIs.
Please **do not** open issues on our bug tracker, there is nothing we can do about it.
`666 <https://github.com/python-attrs/attrs/issues/666>`_
- We have also provisionally added ``attr.field()`` that supplants ``attr.ib()``.
It also requires at least Python 3.6 and is keyword-only.
Other than that, it only dropped a few arguments, but changed no defaults.
As with ``attr.s()``: ``attr.ib()`` is not going anywhere.
`669 <https://github.com/python-attrs/attrs/issues/669>`_
----
```
Links
- PyPI: https://pypi.org/project/attrs
- Changelog: https://pyup.io/changelogs/attrs/
- Homepage: https://www.attrs.org/
Changelog
### 2.0.0
```
Starting with version 2, flask-babel drops official support for Python2.
Python versions 3.5 through 3.9-beta1 are tested and supported, as well as pypy3.
- Tests moved from unittest to pytest (163)
- Domain and caching support from Flask-BabelEx (163)
- Documentation moved from python-hosted to Github Pages.
- CI moved from Travisci to Github Actions
- Small documentation improvements.
- Removed uncessary checks on get_translations() (127, 126)
- localeselector and timezoneselector can be changed after creation.
```
Links
- PyPI: https://pypi.org/project/flask-babel
- Changelog: https://pyup.io/changelogs/flask-babel/
- Repo: http://github.com/python-babel/flask-babel
- Docs: https://pythonhosted.org/Flask-Babel/
Changelog
### 2.10.1
```
-------------------
* Support for ``pytest-xdist`` 2.0, which breaks compatibility with ``pytest-xdist`` before 1.22.3 (from 2017).
Contributed by Zac Hatfield-Dodds in `412 <https://github.com/pytest-dev/pytest-cov/pull/412>`_.
* Fixed the ``LocalPath has no attribute startswith`` failure that occurred when using the ``pytester`` plugin
in inline mode.
```
Links
- PyPI: https://pypi.org/project/pytest-cov
- Changelog: https://pyup.io/changelogs/pytest-cov/
- Repo: https://github.com/pytest-dev/pytest-cov
Changelog
### 2.4.1
```
----------
- [enhancement] extract NoopExecutor into it's own submodule
- [bugfix] Ignore occasional `ProcessFinishedWithError` error on executor exit.
- [bugfix] Fixed setting custom password for process fixture
- [bugfix] Fix version detection, to allow for two-digit minor version part
```
Links
- PyPI: https://pypi.org/project/pytest-postgresql
- Changelog: https://pyup.io/changelogs/pytest-postgresql/
- Repo: https://github.com/ClearcodeHQ/pytest-postgresql
Changelog
### 1.3.19
```
:released: August 17, 2020
.. change::
:tags: usecase, py3k
:tickets: 5357
Added a ``**kw`` argument to the :meth:`.DeclarativeMeta.__init__` method.
This allows a class to support the :pep:`487` metaclass hook
``__init_subclass__``. Pull request courtesy Ewen Gillies.
.. change::
:tags: bug, sql
:tickets: 5470
Repaired an issue where the "ORDER BY" clause rendering a label name rather
than a complete expression, which is particularly important for SQL Server,
would fail to occur if the expression were enclosed in a parenthesized
grouping in some cases. This case has been added to test support. The
change additionally adjusts the "automatically add ORDER BY columns when
DISTINCT is present" behavior of ORM query, deprecated in 1.4, to more
accurately detect column expressions that are already present.
.. change::
:tags: usecase, mysql
:tickets: 5481
The MySQL dialect will render FROM DUAL for a SELECT statement that has no
FROM clause but has a WHERE clause. This allows things like "SELECT 1 WHERE
EXISTS (subquery)" kinds of queries to be used as well as other use cases.
.. change::
:tags: bug, mssql, sql
:tickets: 5467
Fixed bug where the mssql dialect incorrectly escaped object names that
contained ']' character(s).
.. change::
:tags: bug, reflection, sqlite, mssql
:tickets: 5456
Applied a sweep through all included dialects to ensure names that contain
single or double quotes are properly escaped when querying system tables,
for all :class:`.Inspector` methods that accept object names as an argument
(e.g. table names, view names, etc). SQLite and MSSQL contained two
quoting issues that were repaired.
.. change::
:tags: bug, mysql
:tickets: 5411
Fixed an issue where CREATE TABLE statements were not specifying the
COLLATE keyword correctly.
.. change::
:tags: bug, datatypes, sql
:tickets: 4733
The ``LookupError`` message will now provide the user with up to four
possible values that a column is constrained to via the :class:`.Enum`.
Values longer than 11 characters will be truncated and replaced with
ellipses. Pull request courtesy Ramon Williams.
.. change::
:tags: bug, postgresql
:tickets: 5476
Fixed issue where the return type for the various RANGE comparison
operators would itself be the same RANGE type rather than BOOLEAN, which
would cause an undesirable result in the case that a
:class:`.TypeDecorator` that defined result-processing behavior were in
use. Pull request courtesy Jim Bosch.
.. change::
:tags: bug, mysql
:tickets: 5493
Added MariaDB code 1927 to the list of "disconnect" codes, as recent
MariaDB versions apparently use this code when the database server was
stopped.
.. change::
:tags: usecase, declarative, orm
:tickets: 5513
The name of the virtual column used when using the
:class:`_declarative.AbstractConcreteBase` and
:class:`_declarative.ConcreteBase` classes can now be customized, to allow
for models that have a column that is actually named ``type``. Pull
request courtesy Jesse-Bakker.
.. change::
:tags: usecase, orm
:tickets: 5494
Adjusted the workings of the :meth:`_orm.Mapper.all_orm_descriptors`
accessor to represent the attributes in the order that they are located in
a deterministic way, assuming the use of Python 3.6 or higher which
maintains the sorting order of class attributes based on how they were
declared. This sorting is not guaranteed to match the declared order of
attributes in all cases however; see the method documentation for the exact
scheme.
.. change::
:tags: bug, sql
:tickets: 5500
Fixed issue where the
:paramref:`_engine.Connection.execution_options.schema_translate_map`
feature would not take effect when the :meth:`_schema.Sequence.next_value`
function function for a :class:`_schema.Sequence` were used in the
:paramref:`_schema.Column.server_default` parameter and the create table
DDL were emitted.
.. changelog::
```
Links
- PyPI: https://pypi.org/project/sqlalchemy
- Changelog: https://pyup.io/changelogs/sqlalchemy/
- Homepage: http://www.sqlalchemy.org
Update attrs from 19.3.0 to 20.1.0.
Changelog
### 20.1.0 ``` ------------------- Backward-incompatible Changes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Python 3.4 is not supported anymore. It has been unsupported by the Python core team for a while now, its PyPI downloads are negligible, and our CI provider removed it as a supported option. It's very unlikely that ``attrs`` will break under 3.4 anytime soon, which is why we do *not* block its installation on Python 3.4. But we don't test it anymore and will block it once someone reports breakage. `608 <https://github.com/python-attrs/attrs/issues/608>`_ Deprecations ^^^^^^^^^^^^ - Less of a deprecation and more of a heads up: the next release of ``attrs`` will introduce an ``attrs`` namespace. That means that you'll finally be able to run ``import attrs`` with new functions that aren't cute abbreviations and that will carry better defaults. This should not break any of your code, because project-local packages have priority before installed ones. If this is a problem for you for some reason, please report it to our bug tracker and we'll figure something out. The old ``attr`` namespace isn't going anywhere and its defaults are not changing – this is a purely additive measure. Please check out the linked issue for more details. These new APIs have been added *provisionally* as part of 666 so you can try them out today and provide feedback. Learn more in the `API docs <https://www.attrs.org/en/stable/api.htmlprovisional-apis>`_. `408 <https://github.com/python-attrs/attrs/issues/408>`_ Changes ^^^^^^^ - Added ``attr.resolve_types()``. It ensures that all forward-references and types in string form are resolved into concrete types. You need this only if you need concrete types at runtime. That means that if you only use types for static type checking, you do **not** need this function. `288 <https://github.com/python-attrs/attrs/issues/288>`_, `302 <https://github.com/python-attrs/attrs/issues/302>`_ - Added ``attr.s(collect_by_mro=False)`` argument that if set to ``True`` fixes the collection of attributes from base classes. It's only necessary for certain cases of multiple-inheritance but is kept off for now for backward-compatibility reasons. It will be turned on by default in the future. As a side-effect, ``attr.Attribute`` now *always* has an ``inherited`` attribute indicating whether an attribute on a class was directly defined or inherited. `428 <https://github.com/python-attrs/attrs/issues/428>`_, `635 <https://github.com/python-attrs/attrs/issues/635>`_ - On Python 3, all generated methods now have a docstring explaining that they have been created by ``attrs``. `506 <https://github.com/python-attrs/attrs/issues/506>`_ - It is now possible to prevent ``attrs`` from auto-generating the ``__setstate__`` and ``__getstate__`` methods that are required for pickling of slotted classes. Either pass ``attr.s(getstate_setstate=False)`` or pass ``attr.s(auto_detect=True)`` and implement them yourself: if ``attrs`` finds either of the two methods directly on the decorated class, it assumes implicitly ``getstate_setstate=False`` (and implements neither). This option works with dict classes but should never be necessary. `512 <https://github.com/python-attrs/attrs/issues/512>`_, `513 <https://github.com/python-attrs/attrs/issues/513>`_, `642 <https://github.com/python-attrs/attrs/issues/642>`_ - Fixed a ``ValueError: Cell is empty`` bug that could happen in some rare edge cases. `590 <https://github.com/python-attrs/attrs/issues/590>`_ - ``attrs`` can now automatically detect your own implementations and infer ``init=False``, ``repr=False``, ``eq=False``, ``order=False``, and ``hash=False`` if you set ``attr.s(auto_detect=True)``. ``attrs`` will ignore inherited methods. If the argument implies more than one method (e.g. ``eq=True`` creates both ``__eq__`` and ``__ne__``), it's enough for *one* of them to exist and ``attrs`` will create *neither*. This feature requires Python 3. `607 <https://github.com/python-attrs/attrs/issues/607>`_ - Added ``attr.converters.pipe()``. The feature allows combining multiple conversion callbacks into one by piping the value through all of them, and retuning the last result. As part of this feature, we had to relax the type information for converter callables. `618 <https://github.com/python-attrs/attrs/issues/618>`_ - Fixed serialization behavior of non-slots classes with ``cache_hash=True``. The hash cache will be cleared on operations which make "deep copies" of instances of classes with hash caching, though the cache will not be cleared with shallow copies like those made by ``copy.copy()``. Previously, ``copy.deepcopy()`` or serialization and deserialization with ``pickle`` would result in an un-initialized object. This change also allows the creation of ``cache_hash=True`` classes with a custom ``__setstate__``, which was previously forbidden (`494 <https://github.com/python-attrs/attrs/issues/494>`_). `620 <https://github.com/python-attrs/attrs/issues/620>`_ - It is now possible to specify hooks that are called whenever an attribute is set **after** a class has been instantiated. You can pass ``on_setattr`` both to ``attr.s()`` to set the default for all attributes on a class, and to ``attr.ib()`` to overwrite it for individual attributes. ``attrs`` also comes with a new module ``attr.setters`` that brings helpers that run validators, converters, or allow to freeze a subset of attributes. `645 <https://github.com/python-attrs/attrs/issues/645>`_, `660 <https://github.com/python-attrs/attrs/issues/660>`_ - **Provisional** APIs called ``attr.define()``, ``attr.mutable()``, and ``attr.frozen()`` have been added. They are only available on Python 3.6 and later, and call ``attr.s()`` with different default values. If nothing comes up, they will become the official way for creating classes in 20.2.0 (see above). **Please note** that it may take some time until mypy – and other tools that have dedicated support for ``attrs`` – recognize these new APIs. Please **do not** open issues on our bug tracker, there is nothing we can do about it. `666 <https://github.com/python-attrs/attrs/issues/666>`_ - We have also provisionally added ``attr.field()`` that supplants ``attr.ib()``. It also requires at least Python 3.6 and is keyword-only. Other than that, it only dropped a few arguments, but changed no defaults. As with ``attr.s()``: ``attr.ib()`` is not going anywhere. `669 <https://github.com/python-attrs/attrs/issues/669>`_ ---- ```Links
- PyPI: https://pypi.org/project/attrs - Changelog: https://pyup.io/changelogs/attrs/ - Homepage: https://www.attrs.org/Update Flask-Babel from 1.0.0 to 2.0.0.
Changelog
### 2.0.0 ``` Starting with version 2, flask-babel drops official support for Python2. Python versions 3.5 through 3.9-beta1 are tested and supported, as well as pypy3. - Tests moved from unittest to pytest (163) - Domain and caching support from Flask-BabelEx (163) - Documentation moved from python-hosted to Github Pages. - CI moved from Travisci to Github Actions - Small documentation improvements. - Removed uncessary checks on get_translations() (127, 126) - localeselector and timezoneselector can be changed after creation. ```Links
- PyPI: https://pypi.org/project/flask-babel - Changelog: https://pyup.io/changelogs/flask-babel/ - Repo: http://github.com/python-babel/flask-babel - Docs: https://pythonhosted.org/Flask-Babel/Update inflection from 0.5.0 to 0.5.1.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/inflection - Changelog: https://pyup.io/changelogs/inflection/ - Repo: https://github.com/jpvanhal/inflectionUpdate more-itertools from 8.4.0 to 8.5.0.
Changelog
### 8.5.0 ``` See the [release notes](https://github.com/more-itertools/more-itertools/blob/b0b56acc0669ba77f64a93602355aed50532566a/docs/versions.rst). ```Links
- PyPI: https://pypi.org/project/more-itertools - Changelog: https://pyup.io/changelogs/more-itertools/ - Repo: https://github.com/more-itertools/more-itertools - Docs: https://pythonhosted.org/more-itertools/Update pytest-cov from 2.10.0 to 2.10.1.
Changelog
### 2.10.1 ``` ------------------- * Support for ``pytest-xdist`` 2.0, which breaks compatibility with ``pytest-xdist`` before 1.22.3 (from 2017). Contributed by Zac Hatfield-Dodds in `412 <https://github.com/pytest-dev/pytest-cov/pull/412>`_. * Fixed the ``LocalPath has no attribute startswith`` failure that occurred when using the ``pytester`` plugin in inline mode. ```Links
- PyPI: https://pypi.org/project/pytest-cov - Changelog: https://pyup.io/changelogs/pytest-cov/ - Repo: https://github.com/pytest-dev/pytest-covUpdate pytest-postgresql from 2.4.0 to 2.4.1.
Changelog
### 2.4.1 ``` ---------- - [enhancement] extract NoopExecutor into it's own submodule - [bugfix] Ignore occasional `ProcessFinishedWithError` error on executor exit. - [bugfix] Fixed setting custom password for process fixture - [bugfix] Fix version detection, to allow for two-digit minor version part ```Links
- PyPI: https://pypi.org/project/pytest-postgresql - Changelog: https://pyup.io/changelogs/pytest-postgresql/ - Repo: https://github.com/ClearcodeHQ/pytest-postgresqlUpdate SQLAlchemy from 1.3.18 to 1.3.19.
Changelog
### 1.3.19 ``` :released: August 17, 2020 .. change:: :tags: usecase, py3k :tickets: 5357 Added a ``**kw`` argument to the :meth:`.DeclarativeMeta.__init__` method. This allows a class to support the :pep:`487` metaclass hook ``__init_subclass__``. Pull request courtesy Ewen Gillies. .. change:: :tags: bug, sql :tickets: 5470 Repaired an issue where the "ORDER BY" clause rendering a label name rather than a complete expression, which is particularly important for SQL Server, would fail to occur if the expression were enclosed in a parenthesized grouping in some cases. This case has been added to test support. The change additionally adjusts the "automatically add ORDER BY columns when DISTINCT is present" behavior of ORM query, deprecated in 1.4, to more accurately detect column expressions that are already present. .. change:: :tags: usecase, mysql :tickets: 5481 The MySQL dialect will render FROM DUAL for a SELECT statement that has no FROM clause but has a WHERE clause. This allows things like "SELECT 1 WHERE EXISTS (subquery)" kinds of queries to be used as well as other use cases. .. change:: :tags: bug, mssql, sql :tickets: 5467 Fixed bug where the mssql dialect incorrectly escaped object names that contained ']' character(s). .. change:: :tags: bug, reflection, sqlite, mssql :tickets: 5456 Applied a sweep through all included dialects to ensure names that contain single or double quotes are properly escaped when querying system tables, for all :class:`.Inspector` methods that accept object names as an argument (e.g. table names, view names, etc). SQLite and MSSQL contained two quoting issues that were repaired. .. change:: :tags: bug, mysql :tickets: 5411 Fixed an issue where CREATE TABLE statements were not specifying the COLLATE keyword correctly. .. change:: :tags: bug, datatypes, sql :tickets: 4733 The ``LookupError`` message will now provide the user with up to four possible values that a column is constrained to via the :class:`.Enum`. Values longer than 11 characters will be truncated and replaced with ellipses. Pull request courtesy Ramon Williams. .. change:: :tags: bug, postgresql :tickets: 5476 Fixed issue where the return type for the various RANGE comparison operators would itself be the same RANGE type rather than BOOLEAN, which would cause an undesirable result in the case that a :class:`.TypeDecorator` that defined result-processing behavior were in use. Pull request courtesy Jim Bosch. .. change:: :tags: bug, mysql :tickets: 5493 Added MariaDB code 1927 to the list of "disconnect" codes, as recent MariaDB versions apparently use this code when the database server was stopped. .. change:: :tags: usecase, declarative, orm :tickets: 5513 The name of the virtual column used when using the :class:`_declarative.AbstractConcreteBase` and :class:`_declarative.ConcreteBase` classes can now be customized, to allow for models that have a column that is actually named ``type``. Pull request courtesy Jesse-Bakker. .. change:: :tags: usecase, orm :tickets: 5494 Adjusted the workings of the :meth:`_orm.Mapper.all_orm_descriptors` accessor to represent the attributes in the order that they are located in a deterministic way, assuming the use of Python 3.6 or higher which maintains the sorting order of class attributes based on how they were declared. This sorting is not guaranteed to match the declared order of attributes in all cases however; see the method documentation for the exact scheme. .. change:: :tags: bug, sql :tickets: 5500 Fixed issue where the :paramref:`_engine.Connection.execution_options.schema_translate_map` feature would not take effect when the :meth:`_schema.Sequence.next_value` function function for a :class:`_schema.Sequence` were used in the :paramref:`_schema.Column.server_default` parameter and the create table DDL were emitted. .. changelog:: ```Links
- PyPI: https://pypi.org/project/sqlalchemy - Changelog: https://pyup.io/changelogs/sqlalchemy/ - Homepage: http://www.sqlalchemy.org