Update dependency attrs to v25.4.0 #790
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.



Note
Mend has cancelled the proposed renaming of the Renovate GitHub app being renamed to
mend[bot].This notice will be removed on 2025-10-07.
This PR contains the following updates:
==25.3.0->==25.4.0Release Notes
python-attrs/attrs (attrs)
v25.4.0Compare Source
Backwards-incompatible Changes
Class-level
kw_only=Truebehavior is now consistent withdataclasses.Previously, a class that sets
kw_only=Truemakes all attributes keyword-only, including those from base classes.If an attribute sets
kw_only=False, that setting is ignored, and it is still made keyword-only.Now, only the attributes defined in that class that doesn't explicitly set
kw_only=Falseare made keyword-only.This shouldn't be a problem for most users, unless you have a pattern like this:
Here, we have a
kw_only=Trueattrs class (Base) with an attribute that setskw_only=Falseand has a default (Base.b), and then create a subclass (Subclass) with required arguments (Subclass.c).Previously this would work, since it would make
Base.bkeyword-only, but now this fails sinceBase.bis positional, and we have a required positional argument (Subclass.c) following another argument with defaults.#1457
Changes
Values passed to the
__init__()method ofattrsclasses are now correctly passed to__attrs_pre_init__()instead of their default values (in cases where kw_only was not specified).#1427
Added support for Python 3.14 and PEP 749.
#1446,
#1451
attrs.validators.deep_mapping()now allows to leave out either key_validator xor value_validator.#1448
attrs.validators.deep_iterator()andattrs.validators.deep_mapping()now accept lists and tuples for all validators and wrap them into aattrs.validators.and_().#1449
Added a new experimental way to inspect classes:
attrs.inspect(cls)returns the effective class-wide parameters that were used by attrs to construct the class.The returned class is the same data structure that attrs uses internally to decide how to construct the final class.
#1454
Fixed annotations for
attrs.field(converter=...).Previously, a
tupleof converters was only accepted if it had exactly one element.#1461
The performance of
attrs.asdict()has been improved by 45–260%.#1463
The performance of
attrs.astuple()has been improved by 49–270%.#1469
The type annotation for
attrs.validators.or_()now allows for different types of validators.This was only an issue on Pyright.
#1474
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.