Skip to content

Bump attrs from 24.2.0 to 25.4.0#92

Merged
erikjohnston merged 1 commit intomainfrom
dependabot/pip/attrs-25.4.0
Apr 13, 2026
Merged

Bump attrs from 24.2.0 to 25.4.0#92
erikjohnston merged 1 commit intomainfrom
dependabot/pip/attrs-25.4.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot bot commented on behalf of github Apr 1, 2026

Bumps attrs from 24.2.0 to 25.4.0.

Release notes

Sourced from attrs's releases.

25.4.0

Highlights

The main reason for this release (and why it's published today) is that it ships the first pieces of work for Python 3.14 and PEP 749. There will be more work required and there's going to be a lot more churn once everyone starts testing 3.14 earnestly. We hope to receive more feedback before spending more time on this.

Full changelog below!

Special Thanks

This release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If you would like to join them, go to https://github.com/sponsors/hynek and check out the sweet perks!

Above and Beyond

Variomedia AG (@variomedia), Tidelift (@tidelift), Privacy Solutions GmbH (@privacy-solutions), Quesma (@​QuesmaOrg), FilePreviews (@filepreviews), Doist (@Doist), Daniel Fortunov (@asqui), and Kevin P. Fleming (@kpfleming).

Maintenance Sustainers

Buttondown (@buttondown), Christopher Dignam (@chdsbd), Magnus Watn (@magnuswatn), David Cramer (@dcramer), Jesse Snyder (@jessesnyder), Rivo Laks (@rivol), Polar (@polarsource), Mike Fiedler (@miketheman), Duncan Hill (@cricalix), Colin Marquardt (@cmarqu), Pieter Swinkels (@swinkels), Nick Libertini (@libertininick), Brian M. Dennis (@crossjam), Celebrity News AG (@celebritynewsag), The Westervelt Company (@westerveltco), Sławomir Ehlert (@slafs), Mostafa Khalil (@khadrawy), Filip Mularczyk (@mukiblejlok), Thomas Klinger (@thmsklngr), Andreas Poehlmann (@ap--), August Trapper Bigelow (@atbigelow), Carlton Gibson (@carltongibson), and Roboflow (@roboflow).

Full Changelog

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

... (truncated)

Changelog

Sourced from attrs's changelog.

25.4.0 - 2025-10-06

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%.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

@dependabot dependabot bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Apr 1, 2026
@dependabot dependabot bot requested a review from a team as a code owner April 1, 2026 15:44
@anoadragon453 anoadragon453 marked this pull request as draft April 2, 2026 16:29
@anoadragon453
Copy link
Copy Markdown
Member

CI is currently failing. Blocked on #87

@anoadragon453
Copy link
Copy Markdown
Member

@dependabot recreate to incorporate #87

@dependabot dependabot bot force-pushed the dependabot/pip/attrs-25.4.0 branch from 1323cf2 to 4c2f9e5 Compare April 7, 2026 13:07
Bumps [attrs](https://github.com/python-attrs/attrs) from 24.2.0 to 25.4.0.
- [Release notes](https://github.com/python-attrs/attrs/releases)
- [Changelog](https://github.com/python-attrs/attrs/blob/main/CHANGELOG.md)
- [Commits](python-attrs/attrs@24.2.0...25.4.0)

---
updated-dependencies:
- dependency-name: attrs
  dependency-version: 25.4.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/pip/attrs-25.4.0 branch from 4c2f9e5 to 266b52f Compare April 7, 2026 14:50
@erikjohnston erikjohnston marked this pull request as ready for review April 13, 2026 09:37
@erikjohnston erikjohnston merged commit 7b0fce5 into main Apr 13, 2026
6 checks passed
@erikjohnston erikjohnston deleted the dependabot/pip/attrs-25.4.0 branch April 13, 2026 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants