Skip to content

Conversation

renovate-bot
Copy link
Contributor

@renovate-bot renovate-bot commented Feb 25, 2025

This PR contains the following updates:

Package Change Age Confidence
attrs (changelog) ==23.2.0 -> ==25.4.0 age confidence

Release Notes

python-attrs/attrs (attrs)

v25.4.0

Compare Source

Backwards-incompatible Changes
  • Class-level kw_only=True behavior is now consistent with dataclasses.

    Previously, a class that sets kw_only=True makes 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=False are made keyword-only.

    This shouldn't be a problem for most users, unless you have a pattern like this:

    @​attrs.define(kw_only=True)
    class Base:
        a: int
        b: int = attrs.field(default=1, kw_only=False)
    
    @​attrs.define
    class Subclass(Base):
        c: int

    Here, we have a kw_only=True attrs class (Base) with an attribute that sets kw_only=False and 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.b keyword-only, but now this fails since Base.b is positional, and we have a required positional argument (Subclass.c) following another argument with defaults.
    #​1457

Changes
  • Values passed to the __init__() method of attrs classes 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() and attrs.validators.deep_mapping() now accept lists and tuples for all validators and wrap them into a attrs.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 tuple of 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

v25.3.0

Compare Source

Changes
  • Restore support for generator-based field_transformers.
    #​1417

v25.2.0

Compare Source

Changes
  • Checking mandatory vs non-mandatory attribute order is now performed after the field transformer, since the field transformer may change attributes and/or their order.
    #​1147
  • attrs.make_class() now allows for Unicode class names.
    #​1406
  • Speed up class creation by 30%-50% by compiling methods only once and using a variety of other techniques.
    #​1407
  • The error message if an attribute has both an annotation and a type argument will now disclose what attribute seems to be the problem.
    #​1410

v25.1.0

Compare Source

Changes
  • This release only ensures correct PyPI licensing metadata.
    #​1386

v24.3.0

Compare Source

Backwards-incompatible Changes
Changes
  • Introduce attrs.NothingType, for annotating types consistent with attrs.NOTHING.
    #​1358
  • Allow mutating __suppress_context__ and __notes__ on frozen exceptions.
    #​1365
  • attrs.converters.optional() works again when taking attrs.converters.pipe() or another Converter as its argument.
    #​1372
  • attrs instances now support copy.replace().
    #​1383
  • attrs.validators.instance_of()'s type hints now allow for union types.
    For example: instance_of(str | int)
    #​1385

v24.2.0

Compare Source

Deprecations
  • Given the amount of warnings raised in the broader ecosystem, we've decided to only soft-deprecate the hash argument to @define / @attr.s.
    Please don't use it in new code, but we don't intend to remove it anymore.
    #​1330
Changes
  • attrs.converters.pipe() (and its syntactic sugar of passing a list for attrs.field()'s / attr.ib()'s converter argument) works again when passing attrs.setters.convert to on_setattr (which is default for attrs.define).
    #​1328
  • Restored support for PEP 649 / 749-implementing Pythons -- currently 3.14-dev.
    #​1329

v24.1.0

Compare Source

Backwards-incompatible Changes
  • attrs.evolve() doesn't accept the inst argument as a keyword argument anymore.
    Pass it as the first positional argument instead.
    #​1264

  • attrs.validators.provides() has been removed.
    The removed code is available as a gist for convenient copy and pasting.
    #​1265

  • All packaging metadata except from __version__ and __version_info__ has been removed from the attr and attrs modules (for example, attrs.__url__).

    Please use importlib.metadata or importlib-metadata instead.
    #​1268

  • The generated __eq__ methods have been sped up significantly by generating a chain of attribute comparisons instead of constructing and comparing tuples.
    This change arguably makes the behavior more correct,
    but changes it if an attribute compares equal by identity but not value, like float('nan').
    #​1310

Deprecations
  • The repr_ns argument to attr.s is now deprecated.
    It was a workaround for nested classes in Python 2 and is pointless in Python 3.
    #​1263
  • The hash argument to @attr.s, @attrs.define, and make_class() is now deprecated in favor of unsafe_hash, as defined by PEP 681.
    #​1323
Changes
  • Allow original slotted functools.cached_property classes to be cleaned by garbage collection.
    Allow super() calls in slotted cached properties.
    #​1221

  • Our type stubs now use modern type notation and are organized such that VS Code's quick-fix prefers the attrs namespace.
    #​1234

  • Preserve AttributeError raised by properties of slotted classes with functools.cached_properties.
    #​1253

  • It is now possible to wrap a converter into an attrs.Converter and get the current instance and/or the current field definition passed into the converter callable.

    Note that this is not supported by any type checker, yet.
    #​1267

  • attrs.make_class() now populates the __annotations__ dict of the generated class, so that attrs.resolve_types() can resolve them.
    #​1285

  • Added the attrs.validators.or_() validator.
    #​1303

  • The combination of a __attrs_pre_init__ that takes arguments, a kw-only field, and a default on that field does not crash anymore.
    #​1319

  • attrs.validators.in_() now transforms certain unhashable options to tuples to keep the field hashable.

    This allows fields that use this validator to be used with, for example, attrs.filters.include().
    #​1320

  • If a class has an inherited method called __attrs_init_subclass__, it is now called once the class is done assembling.

    This is a replacement for Python's __init_subclass__ and useful for registering classes, and similar.
    #​1321


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate-bot renovate-bot requested a review from a team as a code owner February 25, 2025 03:44
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Feb 25, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Feb 25, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Mar 12, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Mar 12, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Mar 13, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Mar 13, 2025
@renovate-bot renovate-bot force-pushed the renovate/attrs-25.x branch from 3fecb7b to 015cf81 Compare May 28, 2025 10:21
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 28, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 28, 2025
@renovate-bot renovate-bot force-pushed the renovate/attrs-25.x branch from 015cf81 to e4b3f3c Compare May 28, 2025 22:36
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 28, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 28, 2025
@renovate-bot renovate-bot force-pushed the renovate/attrs-25.x branch from e4b3f3c to 2a1179e Compare May 29, 2025 07:52
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 29, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 29, 2025
@renovate-bot renovate-bot force-pushed the renovate/attrs-25.x branch from 2a1179e to d8d17d1 Compare May 29, 2025 15:31
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 29, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 29, 2025
@renovate-bot renovate-bot force-pushed the renovate/attrs-25.x branch from d8d17d1 to 835df90 Compare May 30, 2025 03:22
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 30, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 30, 2025
@renovate-bot renovate-bot force-pushed the renovate/attrs-25.x branch from 835df90 to 9e6d064 Compare May 30, 2025 12:24
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 30, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 30, 2025
@renovate-bot renovate-bot force-pushed the renovate/attrs-25.x branch from 9e6d064 to c76abfa Compare May 31, 2025 02:31
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 31, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label May 31, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 24, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 24, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 24, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 24, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 24, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 24, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 25, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 25, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 25, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 25, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 25, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 25, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 26, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 26, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 26, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 26, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 27, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Aug 27, 2025
@trusted-contributions-gcf trusted-contributions-gcf bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 6, 2025
@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants