diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f60e83eb7..4f86e49ad 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,16 +4,75 @@ Changelog Versions follow `CalVer `_ with a strict backwards compatibility policy. The third digit is only for regressions. -Changes for the upcoming release can be found in the `"changelog.d" directory `_ in our repository. +.. towncrier release notes start + +19.2.0 (2019-10-01) +------------------- -.. - Do *NOT* add changelog entries here! +Backward-incompatible Changes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - This changelog is managed by towncrier and is compiled at release time. +- Removed deprecated ``Attribute`` attribute ``convert`` per scheduled removal on 2019/1. + This planned deprecation is tracked in issue `#307 `_. + `#504 `_ +- ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` do not consider subclasses comparable anymore. - See https://www.attrs.org/en/latest/contributing.html#changelog for details. + This has been deprecated since 18.2.0 and was raising a ``DeprecationWarning`` for over a year. + `#570 `_ + + +Deprecations +^^^^^^^^^^^^ + +- The ``cmp`` argument to ``attr.s()`` and ``attr.ib()`` is now deprecated. + + Please use ``eq`` to add equality methods (``__eq__`` and ``__ne__``) and ``order`` to add ordering methods (``__lt__``, ``__le__``, ``__gt__``, and ``__ge__``) instead – just like with `dataclasses `_. + + Both are effectively ``True`` by default but it's enough to set ``eq=False`` to disable both at once. + Passing ``eq=False, order=True`` explicitly will raise a ``ValueError`` though. + + Since this is arguably a deeper backward-compatibility break, it will have an extended deprecation period until 2021-06-01. + After that day, the ``cmp`` argument will be removed. + + ``attr.Attribute`` also isn't orderable anymore. + `#574 `_ + + +Changes +^^^^^^^ + +- Updated ``attr.validators.__all__`` to include new validators added in `#425 `_. + `#517 `_ +- Slotted classes now use a pure Python mechanism to rewrite the ``__class__`` cell when rebuilding the class, so ``super()`` works even on environments where ``ctypes`` is not installed. + `#522 `_ +- When collecting attributes using ``@attr.s(auto_attribs=True)``, attributes with a default of ``None`` are now deleted too. + `#523 `_, + `#556 `_ +- Fixed ``attr.validators.deep_iterable()`` and ``attr.validators.deep_mapping()`` type stubs. + `#533 `_ +- ``attr.validators.is_callable()`` validator now raises an exception ``attr.exceptions.NotCallableError``, a subclass of ``TypeError``, informing the received value. + `#536 `_. + `#536 `_ +- ``@attr.s(auto_exc=True)`` now generates classes that are hashable by ID, as the documentation always claimed it would. + `#543 `_, + `#563 `_ +- Added ``attr.validators.matches_re()`` that checks string attributes whether they match a regular expression. + `#552 `_ +- Keyword-only attributes (``kw_only=True``) and attributes that are excluded from the ``attrs``'s ``__init__`` (``init=False``) now can appear before mandatory attributes. + `#559 `_ +- The fake filename for generated methods is now more stable. + It won't change when you restart the process. + `#560 `_ +- The value passed to ``@attr.ib(repr=…)`` can now be either a boolean (as before) or a callable. + That callable must return a string and is then used for formatting the attribute by the generated ``__repr__()`` method. + `#568 `_ +- Added ``attr.__version_info__`` that can be used to reliably check the version of ``attrs`` and write forward- and backward-compatible code. + Please check out the `section on deprecated APIs `_ on how to use it. + `#580 `_ + + +---- -.. towncrier release notes start 19.1.0 (2019-03-03) ------------------- diff --git a/changelog.d/504.breaking.rst b/changelog.d/504.breaking.rst deleted file mode 100644 index d68c4a7d4..000000000 --- a/changelog.d/504.breaking.rst +++ /dev/null @@ -1,2 +0,0 @@ -Removed deprecated ``Attribute`` attribute ``convert`` per scheduled removal on 2019/1. -This planned deprecation is tracked in issue `#307 `_. diff --git a/changelog.d/517.change.rst b/changelog.d/517.change.rst deleted file mode 100644 index 50d3e33dd..000000000 --- a/changelog.d/517.change.rst +++ /dev/null @@ -1 +0,0 @@ -Updated ``attr.validators.__all__`` to include new validators added in `#425 `_. diff --git a/changelog.d/522.change.rst b/changelog.d/522.change.rst deleted file mode 100644 index 4b827e8fa..000000000 --- a/changelog.d/522.change.rst +++ /dev/null @@ -1 +0,0 @@ -Slotted classes now use a pure Python mechanism to rewrite the ``__class__`` cell when rebuilding the class, so ``super()`` works even on environments where ``ctypes`` is not installed. diff --git a/changelog.d/523.change.rst b/changelog.d/523.change.rst deleted file mode 100644 index 86bf8cdac..000000000 --- a/changelog.d/523.change.rst +++ /dev/null @@ -1 +0,0 @@ -When collecting attributes using ``@attr.s(auto_attribs=True)``, attributes with a default of ``None`` are now deleted too. diff --git a/changelog.d/533.change.rst b/changelog.d/533.change.rst deleted file mode 100644 index 3365ed00a..000000000 --- a/changelog.d/533.change.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed ``attr.validators.deep_iterable()`` and ``attr.validators.deep_mapping()`` type stubs. diff --git a/changelog.d/536.change.rst b/changelog.d/536.change.rst deleted file mode 100644 index 71f96a3f0..000000000 --- a/changelog.d/536.change.rst +++ /dev/null @@ -1,2 +0,0 @@ -``attr.validators.is_callable()`` validator now raises an exception ``attr.exceptions.NotCallableError``, a subclass of ``TypeError``, informing the received value. -`#536 `_. diff --git a/changelog.d/543.change.rst b/changelog.d/543.change.rst deleted file mode 100644 index 906275efa..000000000 --- a/changelog.d/543.change.rst +++ /dev/null @@ -1 +0,0 @@ -``@attr.s(auto_exc=True)`` now generates classes that are hashable by ID, as the documentation always claimed it would. diff --git a/changelog.d/552.change.rst b/changelog.d/552.change.rst deleted file mode 100644 index e33c5dcd9..000000000 --- a/changelog.d/552.change.rst +++ /dev/null @@ -1 +0,0 @@ -Added ``attr.validators.matches_re()`` that checks string attributes whether they match a regular expression. diff --git a/changelog.d/556.change.rst b/changelog.d/556.change.rst deleted file mode 100644 index 86bf8cdac..000000000 --- a/changelog.d/556.change.rst +++ /dev/null @@ -1 +0,0 @@ -When collecting attributes using ``@attr.s(auto_attribs=True)``, attributes with a default of ``None`` are now deleted too. diff --git a/changelog.d/559.change.rst b/changelog.d/559.change.rst deleted file mode 100644 index 66498c387..000000000 --- a/changelog.d/559.change.rst +++ /dev/null @@ -1 +0,0 @@ -Keyword-only attributes (``kw_only=True``) and attributes that are excluded from the ``attrs``'s ``__init__`` (``init=False``) now can appear before mandatory attributes. diff --git a/changelog.d/560.change.rst b/changelog.d/560.change.rst deleted file mode 100644 index 2183305d9..000000000 --- a/changelog.d/560.change.rst +++ /dev/null @@ -1,2 +0,0 @@ -The fake filename for generated methods is now more stable. -It won't change when you restart the process. diff --git a/changelog.d/563.change.rst b/changelog.d/563.change.rst deleted file mode 100644 index 906275efa..000000000 --- a/changelog.d/563.change.rst +++ /dev/null @@ -1 +0,0 @@ -``@attr.s(auto_exc=True)`` now generates classes that are hashable by ID, as the documentation always claimed it would. diff --git a/changelog.d/568.change.rst b/changelog.d/568.change.rst deleted file mode 100644 index 320491019..000000000 --- a/changelog.d/568.change.rst +++ /dev/null @@ -1,2 +0,0 @@ -The value passed to ``@attr.ib(repr=…)`` can now be either a boolean (as before) or a callable. -That callable must return a string and is then used for formatting the attribute by the generated ``__repr__()`` method. diff --git a/changelog.d/570.breaking.rst b/changelog.d/570.breaking.rst deleted file mode 100644 index 21cc77997..000000000 --- a/changelog.d/570.breaking.rst +++ /dev/null @@ -1,3 +0,0 @@ -``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` do not consider subclasses comparable anymore. - -This has been deprecated since 18.2.0 and was raising a ``DeprecationWarning`` for over a year. diff --git a/changelog.d/574.deprecation.rst b/changelog.d/574.deprecation.rst deleted file mode 100644 index 130fe4d93..000000000 --- a/changelog.d/574.deprecation.rst +++ /dev/null @@ -1,11 +0,0 @@ -The ``cmp`` argument to ``attr.s()`` and ``attr.ib()`` is now deprecated. - -Please use ``eq`` to add equality methods (``__eq__`` and ``__ne__``) and ``order`` to add ordering methods (``__lt__``, ``__le__``, ``__gt__``, and ``__ge__``) instead – just like with `dataclasses `_. - -Both are effectively ``True`` by default but it's enough to set ``eq=False`` to disable both at once. -Passing ``eq=False, order=True`` explicitly will raise a ``ValueError`` though. - -Since this is arguably a deeper backward-compatibility break, it will have an extended deprecation period until 2021-06-01. -After that day, the ``cmp`` argument will be removed. - -``attr.Attribute`` also isn't orderable anymore. diff --git a/changelog.d/580.change.rst b/changelog.d/580.change.rst deleted file mode 100644 index 74a993457..000000000 --- a/changelog.d/580.change.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added ``attr.__version_info__`` that can be used to reliably check the version of ``attrs`` and write forward- and backward-compatible code. -Please check out the `section on deprecated APIs `_ on how to use it. diff --git a/docs/extending.rst b/docs/extending.rst index 4ee201ed3..c92e1fd9e 100644 --- a/docs/extending.rst +++ b/docs/extending.rst @@ -42,7 +42,7 @@ Wrapping the Decorator A more elegant way can be to wrap ``attrs`` altogether and build a class `DSL `_ on top of it. -An example for that is the package `environ_config `_ that uses ``attrs`` under the hood to define environment-based configurations declaratively without exposing ``attrs`` APIs at all. +An example for that is the package `environ-config `_ that uses ``attrs`` under the hood to define environment-based configurations declaratively without exposing ``attrs`` APIs at all. Types diff --git a/src/attr/__init__.py b/src/attr/__init__.py index c28f0568b..66ce10920 100644 --- a/src/attr/__init__.py +++ b/src/attr/__init__.py @@ -19,7 +19,7 @@ from ._version import VersionInfo -__version__ = "19.2.0.dev0" +__version__ = "19.2.0" __version_info__ = VersionInfo._from_version_string(__version__) __title__ = "attrs"