chore(deps): update dependency astroid to v4 - #230
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #230 +/- ##
=======================================
Coverage 80.63% 80.63%
=======================================
Files 57 57
Lines 2664 2664
=======================================
Hits 2148 2148
Misses 516 516 📢 Thoughts on this report? Let us know! 🚀 New features to boost your workflow:
|
renovate
Bot
force-pushed
the
renovate/astroid-4.x
branch
from
May 19, 2026 01:44
31a0dc8 to
aa1633d
Compare
renovate
Bot
force-pushed
the
renovate/astroid-4.x
branch
from
July 17, 2026 21:21
aa1633d to
dc89741
Compare
There was a problem hiding this comment.
Pull request overview
Note
Copilot could not run the full agentic suite for this review because it was automatically requested on a bot-authored pull request. Request a review from Copilot under Reviewers to retry with the full agentic suite. Improved support for bot-authored pull requests is coming soon.
Updates the docs build dependencies by bumping astroid to a newer pinned version.
Changes:
- Bumped
astroidfrom3.3.8to4.1.2in docs requirements
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
renovate
Bot
force-pushed
the
renovate/astroid-4.x
branch
from
July 21, 2026 01:06
dc89741 to
b2b3546
Compare
renovate
Bot
force-pushed
the
renovate/astroid-4.x
branch
from
July 28, 2026 07:42
b2b3546 to
e4c0f22
Compare
renovate
Bot
force-pushed
the
renovate/astroid-4.x
branch
from
August 10, 2026 23:16
e4c0f22 to
bfb0dcf
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:
==3.3.8→==4.3.0Release Notes
pylint-dev/astroid (astroid)
v4.3.0Compare Source
============================
Release date: 2026-08-07
Version 4.2.0 was skipped: a
v4.2.0tag was created by mistake during anaborted release attempt, so the changes from the
4.2.0betas are releasedas
4.3.0.Fix a crash on a functional
namedtuplewhose field name changes under NFKCnormalization, such as
namedtuple("mu", ["µ"]). Python normalizesidentifiers, so the parsed class stores the field under
"μ"while thebrain looked it up as written, raising
KeyErroron a definition thatnamedtupleitself accepts.Closes pylint-dev/pylint#8746
Fix inference of a method's first argument (
selforcls) when themethod's return value is stored on an unrelated object. This avoids inferring
clsas the caller's class when indexing a tuple returned by aclassmethod such as
A.c()[0].Closes pylint-dev/pylint#11101
super()with no argument now resolves against the class of the object themethod was called on, instead of the class the method is written in. One consequence
is that a
typing.Selfreturn value survives a chain ofsuper()calls.Closes #2852
Closes pylint-dev/pylint#10807
typing.overloadstubs no longer shadow the implementation when a specialmethod is looked up in the MRO.
Closes #2448
Fix a crash when the field names of a functional
Enumornamedtuplecall are bytes, as in
Enum("", b""). Such a definition is invalid, soinference now falls back to its default instead of raising
TypeError.Closes #3189
Fix a crash when the body of a
typing.NamedTuplesubclass contains anassignment whose target is not a single name, such as
cat.color = "black",basket[0] = "apple"orapple, banana = "red", "yellow". The names boundby unpacking are now copied to the inferred class as well.
Closes #3190
Fix a crash when a binary operation involves a class whose metaclass is not a
class, as in
class C(metaclass=sum)followed byC | None. The type ofsuch a class is a function, which has no bases, so
has_known_bases()nowreturns
Falsefor anything that is not a class.Closes #3191
Fix a crash when a dataclass inherits from a dataclass that annotates
__init__as a field, as in__init__: int. Such a base binds__init__to a name instead of a function, so it no longer contributesarguments to the generated
__init__.Closes #3200
The documentation build now fails on any Sphinx warning, so a cross-reference
that does not resolve is caught by CI instead of quietly rendering as plain
text.
Uninferable,Positionand theBadOperationMessageclassesare documented as part of the public API, and a number of docstrings that
Sphinx could not parse were repaired.
The
>>>examples in the documentation are run when the documentation isbuilt, so one that stops being true is noticed. Most of them could not run
before: they printed node addresses recorded in 2018, and the multi-line ones
were missing the
...continuation prompt. The example forDecoratorsreported the wrong line numbers.
Fix the example in the docstring of
BoolOp, which showed the node it wascopied from:
astroid.extract_node("a and b")gives aBoolOp, not aBinOp.Names written between single backticks in the ChangeLog render as code again,
rather than as italics.
Prevent crashes while processing extension-module classes whose bases cannot
be resolved when applying enum inference transformations.
Closes pylint-dev/pylint#11179
The API documentation now covers the proxies, the objects with no node of
their own, the inference context, the manager, the object models and the
extension call signatures. The
EvaluatedObject,Interpolation,NamedExprandTemplateStrnodes were missing from the list of nodesand are listed now.
Add
__required_keys__and__optional_keys__to the inferredTypedDictbase class, so subclasses no longer raise ano-memberfalse positive in pylint when accessing those attributes at runtime.
Closes pylint-dev/pylint#10158
Comprehension conditions now constrain the inference of names used in the
comprehension, like
ifstatement conditions already did:[x for x in lst if x is not None]no longer infersNoneforxin the element expression.
Refs #3094
Fix
isinstance()constraints only filtering the first inferred value ofa variable: checking a value made the
isinstanceclassinfo uninferablefor the checks of the following values.
Remove Python 2 era dead code and outdated comments.
Notably: the internal
TreeRebuilderconstructor no longer takes aparser_moduleargument.Refs #3154
Fix inference of a starred target that is not last in a
forloop, such asfor a, *b, c in .... The elements following the starred one were countedfrom the target's own arity rather than from the end of the iterable, so
bwas truncated whenever the iterable was longer than the target.Add
qname()method to theSlicenode class, returning"builtins.slice", so that the node can be used in contextsthat require a qualified name (e.g. pylint's
basic_checker).Closes #3115
Add brain tip for
numpy.fromfileso that calls tonp.fromfile(...)are correctly inferred as returningnumpy.ndarrayinstead ofUninferable.Closes #600
Add brain for
decimalthat gets applied if_decimalisn't available.Removed the
**kwargsargument from allinferfunctions.Users upgrading their
astroidversions should ensure they do no pass values other thancontexttoinfer.Deduplicate keys when inferring
dict.fromkeys.dict.fromkeys("aab")now infers a dict with keys
"a","b"instead of"a","a","b", matching the runtime. This also stopsdict.fromkeysfrommaterializing one
Constnode per character for a repeated string such asdict.fromkeys("x" * 10 ** 8), which is a single-key dict.Bound str/bytes and list/tuple concatenation (
a + b) during inference.Bound oversized old-style (
%) string/bytes formatting during inference.A tiny literal such as
"%1000000000d" % 1made_infer_old_style_string_formattingeagerly build a multi-gigabyteConstwhile inferring otherwise untrusted source. The width andprecision are now read out of the conversion specifiers (including
*fields) and the interpolation infers as
Uninferablepast1e8,mirroring the repetition, concatenation and
str.formatcaps. Bytes%formatting is routed through the same handler so it is bounded too;small format strings keep inferring their exact value.
Fix crash (
TypeError: 'UninferableBase' object is not iterable) in themultiprocessingbrain when a local package shadows the stdlibmultiprocessingmodule.Closes pylint-dev/pylint#10014
Bound the number of nodes built when inferring
list/set/tuple/frozensetanddict.fromkeysfrom astr/bytesconstant. Thesebuilt one
Constnode per character with no cap, so ``list(("a" * 10 ** 8)(concatenation is not size-bounded) materialized hundreds of millions of nodes. They now fall back to the default inference past1e8`` characters,matching the sequence-repetition guard.
Refs #3127
Bound string/bytes multiplication (
"x" * n) and integer left shifts(
1 << n) inconst_infer_binary_opthe same way list/tuplemultiplication and
**already are. Inferring a constant such as"A" * 10 ** 10previously materialized the multi-gigabyte resulteagerly; these operations now infer as
Uninferablewhen the resultwould be oversized.
Refs #3107
Bound the field width and precision when inferring
str.formatcalls.A template such as
"{:>2000000000}".format("x")(or a width/precisionsupplied through a nested
{}field) previously built the paddedmulti-gigabyte string eagerly during inference; such calls now infer as
Uninferablewhen the field size would be oversized.Refs #3131
Remove the
asnamekeyword argument fromImport._inferandImportFrom._infer. The alias-to-real-name translation thatasname=Trueperformed is now hoisted intoImportNode._infer_name,which runs in
_infer_stmtsbefore_inferis dispatched. Directcallers of
Import.infer/ImportFrom.infer(previously theasname=Falsepath) now consistently resolve the lookup name as-is.The two flows used to collapse into a single inference cache entry
because the
asnamekwarg was not part of the cache key, so thesecond call returned the cached result of the first regardless of
which one ran. With the translation hoisted upstream, the two flows
set different
lookupnamevalues and therefore land on distinctcache keys, eliminating the collision.
Refs pylint-dev/pylint#10193
Closes #3007
Avoid materializing a multi-gigabyte string while inferring a small literal
such as
"{:>2000000000}".format("x")orf"{1.5:.2000000000f}"._infer_str_format_callandFormattedValue._infernow yieldUninferablewhen a format spec asks for a width or precision over 1e8,mirroring the sequence/repetition caps in
astroid.protocols.Refs #3108
Fix uncaught
IndentationErrorwhen parsing code whose lines end in\r: the slice of source tokenized to compute a class or functionpositionis split on\nonly and could be misaligned with the ASTline numbers. Such nodes now simply have no position information, as
already done when
tokenizeraisesTokenError.Closes #3091
Support PEP 810 lazy imports (new in Python 3.15).
ImportandImportFromnodes gain anis_lazyinteger attribute, mirroringthe
astfield of the same name.Support PEP 798 comprehension unpacking (
{**d for d in dicts},new in Python 3.15).
Fix astroid bootstrap crash on PyPy 7.3.22 (
TypeError: expected str, got getset_descriptor object) by also catchingTypeErrorfromgetattr(obj, alias)inInspectBuilder.object_build. PyPy 7.3.22raises
TypeErrorinstead ofAttributeErrorfor unset getsetdescriptors like
types.FunctionType.__text_signature__, which made_astroid_bootstrapping()blow up on any call into astroid.Refs pylint-dev/pylint#10999
Shorten
import astroidby deferring imports only needed on cold paths.logging(used bymodutilsandraw_buildingsolely to reportstderr/stdout captured while importing a module) and
pprint(used onlyto format debug
__repr__/repr_treeoutput) are now importedlazily, and
astroid.exceptionsimportsastroid.typingunderTYPE_CHECKING.Fix
AttributeErrorcrash instarred_assigned_stmtswhen a starredunpacking target is an attribute (e.g.
for *o.attr, x in ...) ratherthan a simple name.
Closes #2646
Fix
AttributeErrorcrash in theArgumentsassigned_stmtsprotocol when called without an inference context (the public
assigned_stmtsAPI defaultscontexttoNone). Resolving afunction's first parameter dereferenced
context.boundnodewhile thematching
context and ...guard a few lines below was missing; it nowdegrades to Uninferable.
Fix
AttributeErrorcrash inClassDef.infer_call_resultwhen calledthrough the public API without a context (it defaults to
None) for aclass whose metaclass defines
__call__: the callee was assigned tocontext.callcontext.calleewithout checking that a call context exists.It is now guarded, matching the surrounding code.
Wrap assignment expressions (
:=) in parentheses when emittingas_stringoutput so the rendered code remains syntactically valid incontexts such as comparisons, where Python requires the walrus expression
to be parenthesized.
Closes #2668
Catch
MemoryError/RecursionError(andValueError) when validatingtype comments with
ast.parse. Pathological type comments produced byfuzzers (e.g.
# type: i{{{{{{{...) previously crashed parsing with aMemoryErrororRecursionErrordepending on the runtime; astroid nowtreats them as invalid type comments and skips them, mirroring the f-string
fix from #2762.
Closes #2993
Bypass
__init__inInferenceContext.clone()and write the slotsdirectly.
clone()is called ~85k times per pandas/frame.py pylint run;skipping the conditional defaults shaves measurable time off the hottest
constructor in inference.
Refs #1115
Fix
TypeErrorinbrain_randomwhenrandom.sampleis called with asequence containing nodes whose
__init__does not acceptlineno(e.g.
Module). The clone helper now filters init params to those theclass actually accepts.
Closes #3043
Fix
RecursionErrorin_compute_mro()when circular class hierarchiesare created through runtime name rebinding. Circular bases are now resolved
to the original class instead of recursing.
Closes #3023
Closes pylint-dev/pylint#10821
Changed
block_rangeto considerelseits own block, allowingpylintto applydisables to just the block.
References pylint-dev/pylint#872
Fix uncaught
TokenErrorwhen building a class or function whose sourceslice is malformed.
tokenize.generate_tokensmay raise (e.g. on anunterminated bracket on Python < 3.12); position computation now treats such
a node as having no position information instead of crashing.
Closes #2527
str()of a constant argument now infers the actual string value insteadof always inferring
"". When every inference path of the argumentresolves to
Constvalues that stringify to the same string,infer_strreturns that string; otherwise it keeps falling back to
Const("").Closes #2994
Fix
AttributeErrorcrash when looking up a special method on a classwhose explicit metaclass infers to a non-class node (e.g. a function). Such
a metaclass has no MRO, so the dunder lookup now raises
AttributeInferenceErrorinstead of crashing.Closes #3063
Fix
AttributeErrorcrash inClassDef.getitemwhen__class_getitem__resolves to a non-callable node (e.g. an
AssignName).getitemnowraises
AstroidTypeErrorin that case, consistent with its documentedbehaviour.
Closes #3064
Fix
DuplicateBasesErrorcrash in the enum brain when inferring an enumclass with duplicate bases (e.g.
class C(enum.Enum, enum.Enum)).infer_enum_classnow catchesMroErrorand leaves such a malformedclass untransformed.
Closes #3065
Fix
InferenceErrorcrash inClassDef.slots()when__slots__isdeclared as an annotation without a value (e.g.
__slots__: None). Such a__slots__cannot be inferred, soslots()now returnsNone.Closes #3067
Fix
TypeErrorcrash in the enum brain when a functionalEnumcallhas a non-string member name (e.g.
Enum("e", (1,))). Such a definitionis invalid, so inference now falls back to the default instead of crashing.
Closes #3068
Fix detecting static/class methods and inspecting IntFlag types in
GObject-based libraries (GLib, Gtk etc)
Only inject the
_HAS_DEFAULT_FACTORYsentinel into a module's locals whenthe generated dataclass
__init__actually references it. Parsing a modulecontaining a dataclass without any
field(default_factory=...)no longerexposes an unexpected
_HAS_DEFAULT_FACTORYname.Closes #2808
__func__on a bound method that proxies its function directly,such as
A.method.__func__for a classmethod, or a lambda assigned to a class attributesuch as
A().lam.__func__.Closes pylint-dev/pylint#11198
Add
qname()andpytype()to theTypeVar,ParamSpec,TypeVarTupleandTypeAliasnode classes, returning"typing.TypeVar","typing.ParamSpec","typing.TypeVarTuple"and
"typing.TypeAliasType". PEP 695 type parameters and type aliasesare inferred as themselves, so callers that ask an inferred value for its
type crashed with an
AttributeError, asFunctionDef.decoratornames()did for
@Tinsideclass Basket[T].Refs #3115
Infer the value of a data descriptor of a C-implemented class as unknown
instead of as a class named after the attribute. Reading such an attribute,
for instance
exc.__traceback__.tb_frameorgen.gi_frame, inferred aclass, so the attributes of the value the descriptor returns were reported as
missing.
raw_building.object_build_datadescriptor()now returns anEmptyNode.Closes pylint-dev/pylint#11218
v4.1.2Compare Source
============================
Release date: 2026-03-22
Fix crash accessing property
fsetin generic classes with type annotations.Closes #2996
Fix infinite recursion caused by cyclic inference in
Constraint.Fix
RecursionErrorin_compute_mro()when circular class hierarchiesare created through runtime name rebinding. Circular bases are now resolved
to the original class instead of recursing.
Closes #2967
Closes pylint-dev/pylint#10821
Fix
DuplicateBasesErrorcrash in dataclass transform when a class hasduplicate bases in its MRO (e.g.,
Protocolappearing both directly andindirectly). Catch
MroErrorat.mro()call sites inbrain_dataclasses.py, consistent with the existing pattern elsewhere.Closes #2628
Fix
FunctionModelreturning descriptor attributes for builtin functions.Closes #2743
Catch
MemoryErrorwhen inferring f-strings with extremely large formatwidths (e.g.
f'{0:11111111111}') so that inference yieldsUninferableinstead of crashing.
Closes #2762
Fix
ValueErrorin__str__/reprand error messages when nodes haveextreme values (very long identifiers or large integers). Clamp pprint width
to a minimum of 1 and truncate oversized values in error messages.
Closes #2764
v4.1.1Compare Source
============================
Release date: 2026-02-22
Let
UnboundMethodModelinherit fromFunctionModelto improve inference ofdunder methods for unbound methods.
Refs #2741
Filter
UnknownfromUnboundMethodandSuperspecial attributelookup to prevent placeholder nodes from leaking during inference.
Refs #2741
v4.1.0Compare Source
============================
Release date: 2026-02-08
Add support for equality constraints (
==,!=) in inference.Closes pylint-dev/pylint#3632
Closes pylint-dev/pylint#3633
Ensure
ast.JoinedStrnodes areUninferablewhen theast.FormattedValueisUninferable. This preventsunexpected-keyword-argmessages in Pylintwhere the
Uninferablestring appeared in function arguments that wereconstructed dynamically.
Closes pylint-dev/pylint#10822
Add support for type constraints (
isinstance(x, y)) in inference.Closes pylint-dev/pylint#1162
Closes pylint-dev/pylint#4635
Closes pylint-dev/pylint#10469
Make
type.__new__()raise clear errors instead of returningNoneMove object dunder methods from
FunctionModeltoObjectModelto make themavailable on all object types, not just functions.
Closes #2742
Closes #2741
Closes pylint-dev/pylint#6094
linenoandend_linenoare now available onArguments.Add helper to iterate over all annotations nodes of function arguments,
Arguments.get_annotations().Refs #2860
Skip direct parent when determining the
Decoratorframe.Refs pylint-dev/pylint#8425
Add simple command line interface for astroid to output generated AST.
Use with
python -m astroid.Fix incorrect type inference for
super().method()calls that returnSelf.Previously, astroid would infer the parent class type instead of the child class type,
causing pylint E1101 false positives in method chaining scenarios.
Closes #457
Add missing
dtypeandcastingparameters tonumpy.concatenatebrain.Closes #2870
Fix ability to detect .py modules inside PATH directories on Windows
described by a UNC path with a trailing backslash (
\)Fix
random.sampleinference crash when sequence contains uninferable elements.Closes #2518
Fix
random.samplecrash when cloningClassDeforFunctionDefnodes.Closes #2923
v4.0.4Compare Source
============================
Release date: 2026-02-07
Fix
is_namespace()crash when search locations containpathlib.Pathobjects.Closes #2942
v4.0.3Compare Source
============================
Release date: 2026-01-03
Fix inference of
IfExp(ternary expression) nodes to avoid prematurely narrowingresults in the face of inference ambiguity.
Closes #2899
Fix base class inference for dataclasses using the PEP 695 typing syntax.
Refs pylint-dev/pylint#10788
v4.0.2Compare Source
============================
Release date: 2025-11-09
Handle FunctionDef blockstart_tolineno edge cases correctly.
Refs #2880
Add
HTTPMethodenum support to brain module for Python 3.11+.Refs pylint-dev/pylint#10624
Closes #2877
v4.0.1Compare Source
============================
Release date: 2025-10-11
Suppress
SyntaxWarningfor invalid escape sequences and return in finally onPython 3.14 when parsing modules.
Assign
ImportandImportFromnodes to module locals if used withglobal.Closes pylint-dev/pylint#10632
v4.0.0Compare Source
============================
Release date: 2025-10-05
Support constraints from ternary expressions in inference.
Closes pylint-dev/pylint#9729
Handle deprecated
bool(NotImplemented)cast in const nodes.Add support for boolean truthiness constraints (
x,not x) in inference.Closes pylint-dev/pylint#9515
Fix false positive
invalid-nameonattrsclasses withClassVarannotated variables.Closes pylint-dev/pylint#10525
Prevent crash when parsing deeply nested parentheses causing MemoryError in python's built-in ast.
Closes #2643
Fix crash when inferring namedtuple with invalid field name looking like f-string formatting.
Closes #2519
Fix false positive no-member in except * handler.
Closes pylint-dev/pylint#9056
Fix crash when comparing invalid dict literal
Closes #2522
Removed internal functions
infer_numpy_member,name_looks_like_numpy_member, andattribute_looks_like_numpy_memberfromastroid.brain.brain_numpy_utils.To alleviate circular imports, the
managerargument toAstroidBuilder()is now required.Constants now have a parent of
nodes.SYNTHETIC_ROOT.Fix crashes with large positive and negative list multipliers.
Closes #2521
Closes #2523
Fix precedence of
patharg inmodpath_from_file_with_callbackto be higher thansys.pathFollowing a deprecation period, the
futureargument was removed fromstatement()andframe().Improve consistency of
JoinedStrinference by not raisingInferenceErrorandreturning either
Uninferableor a fully resolvedConst.Closes #2621
Fix crash when typing._alias() call is missing arguments.
Closes #2513
Remove support for Python 3.9 (and constant
PY310_PLUS).Include subclasses of standard property classes as
propertydecoratorsCloses #10377
Modify
astroid.basesandtests.test_nodesto reflect thatenum.propertywas added in Python 3.11, not 3.10Fix incorrect result in
_get_relative_base_pathwhen the target directory name starts with the base pathCloses #2608
The brain for nose was dropped. nose has been deprecated for 10 years and the brain required some maintenance.
Refs #2765
Fix a crash when the root of a node is not a module but is unknown.
Closes #2672
Add basic support for
ast.TemplateStrandast.Interpolationadded in Python 3.14.Refs #2789
Add support for type parameter defaults added in Python 3.13.
Improve
as_string()representation forTypeVar,ParamSpecandTypeVarTuplenodes, as well astype parameter in
ClassDef,FuncDefandTypeAliasnodes (PEP 695).Astroid now correctly supports the
exceptionsattribute ofExceptionGroup.Closes pylint-dev/pylint#8985
Closes pylint-dev/pylint#10558
Deprecate importing node classes from
astroiddirectly. This will be removed in v5.It's recommended to import them from
astroid.nodesinstead.Refs #2837
v3.3.11Compare Source
=============================
Release date: 2025-07-13
Fix a crash when parsing an empty arbitrary expression with
extract_node(extract_node("__()")).Closes #2734
Fix a crash when parsing a slice called in a decorator on a function that is also decorated with
a known
sixdecorator.Closes #2721
v3.3.10Compare Source
=============================
Release date: 2025-05-10
Avoid importing submodules sharing names with standard library modules.
Closes #2684
Fix bug where
pylint code.custom_extensionwould analyzecode.pyorcode.pyiinstead if they existed.Closes pylint-dev/pylint#3631
v3.3.9Compare Source
============================
Release date: 2025-03-09
Fix crash when
sys.modulescontains lazy loader objects during checking.Closes #2686
Closes pylint-dev/pylint#8589
Upload release assets to PyPI via Trusted Publishing.
Refs pylint-dev/pylint#10256
Configuration
📅 Schedule: (in timezone Europe/Paris)
* 0-4,22-23 * * 1-5)* * * * 0,6)🚦 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.
This PR was generated by Mend Renovate. View the repository job log.