Path to this page:
Subject: CVS commit: pkgsrc/devel/py-attrs
From: Thomas Klausner
Date: 2023-04-30 15:14:49
Message id: 20230430131449.8064FFA87@cvs.NetBSD.org
Log Message:
py-attrs: update to 23.1.0.
## - 2023-04-16
### Backwards-incompatible Changes
- Python 3.6 has been dropped and packaging switched to static package data using .
### Deprecations
- The support for *zope-interface* via the `attrs.validators.provides` validator \
is now deprecated and will be removed in, or after, April 2024.
The presence of a C-based package in our developement dependencies has caused \
headaches and we're not under the impression it's used a lot.
Let us know if you're using it and we might publish it as a separate package.
### Changes
- `attrs.filters.exclude()` and `attrs.filters.include()` now support the \
passing of attribute names as strings.
- `attrs.has()` and `attrs.fields()` now handle generic classes correctly.
- Fix frozen exception classes when raised within e.g. \
`contextlib.contextmanager`, which mutates their `__traceback__` attributes.
- `@frozen` now works with type checkers that implement .
- Restored ability to unpickle instances pickled before 22.2.0.
- `attrs.asdict()`'s and `attrs.astuple()`'s type stubs now accept the \
`attrs.AttrsInstance` protocol.
- Fix slots class cellvar updating closure in CPython 3.8+ even when `__code__` \
introspection is unavailable.
- `attrs.resolve_types()` can now pass `include_extras` to \
`typing.get_type_hints()` on Python 3.9+, and does so by default.
- Added instructions for pull request workflow to `CONTRIBUTING.md`.
- Added *type* parameter to `attrs.field()` function for use with \
`attrs.make_class()`.
Please note that type checkers ignore type metadata passed into \
`make_class()`, but it can be useful if you're wrapping _attrs_.
- It is now possible for `attrs.evolve()` (and `attr.evolve()`) to change fields \
named `inst` if the instance is passed as a positional argument.
Passing the instance using the `inst` keyword argument is now deprecated and \
will be removed in, or after, April 2024.
- `attrs.validators.optional()` now also accepts a tuple of validators (in \
addition to lists of validators).
## - 2022-12-21
### Backwards-incompatible Changes
- Python 3.5 is not supported anymore.
### Deprecations
- Python 3.6 is now deprecated and support will be removed in the next release.
### Changes
- `attrs.field()` now supports an *alias* option for explicit `__init__` \
argument names.
Get `__init__` signatures matching any taste, peculiar or plain!
The *alias* option can be use to override private attribute name mangling, or \
add other arbitrary field argument name overrides.
- `attrs.NOTHING` is now an enum value, making it possible to use with e.g. .
- Added missing re-import of `attr.AttrsInstance` to the `attrs` namespace.
- Fix slight performance regression in classes with custom `__setattr__` and \
speedup even more.
- Class-creation performance improvements by switching performance-sensitive \
templating operations to f-strings.
You can expect an improvement of about 5% -- even for very simple classes.
- `attrs.has()` is now a for `AttrsInstance`.
That means that type checkers know a class is an instance of an `attrs` class \
if you check it using `attrs.has()` (or `attr.has()`) first.
- Made `attrs.AttrsInstance` stub available at runtime and fixed type errors \
related to the usage of `attrs.AttrsInstance` in *Pyright*.
- On Python 3.10 and later, call on dict classes after creation.
This improves the detection of abstractness.
- *attrs*'s pickling methods now use dicts instead of tuples.
That is safer and more robust across different versions of a class.
- Added `attrs.validators.not_(wrapped_validator)` to logically invert \
*wrapped_validator* by accepting only values where *wrapped_validator* rejects \
the value with a `ValueError` or `TypeError` (by default, exception types \
configurable).
- The type stubs for `attrs.cmp_using()` now have default values.
- To conform with ` now accept *unsafe_hash* in addition to *hash*.
## - 2022-07-28
### Backwards-incompatible Changes
- Python 2.7 is not supported anymore.
Dealing with Python 2.7 tooling has become too difficult for a volunteer-run \
project.
We have supported Python 2 more than 2 years after it was officially \
discontinued and feel that we have paid our dues.
All version up to 21.4.0 from December 2021 remain fully functional, of course.
- The deprecated `cmp` attribute of `attrs.Attribute` has been removed.
This does not affect the *cmp* argument to `attr.s` that can be used as a \
shortcut to set *eq* and *order* at the same time.
### Changes
- Instantiation of frozen slotted classes is now faster.
- If an `eq` key is defined, it is also used before hashing the attribute.
- Added `attrs.validators.min_len()`.
- `attrs.validators.deep_iterable()`'s *member_validator* argument now also \
accepts a list of validators and wraps them in an `attrs.validators.and_()`.
- Added missing type stub re-imports for `attrs.converters` and `attrs.filters`.
- Added missing stub for `attr(s).cmp_using()`.
- `attrs.validators._in()`'s `ValueError` is not missing the attribute, expected \
options, and the value it got anymore.
- Python 3.11 is now officially supported.
Files: