Subject: CVS commit: pkgsrc/devel/py-attrs
From: Adam Ciarcinski
Date: 2022-02-23 12:43:41
Message id: 20220223114341.4C753FB24@cvs.NetBSD.org

Log Message:
py-attrs: updated to 21.4.0

21.4.0 (2021-12-29)
-------------------

Changes
^^^^^^^

- Fixed the test suite on PyPy3.8 where ``cloudpickle`` does not work.
- Fixed ``coverage report`` for projects that use ``attrs`` and don't set a \ 
``--source``.

----

21.3.0 (2021-12-28)
-------------------

Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- When using ``@define``, converters are now run by default when setting an \ 
attribute on an instance -- additionally to validators.
  I.e. the new default is ``on_setattr=[attrs.setters.convert, \ 
attrs.setters.validate]``.

  This is unfortunately a breaking change, but it was an oversight, impossible \ 
to raise a ``DeprecationWarning`` about, and it's better to fix it now while the \ 
APIs are very fresh with few users.
- ``import attrs`` has finally landed!
  As of this release, you can finally import ``attrs`` using its proper name.

  Not all names from the ``attr`` namespace have been transferred; most notably \ 
``attr.s`` and ``attr.ib`` are missing.
  See ``attrs.define`` and ``attrs.field`` if you haven't seen our \ 
next-generation APIs yet.
  A more elaborate explanation can be found `On The Core API Names \ 
<https://www.attrs.org/en/latest/names.html>`_

  This feature is at least for one release **provisional**.
  We don't *plan* on changing anything, but such a big change is unlikely to go \ 
perfectly on the first strike.

  The API docs have been mostly updated, but it will be an ongoing effort to \ 
change everything to the new APIs.
  Please note that we have **not** moved -- or even removed -- anything from \ 
``attr``!

  Please do report any bugs or documentation inconsistencies!

Changes
^^^^^^^

- ``attr.asdict(retain_collection_types=False)`` (default) dumps \ 
collection-esque keys as tuples.
- ``__match_args__`` are now generated to support Python 3.10's
  `Structural Pattern Matching \ 
<https://docs.python.org/3.10/whatsnew/3.10.html#pep-634-structural-pattern-matching>`_.
  This can be controlled by the ``match_args`` argument to the class decorators \ 
on Python 3.10 and later.
  On older versions, it is never added and the argument is ignored.
- If the class-level *on_setattr* is set to ``attrs.setters.validate`` (default \ 
in ``@define`` and ``@mutable``) but no field defines a validator, pretend that \ 
it's not set.
- The generated ``__repr__`` is significantly faster on Pythons with f-strings.
- Attributes transformed via ``field_transformer`` are wrapped with \ 
``AttrsClass`` again.
- Generated source code is now cached more efficiently for identical classes.
- Added ``attrs.converters.to_bool()``.
- ``attrs.resolve_types()`` now resolves types of subclasses after the parents \ 
are resolved.
- Added new validators: ``lt(val)`` (< val), ``le(va)`` (≤ val), \ 
``ge(val)`` (≥ val), ``gt(val)`` (> val), and ``maxlen(n)``.
- ``attrs`` classes are now fully compatible with `cloudpickle \ 
<https://github.com/cloudpipe/cloudpickle>`_ (no need to disable ``repr`` \ 
anymore).
- Added new context manager ``attrs.validators.disabled()`` and functions \ 
``attrs.validators.(set|get)_disabled()``.
  They deprecate ``attrs.(set|get)_run_validators()``.
  All functions are interoperable and modify the same internal state.
  They are not – and never were – thread-safe, though.
- ``attrs.validators.matches_re()`` now accepts pre-compiled regular expressions \ 
in addition to pattern strings.

21.2.0 (2021-05-07)
-------------------

Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- We had to revert the recursive feature for ``attr.evolve()`` because it broke \ 
some use-cases -- sorry!
- Python 3.4 is now blocked using packaging metadata because ``attrs`` can't be \ 
imported on it anymore.
  To ensure that 3.4 users can keep installing  ``attrs`` easily, we will `yank \ 
<https://pypi.org/help/#yanked>`_ 21.1.0 from PyPI.
  This has **no** consequences if you pin ``attrs`` to 21.1.0.

