From bfb0a2dfc0404a64dbbd7f68cb34c8943178abc3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 6 Oct 2025 20:12:04 +0200 Subject: [PATCH] fix(deps): update dependency attrs to v25.4.0 (#381) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [attrs](https://github.com/python-attrs/attrs) ([changelog](https://www.attrs.org/en/stable/changelog.html)) | `==25.3.0` -> `==25.4.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/attrs/25.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/attrs/25.3.0/25.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
python-attrs/attrs (attrs) ### [`v25.4.0`](https://github.com/python-attrs/attrs/blob/HEAD/CHANGELOG.md#2540---2025-10-06) [Compare Source](https://github.com/python-attrs/attrs/compare/25.3.0...25.4.0) ##### 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: ```python @​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](https://github.com/python-attrs/attrs/issues/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](https://github.com/python-attrs/attrs/issues/1427) - Added support for Python 3.14 and [PEP 749](https://peps.python.org/pep-0749/). [#​1446](https://github.com/python-attrs/attrs/issues/1446), [#​1451](https://github.com/python-attrs/attrs/issues/1451) - `attrs.validators.deep_mapping()` now allows to leave out either *key\_validator* xor *value\_validator*. [#​1448](https://github.com/python-attrs/attrs/issues/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](https://github.com/python-attrs/attrs/issues/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](https://github.com/python-attrs/attrs/issues/1454) - Fixed annotations for `attrs.field(converter=...)`. Previously, a `tuple` of converters was only accepted if it had exactly one element. [#​1461](https://github.com/python-attrs/attrs/issues/1461) - The performance of `attrs.asdict()` has been improved by 45–260%. [#​1463](https://github.com/python-attrs/attrs/issues/1463) - The performance of `attrs.astuple()` has been improved by 49–270%. [#​1469](https://github.com/python-attrs/attrs/issues/1469) - The type annotation for `attrs.validators.or_()` now allows for different types of validators. This was only an issue on Pyright. [#​1474](https://github.com/python-attrs/attrs/issues/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 is behind base branch, 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 has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Reviewed-on: https://git.tainton.uk/repos/pypilot/pulls/381 Co-authored-by: renovate[bot] Co-committed-by: renovate[bot] --- pyproject.toml | 2 +- uv.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 52a94b3..64cfcbc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ authors = [ requires-python = "<4.0,>=3.11" dependencies = [ "astroid==3.3.11", - "attrs==25.3.0", + "attrs==25.4.0", "certifi==2025.10.5", "charset-normalizer==3.4.3", "click==8.3.0", diff --git a/uv.lock b/uv.lock index 13f5e69..2befa3d 100644 --- a/uv.lock +++ b/uv.lock @@ -17,11 +17,11 @@ wheels = [ [[package]] name = "attrs" -version = "25.3.0" +version = "25.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, ] [[package]] @@ -307,7 +307,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "astroid", specifier = "==3.3.11" }, - { name = "attrs", specifier = "==25.3.0" }, + { name = "attrs", specifier = "==25.4.0" }, { name = "certifi", specifier = "==2025.10.5" }, { name = "charset-normalizer", specifier = "==3.4.3" }, { name = "click", specifier = "==8.3.0" },