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.
This PR contains the following updates:
>=21.4.0,<23
->>=24.3,<25
Release Notes
python-attrs/attrs (attrs)
v24.3.0
Compare Source
Backwards-incompatible Changes
#1340
Changes
attrs.NothingType
, for annotating types consistent withattrs.NOTHING
.#1358
__suppress_context__
and__notes__
on frozen exceptions.#1365
attrs.converters.optional()
works again when takingattrs.converters.pipe()
or another Converter as its argument.#1372
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
@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 forattrs.field()
's /attr.ib()
's converter argument) works again when passingattrs.setters.convert
to on_setattr (which is default forattrs.define
).#1328
#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 theattr
andattrs
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
attr.s
is now deprecated.It was a workaround for nested classes in Python 2 and is pointless in Python 3.
#1263
@attr.s
,@attrs.define
, andmake_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 withfunctools.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 thatattrs.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
v23.2.0
Compare Source
Changes
attrs.resolve_types()
is now correct.#1141
typing.dataclass_transform
to decorate dataclass-like decorators, instead of the non-standard__dataclass_transform__
special form, which is only supported by Pyright.#1158
attrs.asdict/astuple()
withretain_collection_types=True
.#1165
attrs.AttrsInstance
is now atyping.Protocol
in both type hints and code.This allows you to subclass it along with another
Protocol
.#1172
__attrs_pre_init__
accepts more than justself
, it will call it with the same arguments as__init__
was called.This allows you to, for example, pass arguments to
super().__init__()
.#1187
functools.cached_property
decorated methods to support equivalent semantics.#1200
attrs.make_class()
to provide additional attributes for newly created classes.It is, for example, now possible to attach methods.
#1203
v23.1.0
Compare Source
Backwards-incompatible Changes
#993
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 development 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.
#1120
Changes
attrs.filters.exclude()
andattrs.filters.include()
now support the passing of attribute names as strings.#1068
attrs.has()
andattrs.fields()
now handle generic classes correctly.#1079
Fix frozen exception classes when raised within, for example,
contextlib.contextmanager
, which mutates their__traceback__
attributes.#1081
@frozen
now works with type checkers that implement PEP-681 (ex. pyright).#1084
Restored ability to unpickle instances pickled before 22.2.0.
#1085
attrs.asdict()
's andattrs.astuple()
's type stubs now accept theattrs.AttrsInstance
protocol.#1090
Fix slots class cellvar updating closure in CPython 3.8+ even when
__code__
introspection is unavailable.#1092
attrs.resolve_types()
can now passinclude_extras
totyping.get_type_hints()
on Python 3.9+, and does so by default.#1099
Added instructions for pull request workflow to
CONTRIBUTING.md
.#1105
Added type parameter to
attrs.field()
function for use withattrs.make_class()
.Please note that type checkers ignore type metadata passed into
make_class()
, but it can be useful if you're wrapping attrs.#1107
It is now possible for
attrs.evolve()
(andattr.evolve()
) to change fields namedinst
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.#1117
attrs.validators.optional()
now also accepts a tuple of validators (in addition to lists of validators).#1122
Configuration
📅 Schedule: Branch creation - "after 5am on saturday" (UTC), 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.
To execute skipped test pipelines write comment
/ok-to-test
.This PR has been generated by MintMaker (powered by Renovate Bot).