chore(deps): update dependency attrs to v26 - #66
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
|
Review Skipped - Label Excluded |
renovate
Bot
force-pushed
the
renovate/attrs-26.x
branch
from
August 28, 2026 20:32
d48b3f2 to
4bcb3f1
Compare
auto-merge was automatically disabled
August 30, 2026 18:39
Pull request was closed
renovate
Bot
force-pushed
the
renovate/attrs-26.x
branch
from
September 1, 2026 09:44
17aa97d to
4bcb3f1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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:
==18.2.0→==26.1.0Release Notes
python-attrs/attrs (attrs)
v26.1.0Compare Source
Backwards-incompatible Changes
field_transformer, so transformers receive fully populatedAttributeobjects with usablealiasvalues instead ofNone.The new
Attribute.alias_is_defaultflag indicates whether the alias was auto-generated (True) or explicitly set by the user (False).#1509
Changes
attrs.validators.optional(), so it no longer rejects tuples with more than one validator.#1496
attrs.validators.disabled()contextmanager can now be nested.#1513
on_setattr=attrs.setters.NO_OPin addition toNone.#1515
attrs.fields().#1529
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
v25.3.0Compare Source
Changes
field_transformers.#1417
v25.2.0Compare Source
Changes
#1147
attrs.make_class()now allows for Unicode class names.#1406
#1407
#1410
v25.1.0Compare Source
Changes
#1386
v24.3.0Compare 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.0Compare 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.convertto on_setattr (which is default forattrs.define).#1328
#1329
v24.1.0Compare 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 theattrandattrsmodules (for example,attrs.__url__).Please use
importlib.metadataor 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.sis 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_propertyclasses 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
attrsnamespace.#1234
Preserve
AttributeErrorraised by properties of slotted classes withfunctools.cached_properties.#1253
It is now possible to wrap a converter into an
attrs.Converterand 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.0Compare Source
Changes
attrs.resolve_types()is now correct.#1141
typing.dataclass_transformto 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.AttrsInstanceis now atyping.Protocolin 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_propertydecorated 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.0Compare Source
Backwards-incompatible Changes
#993
Deprecations
The support for zope-interface via the
attrs.validators.providesvalidator 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
@frozennow 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.AttrsInstanceprotocol.#1090
Fix slots class cellvar updating closure in CPython 3.8+ even when
__code__introspection is unavailable.#1092
attrs.resolve_types()can now passinclude_extrastotyping.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 namedinstif the instance is passed as a positional argument.Passing the instance using the
instkeyword 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
v22.2.0Compare Source
Backwards-incompatible Changes
#988
Deprecations
#1017
Changes
attrs.field()now supports an alias option for explicit__init__argument names.Get
__init__signatures matching any taste, peculiar or plain!The PEP 681 compatible alias option can be use to override private attribute name mangling, or add other arbitrary field argument name overrides.
#950
attrs.NOTHINGis now an enum value, making it possible to use with, for example,typing.Literal.#983
Added missing re-import of
attr.AttrsInstanceto theattrsnamespace.#987
Fix slight performance regression in classes with custom
__setattr__and speedup even more.#991
Class-creation performance improvements by switching performance-sensitive templating operations to f-strings.
You can expect an improvement of about 5% -- even for very simple classes.
#995
attrs.has()is now aTypeGuardforAttrsInstance.That means that type checkers know a class is an instance of an
attrsclass if you check it usingattrs.has()(orattr.has()) first.#997
Made
attrs.AttrsInstancestub available at runtime and fixed type errors related to the usage ofattrs.AttrsInstancein Pyright.#999
On Python 3.10 and later, call
abc.update_abstractmethods()on dict classes after creation.This improves the detection of abstractness.
#1001
attrs's pickling methods now use dicts instead of tuples.
That is safer and more robust across different versions of a class.
#1009
Added
attrs.validators.not_(wrapped_validator)to logically invert wrapped_validator by accepting only values where wrapped_validator rejects the value with aValueErrororTypeError(by default, exception types configurable).#1010
The type stubs for
attrs.cmp_using()now have default values.#1027
To conform with PEP 681,
attr.s()andattrs.define()now accept unsafe_hash in addition to hash.#1065
v22.1.0Compare Source
Backwards-incompatible Changes
Python 2.7 is not supported anymore.
Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project.
We have supported Python 2 more than 2 years after it was officially discontinued and feel that we have paid our dues.
All version up to 21.4.0 from December 2021 remain fully functional, of course.
#936
The deprecated
cmpattribute ofattrs.Attributehas been removed.This does not affect the cmp argument to
attr.sthat can be used as a shortcut to set eq and order at the same time.#939
Changes
#898
eqkey is defined, it is also used before hashing the attribute.#909
attrs.validators.min_len().#916
attrs.validators.deep_iterable()'s member_validator argument now also accepts a list of validators and wraps them in anattrs.validators.and_().#925
attrs.convertersandattrs.filters.#931
attr(s).cmp_using().#949
attrs.validators._in()'sValueErroris not missing the attribute, expected options, and the value it got anymore.#951
#969
v21.4.0Compare Source
Changes
cloudpickledoes not work.#892
coverage reportfor projects that useattrsand don't set a--source.#895,
#896
v21.3.0Compare Source
Backward-incompatible Changes
When using
@define, converters are now run by default when setting an attribute on an instance -- additionally to validators.Meaning: the new default is
on_setattr=[attrs.setters.convert, attrs.setters.validate].This is unfortunately a breaking change, but it was an oversight, impossible to raise a
DeprecationWarningabout, and it's better to fix it now while the APIs are very fresh with few users.#835,
#886
import attrshas finally landed!As of this release, you can finally import
attrsusing its proper name.Not all names from the
attrnamespace have been transferred; most notablyattr.sandattr.ibare missing.See
attrs.defineandattrs.fieldif you haven't seen our next-generation APIs yet.A more elaborate explanation can be found On The Core API Names
This feature is at least for one release provisional.
We don't plan on changing anything, but such a big change is unlikely to go perfectly on the first strike.
The API docs have been mostly updated, but it will be an ongoing effort to change everything to the new APIs.
Please note that we have not moved -- or even removed -- anything from
attr!Please do report any bugs or documentation inconsistencies!
#887
Changes
attr.asdict(retain_collection_types=False)(default) dumps collection-esque keys as tuples.#646,
#888
__match_args__are now generated to support Python 3.10'sStructural Pattern Matching.
This can be controlled by the
match_argsargument to the class decorators on Python 3.10 and later.On older versions, it is never added and the argument is ignored.
#815
attrs.setters.validate(default in@defineand@mutable) but no field defines a validator, pretend that it's not set.#817
__repr__is significantly faster on Pythons with f-strings.#819
field_transformerare wrapped withAttrsClassagain.#824
#828
attrs.converters.to_bool().#830
attrs.resolve_types()now resolves types of subclasses after the parents are resolved.#842
#843
lt(val)(< val),le(va)(≤ val),ge(val)(≥ val),gt(val)(> val), andmaxlen(n).#845
attrsclasses are now fully compatible with cloudpickle (no need to disablerepranymore).#857
attrs.validators.disabled()and functionsattrs.validators.(set|get)_disabled().They deprecate
attrs.(set|get)_run_validators().All functions are interoperable and modify the same internal state.
They are not – and never were – thread-safe, though.
#859
attrs.validators.matches_re()now accepts pre-compiled regular expressions in addition to pattern strings.#877
v21.2.0Compare Source
Backward-incompatible Changes
attr.evolve()because it broke some use-cases -- sorry!#806
attrscan't be imported on it anymore.To ensure that 3.4 users can keep installing
attrseasily, we will yank 21.1.0 from PyPI.This has no consequences if you pin
attrsto 21.1.0.#807
v21.1.0Compare Source
Backward-incompatible Changes
attr.evolve()because it broke some use-cases -- sorry!#806
attrscan't be imported on it anymore.To ensure that 3.4 users can keep installing
attrseasily, we will yank 21.1.0 from PyPI.This has no consequences if you pin
attrsto 21.1.0.#807
v20.3.0Compare Source
Backward-incompatible Changes
attr.define(),attr.frozen(),attr.mutable(), andattr.field()remain provisional.This release does not change anything about them and they are already used widely in production though.
If you wish to use them together with mypy, you can simply drop this plugin into your project.
Feel free to provide feedback to them in the linked issue #668.
We will release the
attrsnamespace once we have the feeling that the APIs have properly settled.#668
Changes
attr.s()now has a field_transformer hook that is called for allAttributes and returns a (modified or updated) list ofAttributeinstances.attr.asdict()has a value_serializer hook that can change the way values are converted.Both hooks are meant to help with data (de-)serialization workflows.
#653
kw_only=Truenow works on Python 2.#700
raise fromnow works on frozen classes on PyPy.#703,
#712
attr.asdict()andattr.astuple()now treatfrozensets likesets with regards to the retain_collection_types argument.#704
attr.s()andattr.make_class()are not missing the collect_by_mro argument anymore.#711
v20.2.0Compare Source
Backward-incompatible Changes
attr.define(),attr.frozen(),attr.mutable(), andattr.field()remain provisional.This release fixes a bunch of bugs and ergonomics but they remain mostly unchanged.
If you wish to use them together with mypy, you can simply drop this plugin into your project.
Feel free to provide feedback to them in the linked issue #668.
We will release the
attrsnamespace once we have the feeling that the APIs have properly settled.#668
Changes
attr.define()et al now correctly detect__eq__and__ne__.#671
attr.define()et al's hybrid behavior now also works correctly when arguments are passed.#675
It's possible to define custom
__setattr__methods on slotted classes again.#681
In 20.1.0 we introduced the
inheritedattribute on theattr.Attributeclass to differentiate attributes that have been inherited and those that have been defined directly on the class.It has shown to be problematic to involve that attribute when comparing instances of
attr.Attributethough, because when sub-classing, attributes from base classes are suddenly not equal to themselves in a super class.Therefore the
inheritedattribute will now be ignored when hashing and comparing instances ofattr.Attribute.#684
zope.interfaceis now a "soft dependency" when running the test suite; ifzope.interfaceis not installed when running the test suite, the interface-related tests will be automatically skipped.#685
The ergonomics of creating frozen classes using
@define(frozen=True)and sub-classing frozen classes has been improved:you don't have to set
on_setattr=Noneanymore.#687
v20.1.0Compare Source
Backward-incompatible Changes
Python 3.4 is not supported anymore.
It has been unsupported by the Python core team for a while now, its PyPI downloads are negligible, and our CI provider removed it as a supported option.
It's very unlikely that
attrswill break under 3.4 anytime soon, which is why we do not block its installation on Python 3.4.But we don't test it anymore and will block it once someone reports breakage.
#608
Deprecations
Less of a deprecation and more of a heads up: the next release of
attrswill introduce anattrsnamespace.That means that you'll finally be able to run
import attrswith new functions that aren't cute abbreviations and that will carry better defaults.This should not break any of your code, because project-local packages have priority before installed ones.
If this is a problem for you for some reason, please report it to our bug tracker and we'll figure something out.
The old
attrnamespace isn't going anywhere and its defaults are not changing – this is a purely additive measure.Please check out the linked issue for more details.
These new APIs have been added provisionally as part of #666 so you can try them out today and provide feedback.
Learn more in the API docs.
#408
Changes
Added
attr.resolve_types().It ensures that all forward-references and types in string form are resolved into concrete types.
You need this only if you need concrete types at runtime.
That means that if you only use types for static type checking, you do not need this function.
#288,
#302
Added
@attr.s(collect_by_mro=False)argument that if set toTruefixes the collection of attributes from base classes.It's only necessary for certain cases of multiple-inheritance but is kept off for now for backward-compatibility reasons.
It will be turned on by default in the future.
As a side-effect,
attr.Attributenow always has aninheritedattribute indicating whether an attribute on a class was directly defined or inherited.#428,
#635
On Python 3, all generated methods now have a docstring explaining that they have been created by
attrs.#506
It is now possible to prevent
attrsfrom auto-generating the__setstate__and__getstate__methods that are required for pickling of slotted classes.Either pass
@attr.s(getstate_setstate=False)or pass@attr.s(auto_detect=True)and implement them yourself:if
attrsfinds either of the two methods directly on the decorated class, it assumes implicitlygetstate_setstate=False(and implements neither).This option works with dict classes but should never be necessary.
#512,
#513,
#642
Fixed a
ValueError: Cell is emptybug that could happen in some rare edge cases.#590
attrscan now automatically detect your own implementations and inferinit=False,repr=False,eq=False,order=False, andhash=Falseif you set@attr.s(auto_detect=True).attrswill ignore inherited methods.If the argument implies more than one method (for example,
eq=Truecreates both__eq__and__ne__), it's enough for one of them to exist andattrswill create neither.This feature requires Python 3.
#607
Added
attr.converters.pipe().The feature allows combining multiple conversion callbacks into one by piping the value through all of them, and retuning the last result.
As part of this feature, we had to relax the type information for converter callables.
#618
Fixed serialization behavior of non-slots classes with
cache_hash=True.The hash cache will be cleared on operations which make "deep copies" of instances of classes with hash caching,
though the cache will not be cleared with shallow copies like those made by
copy.copy().Previously,
copy.deepcopy()or serialization and deserialization withpicklewould result in an un-initialized object.This change also allows the creation of
cache_hash=Trueclasses with a custom__setstate__,which was previously forbidden (#494).
#620
It is now possible to specify hooks that are called whenever an attribute is set after a class has been instantiated.
You can pass
on_setattrboth to@attr.s()to set the default for all attributes on a class, and to@attr.ib()to overwrite it for individual attributes.attrsalso comes with a new moduleattr.settersthat brings helpers that run validators, converters, or allow to freeze a subset of attributes.#645,
#660
Provisional APIs called
attr.define(),attr.mutable(), andattr.frozen()have been added.They are only available on Python 3.6 and later, and call
attr.s()with different default values.If nothing comes up, they will become the official way for creating classes in 20.2.0 (see above).
Please note that it may take some time until mypy – and other tools that have dedicated support for
attrs– recognize these new APIs.Please do not open issues on our bug tracker, there is nothing we can do about it.
#666
We have also provisionally added
attr.field()that supplantsattr.ib().It also requires at least Python 3.6 and is keyword-only.
Other than that, it only dropped a few arguments, but changed no defaults.
As with
attr.s():attr.ib()is not going anywhere.#669
v19.3.0Compare Source
Changes
auto_attribsusage when default values cannot be compared directly with==, such asnumpyarrays.#585
v19.2.0Compare Source
Backward-incompatible Changes
Removed deprecated
Attributeattributeconvertper scheduled removal on 2019/1.This planned deprecation is tracked in issue #307.
#504
__lt__,__le__,__gt__, and__ge__do not consider subclasses comparable anymore.This has been deprecated since 18.2.0 and was raising a
DeprecationWarningfor over a year.#570
Deprecations
The
cmpargument toattr.s()andattr.ib()is now deprecated.Please use
eqto add equality methods (__eq__and__ne__) andorderto add ordering methods (__lt__,__le__,__gt__, and__ge__) instead – just like with dataclasses.Both are effectively
Trueby default but it's enough to seteq=Falseto disable both at once.Passing
eq=False, order=Trueexplicitly will raise aValueErrorthough.Since this is arguably a deeper backward-compatibility break, it will have an extended deprecation period until 2021-06-01.
After that day, the
cmpargument will be removed.attr.Attributealso isn't orderable anymore.#574
Changes
attr.validators.__all__to include new validators added in [#425].#517
__class__cell when rebuilding the class, sosuper()works even on environments wherectypesis not installed.#522
@attr.s(auto_attribs=True), attributes with a default ofNoneare now deleted too.#523,
#556
attr.validators.deep_iterable()andattr.validators.deep_mapping()type stubs.#533
attr.validators.is_callable()validator now raises an exceptionattr.exceptions.NotCallableError, a subclass ofTypeError, informing the received value.#536
@attr.s(auto_exc=True)now generates classes that are hashable by ID, as the documentation always claimed it would.#543,
#563
attr.validators.matches_re()that checks string attributes whether they match a regular expression.#552
kw_only=True) and attributes that are excluded from theattrs's__init__(init=False) now can appear before mandatory attributes.#559
It won't change when you restart the process.
#560
@attr.ib(repr=…)can now be either a boolean (as before) or a callable.That callable must return a string and is then used for formatting the attribute by the generated
__repr__()method.#568
attr.__version_info__that can be used to reliably check the version ofattrsand write forward- and backward-compatible code.Please check out the section on deprecated APIs on how to use it.
#580
v19.1.0Compare Source
Backward-incompatible Changes
cache_hash=Truecould have incorrect hash code values.This change breaks classes with
cache_hash=Truewhen a custom__setstate__is present.An exception will be thrown when applying the
attrsannotation to such a class.This limitation is tracked in issue #494.
#482
Changes
Add
is_callable,deep_iterable, anddeep_mappingvalidators.is_callable: validates that a value is callabledeep_iterable: Allows recursion down into an iterable,applying another validator to every member in the iterable
as well as applying an optional validator to the iterable itself.
deep_mapping: Allows recursion down into the items in a mapping object,applying a key validator and a value validator to the key and value in every item.
Also applies an optional validator to the mapping object itself.
You can find them in the
attr.validatorspackage.[#425]
Fixed stub files to prevent errors raised by mypy's
disallow_any_generics = Trueoption.#443
Attributes with
init=Falsenow can follow afterkw_only=Trueattributes.#450
attrsnow has first class support for defining exception classes.If you define a class using
@attr.s(auto_exc=True)and subclass an exception, the class will behave like a well-behaved exception class including an appropriate__str__method, and all attributes additionally available in anargsattribute.#500
Clarified documentation for hashing to warn that hashable objects should be deeply immutable (in their usage, even if this is not enforced).
#503
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ 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.
This PR was generated by Mend Renovate. View the repository job log.