21.1.0 (2021-05-06)
-------------------

Deprecations
^^^^^^^^^^^^

- The long-awaited, much-talked-about, little-delivered ``import attrs`` is \ 
finally upon us!

  Since the NG APIs have now been proclaimed stable, the **next** release of \ 
``attrs`` will allow you to actually ``import attrs``.
  We're taking this opportunity to replace some defaults in our APIs that made \ 
sense in 2015, but don't in 2021.

  So please, if you have any pet peeves about defaults in ``attrs``'s APIs, \ 
*now* is the time to air your grievances in 487!
  We're not gonna get such a chance for a second time, without breaking our \ 
backward-compatibility guarantees, or long deprecation cycles.
  Therefore, speak now or forever hold you peace!
- The *cmp* argument to ``attr.s()`` and `attr.ib()` has been **undeprecated**
  It will continue to be supported as syntactic sugar to set *eq* and *order* in \ 
one go.

  I'm terribly sorry for the hassle around this argument!
  The reason we're bringing it back is it's usefulness regarding customization \ 
of equality/ordering.

  The ``cmp`` attribute and argument on ``attr.Attribute`` remains deprecated \ 
and will be removed later this year.

Changes
^^^^^^^

- It's now possible to customize the behavior of ``eq`` and ``order`` by passing \ 
in a callable.
- The instant favorite next-generation APIs are not provisional anymore!

  They are also officially supported by Mypy as of their `0.800 release \ 
<https://mypy-lang.blogspot.com/2021/01/mypy-0800-released.html>`_.

  We hope the next release will already contain an (additional) importable \ 
package called ``attrs``.
- If an attribute defines a converter, the type of its parameter is used as type \ 
annotation for its corresponding ``__init__`` parameter.

  If an ``attr.converters.pipe`` is used, the first one's is used.
- Fixed the creation of an extra slot for an ``attr.ib`` when the parent class \ 
already has a slot with the same name.
- ``__attrs__init__()`` will now be injected if ``init=False``, or if \ 
``auto_detect=True`` and a user-defined ``__init__()`` exists.

  This enables users to do "pre-init" work in their ``__init__()`` \ 
(such as ``super().__init__()``).

  ``__init__()`` can then delegate constructor argument processing to \ 
``self.__attrs_init__(*args, **kwargs)``.
- ``bool(attr.NOTHING)`` is now ``False``.
- It's now possible to use ``super()`` inside of properties of slotted classes.
- Allow for a ``__attrs_pre_init__()`` method that -- if defined -- will get \ 
called at the beginning of the ``attrs``-generated ``__init__()`` method.
- Added forgotten ``attr.Attribute.evolve()`` to type stubs.
- ``attrs.evolve()`` now works recursively with nested ``attrs`` classes.
- Python 3.10 is now officially supported.
- ``attr.resolve_types()`` now takes an optional *attrib* argument to work \ 
inside a ``field_transformer``.
- ``ClassVar``\ s are now also detected if they come from `typing-extensions \ 
<https://pypi.org/project/typing-extensions/>`_.
- To make it easier to customize attribute comparison, we have added the \ 
``attr.cmp_with()`` helper.

  See the `new docs on comparison \ 
<https://www.attrs.org/en/stable/comparison.html>`_ for more details.
- Added **provisional** support for static typing in ``pyright`` via the \ 
`dataclass_transforms specification \ 
<https://github.com/microsoft/pyright/blob/main/specs/dataclass_transforms.md>`_.
  Both the ``pyright`` specification and ``attrs`` implementation may change in \ 
future versions of both projects.

Files:
RevisionActionfile
1.19modifypkgsrc/devel/py-attrs/Makefile
1.8modifypkgsrc/devel/py-attrs/PLIST
1.14modifypkgsrc/devel/py-attrs/distinfo