chore(deps): update dependency ruff to ^0.3.0 #4964
Merged
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:
^0.1.2
->^0.3.0
Release Notes
astral-sh/ruff (ruff)
v0.3.0
Compare Source
This release introduces the new Ruff formatter 2024.2 style and adds a new lint rule to
detect invalid formatter suppression comments.
Preview features
flake8-bandit
] Remove suspicious-lxml-import (S410
) (#10154)pycodestyle
] Allowos.environ
modifications between imports (E402
) (#10066)pycodestyle
] Don't warn about a single whitespace character before a comma in a tuple (E203
) (#10094)Rule changes
eradicate
] Detect commented outcase
statements (ERA001
) (#10055)eradicate
] Detect single-line code fortry:
,except:
, etc. (ERA001
) (#10057)flake8-boolean-trap
] Allow boolean positionals in__post_init__
(#10027)flake8-copyright
] Allow © in copyright notices (#10065)isort
]: Use one blank line after imports in typing stub files (#9971)pylint
] New Ruledict-iter-missing-items
(PLE1141
) (#9845)pylint
] Ignoresys.version
andsys.platform
(PLR1714
) (#10054)pyupgrade
] Detect literals with unary operators (UP018
) (#10060)ruff
] Expand rule forlist(iterable).pop(0)
idiom (RUF015
) (#10148)Formatter
This release introduces the Ruff 2024.2 style, stabilizing the following changes:
with
parentheses when targeting Python 3.9 or newer (#9222)...
) in typing stub files (#9155)...
) body (#7440, #9240)CLI
extend
as part of a--config
flag (#10135)build
from the default exclusion list (#10093)ruff <path>
,ruff --explain
,ruff --clean
, andruff --generate-shell-completion
in favor ofruff check <path>
,ruff rule
,ruff clean
, andruff generate-shell-completion
(#10169)--format
fromruff rule
andruff linter
(#10170)Bug fixes
flake8-bugbear
] Avoid adding default initializers to stubs (B006
) (#10152)flake8-type-checking
] Respect runtime-required decorators for function signatures (#10091)pycodestyle
] Mark fixes overlapping with a multiline string as unsafe (W293
) (#10049)pydocstyle
] Trim whitespace when removing blank lines after section (D413
) (#10162)pylint
] Delete entire statement, including semicolons (PLR0203
) (#10074)ruff
] Avoid f-string false positives ingettext
calls (RUF027
) (#10118)ruff
crashing on PowerPC systems because of too small page size (#10080)Performance
Documentation
line-length
option: fix link topycodestyle.max-line-length
(#10136)v0.2.2
Compare Source
Highlights include:
--preview
).--config
argument (e.g.,
--config "lint.isort.combine-as-imports=false"
).Preview features
pycodestyle
] Add blank line(s) rules (E301
,E302
,E303
,E304
,E305
,E306
) (#9266)refurb
] Implementreadlines_in_for
(FURB129
) (#9880)Rule changes
ruff
] Ensure closing parentheses for multiline sequences are always on their own line (RUF022
,RUF023
) (#9793)numpy
] Add missing deprecation violations (NPY002
) (#9862)flake8-bandit
] Detectmark_safe
usages in decorators (#9887)ruff
] Expandasyncio-dangling-task
(RUF006
) to includenew_event_loop
(#9976)flake8-pyi
] Ignore 'unused' private type dicts in class scopes (#9952)Formatter
indent-style=tabs
(#9915)preserve
mode (#9922)CLI
Bug fixes
show-settings
filters directory-agnostic (#9866)DebugText
(#9953)flake8-simplify
] Avoid false positive withasync
for loops (SIM113
) (#9996)flake8-trio
] Respectasync with
intimeout-without-await
(#9859)perflint
] Catch a wider range of mutations inPERF101
(#9955)pycodestyle
] FixE30X
panics on blank lines with trailing white spaces (#9907)pydocstyle
] Allow usingparameters
as a subsection header (D405
) (#9894)pydocstyle
] Fix blank-line docstring rules for module-level docstrings (#9878)pylint
] Accept 0.0 and 1.0 as common magic values (PLR2004
) (#9964)pylint
] Avoid suggesting set rewrites for non-hashable types (#9956)ruff
] Avoid false negatives with string literals inside of method calls (RUF027
) (#9865)ruff
] Fix panic on with f-string detection (RUF027
) (#9990)ruff
] Ignore builtins when detecting missing f-strings (#9849)Performance
memchr
for string lexing (#9888)memchr
for tab-indentation detection (#9853)Result<Tok, LexicalError>
size by usingBox<str>
instead ofString
(#9885)Expr
from 80 to 64 bytes (#9900)v0.2.1
Compare Source
This release includes support for range formatting (i.e., the ability to format specific lines
within a source file).
Preview features
refurb
] Implementmissing-f-string-syntax
(RUF027
) (#9728)Formatter
--range
option toruff format
(#9733)Bug fixes
__get__
and__set__
fromunnecessary-dunder-call
(#9791)Protocol
in ellipsis removal (#9841)Performance
C408
(#9822)C400
,C401
,C410
, andC418
(#9819)AhoCorasick
to speed up quote match (#9773)C405
andC409
(#9821)zero-sleep-call
(#9766)C403
(#9818)Documentation
max-pos-args
example tomax-positional-args
(#9797)weak_cryptographic_key.rs
(#9774)ANN
rules in changelog (#9771)max-positional-args
(#9838)v0.2.0
Compare Source
Breaking changes
NURSERY
selector cannot be used anymoreSee also, the "Remapped rules" section which may result in disabled rules.
Deprecations
The following rules are now deprecated:
missing-type-self
(ANN101
)missing-type-cls
(ANN102
)The following command line options are now deprecated:
--show-source
; use--output-format full
instead--no-show-source
; use--output-format concise
instead--output-format text
; usefull
orconcise
insteadThe following settings have moved and the previous name is deprecated:
ruff.allowed-confusables
→ruff.lint.allowed-confusables
ruff.dummy-variable-rgx
→ruff.lint.dummy-variable-rgx
ruff.explicit-preview-rules
→ruff.lint.explicit-preview-rules
ruff.extend-fixable
→ruff.lint.extend-fixable
ruff.extend-ignore
→ruff.lint.extend-ignore
ruff.extend-per-file-ignores
→ruff.lint.extend-per-file-ignores
ruff.extend-safe-fixes
→ruff.lint.extend-safe-fixes
ruff.extend-select
→ruff.lint.extend-select
ruff.extend-unfixable
→ruff.lint.extend-unfixable
ruff.extend-unsafe-fixes
→ruff.lint.extend-unsafe-fixes
ruff.external
→ruff.lint.external
ruff.fixable
→ruff.lint.fixable
ruff.flake8-annotations
→ruff.lint.flake8-annotations
ruff.flake8-bandit
→ruff.lint.flake8-bandit
ruff.flake8-bugbear
→ruff.lint.flake8-bugbear
ruff.flake8-builtins
→ruff.lint.flake8-builtins
ruff.flake8-comprehensions
→ruff.lint.flake8-comprehensions
ruff.flake8-copyright
→ruff.lint.flake8-copyright
ruff.flake8-errmsg
→ruff.lint.flake8-errmsg
ruff.flake8-gettext
→ruff.lint.flake8-gettext
ruff.flake8-implicit-str-concat
→ruff.lint.flake8-implicit-str-concat
ruff.flake8-import-conventions
→ruff.lint.flake8-import-conventions
ruff.flake8-pytest-style
→ruff.lint.flake8-pytest-style
ruff.flake8-quotes
→ruff.lint.flake8-quotes
ruff.flake8-self
→ruff.lint.flake8-self
ruff.flake8-tidy-imports
→ruff.lint.flake8-tidy-imports
ruff.flake8-type-checking
→ruff.lint.flake8-type-checking
ruff.flake8-unused-arguments
→ruff.lint.flake8-unused-arguments
ruff.ignore
→ruff.lint.ignore
ruff.ignore-init-module-imports
→ruff.lint.ignore-init-module-imports
ruff.isort
→ruff.lint.isort
ruff.logger-objects
→ruff.lint.logger-objects
ruff.mccabe
→ruff.lint.mccabe
ruff.pep8-naming
→ruff.lint.pep8-naming
ruff.per-file-ignores
→ruff.lint.per-file-ignores
ruff.pycodestyle
→ruff.lint.pycodestyle
ruff.pydocstyle
→ruff.lint.pydocstyle
ruff.pyflakes
→ruff.lint.pyflakes
ruff.pylint
→ruff.lint.pylint
ruff.pyupgrade
→ruff.lint.pyupgrade
ruff.select
→ruff.lint.select
ruff.task-tags
→ruff.lint.task-tags
ruff.typing-modules
→ruff.lint.typing-modules
ruff.unfixable
→ruff.lint.unfixable
Remapped rules
The following rules have been remapped to new codes:
raise-without-from-inside-except
:TRY200
toB904
suspicious-eval-usage
:PGH001
toS307
logging-warn
:PGH002
toG010
static-key-dict-comprehension
:RUF011
toB035
runtime-string-union
:TCH006
toTCH010
Stabilizations
The following rules have been stabilized and are no longer in preview:
trio-timeout-without-await
(TRIO100
)trio-sync-call
(TRIO105
)trio-async-function-with-timeout
(TRIO109
)trio-unneeded-sleep
(TRIO110
)trio-zero-sleep-call
(TRIO115
)unnecessary-escaped-quote
(Q004
)enumerate-for-loop
(SIM113
)zip-dict-keys-and-values
(SIM911
)timeout-error-alias
(UP041
)flask-debug-true
(S201
)tarfile-unsafe-members
(S202
)ssl-insecure-version
(S502
)ssl-with-bad-defaults
(S503
)ssl-with-no-version
(S504
)weak-cryptographic-key
(S505
)ssh-no-host-key-verification
(S507
)django-raw-sql
(S611
)mako-templates
(S702
)generator-return-from-iter-method
(PYI058
)runtime-string-union
(TCH006
)numpy2-deprecation
(NPY201
)quadratic-list-summation
(RUF017
)assignment-in-assert
(RUF018
)unnecessary-key-check
(RUF019
)never-union
(RUF020
)direct-logger-instantiation
(LOG001
)invalid-get-logger-argument
(LOG002
)exception-without-exc-info
(LOG007
)undocumented-warn
(LOG009
)Fixes for the following rules have been stabilized and are now available without preview:
triple-single-quotes
(D300
)non-pep604-annotation
(UP007
)dict-get-with-none-default
(SIM910
)in-dict-keys
(SIM118
)collapsible-else-if
(PLR5501
)if-with-same-arms
(SIM114
)useless-else-on-loop
(PLW0120
)unnecessary-literal-union
(PYI030
)unnecessary-spread
(PIE800
)error-instead-of-exception
(TRY400
)redefined-while-unused
(F811
)duplicate-value
(B033
)multiple-imports-on-one-line
(E401
)non-pep585-annotation
(UP006
)Fixes for the following rules have been promoted from unsafe to safe:
unaliased-collections-abc-set-import
(PYI025
)The following behaviors have been stabilized:
module-import-not-at-top-of-file
(E402
) allowssys.path
modifications between importsreimplemented-container-builtin
(PIE807
) includes lambdas that can be replaced withdict
unnecessary-placeholder
(PIE790
) applies to unnecessary ellipses (...
)if-else-block-instead-of-dict-get
(SIM401
) applies toif-else
expressionsPreview features
refurb
] Implementmetaclass_abcmeta
(FURB180
) (#9658)blank_line_after_nested_stub_class
preview style (#9155)and-or-ternary
(PLR1706
) was removedBug fixes
flake8-async
] Takepathlib.Path
into account when analyzing async functions (#9703)flake8-return
] - fix indentation syntax error (RET505
) (#9705)RUF022
,RUF023
: never add two trailing commas to the end of a sequence (#9698)RUF023
: Don't sort__match_args__
, only__slots__
(#9724)flake8-simplify
] - Fix syntax error in autofix (SIM114
) (#9704)pylint
] Show verbatim constant inmagic-value-comparison
(PLR2004
) (#9694)IfExp
with dual string arms ininvalid-envvar-default
(#9734)pylint
] Add__mro_entries__
to known dunder methods (PLW3201
) (#9706)Documentation
v0.1.15
Compare Source
Preview features
NURSERY
selector is used with--preview
(#9682)flake8-return
] Add fixes for all rules (RET505
,RET506
,RET507
,RET508
) (#9595)flake8-simplify
] Add fix forif-with-same-arms
(SIM114
) (#9591)pycodestyle
] Add fix formultiple-imports-on-one-line
(E401
) (#9518)pylint
] Add fix forcollapsible-else-if
(PLR5501
) (#9594)pylint
] Add fix foruseless-else-on-loop
(PLW0120
) (#9590)pylint
] Implementassigning-non-slot
(E0237
) (#9623)pylint
] Implementpotential-index-error
(PLE0643
) (#9545)pylint
] Implementtoo-many-nested-blocks
(PLR1702
) (#9172)ruff
] Add rule to sort__slots__
and__match_args__
(#9564)ruff
] Detect unnecessarydict
comprehensions for iterables (RUF025
) (#9613)ruff
] Guard against use ofdefault_factory
as a keyword argument (RUF026
) (#9651)ruff
] Implementmutable-fromkeys-value
(RUF024
) (#9597)CLI
--help
output (#9633)Bug fixes
flake8-no-pep420
] Include global--config
when determining namespace packages (#9603)flake8-pie
] Omit bound tuples passed to.startswith
or.endswith
(#9661)flake8-return
] Avoid panic when fixing inlined else blocks (#9657)flake8-return
] Consider exception suppression in unnecessary assignment (#9673)flake8-return
] TakeNoReturn
annotation into account when analyzing implicit returns (#9636)flake8-simplify
] Support inverted returns inneedless-bool
(SIM103
) (#9619)flake8-type-checking
] Add Pydantic'sBaseConfig
to default-copy list (#9650)flake8-type-checking
] Avoid markingInitVar
as a typing-only annotation (#9688)pycodestyle
] Allowdtype
comparisons intype-comparison
(#9676)pydocstyle
] Re-implementlast-line-after-section
(D413
) (#9654)Documentation
flake8-pytest-style
] Add fix safety documentation forduplicate-parameterize-test-cases
(#9678)pylint
] Documentliteral-membership
fix safety conditions (#9677)isort
] Fix reference toisort
rule code (#9598)v0.1.14
Compare Source
Preview features
flake8-bugbear
] Add fix forduplicate-value
(B033
) (#9510)flake8-simplify
] Implementenumerate-for-loop
(SIM113
) (#7777)pygrep_hooks
] Add fix fordeprecated-log-warn
(PGH002
) (#9519)pylint
] Implementimport-private-name
(C2701
) (#5920)refurb
] Implementregex-flag-alias
with fix (FURB167
) (#9516)ruff
] Add rule and fix to sort contents of__all__
(RUF022
) (#9474)tryceratops
] Add fix forerror-instead-of-exception
(TRY400
) (#9520)Rule changes
flake8-pyi
] FixPYI047
false negatives on PEP-695 type aliases (#9566)flake8-pyi
] FixPYI049
false negatives on call-basedTypedDict
s (#9567)pylint
] Excludeself
andcls
when counting method arguments (PLR0917
) (#9563)CLI
--show-settings
displays active settings in a far more readable format (#9464)--extension
support to the formatter (#9483)Configuration
pycodestyle
] Use the configured tab size when expanding indents (#9506)Bug fixes
flake8-simplify
] Avoid some moreenumerate-for-loop
false positives (SIM113
) (#9515)pandas-vet
] Limit inplace diagnostics to methods that accept inplace (#9495)pylint
] Add the__prepare__
method to the list of recognized dunder method (#9529)pylint
] Ignore unnecessary dunder calls within dunder definitions (#9496)refurb
] Avoid bailing whenreimplemented-operator
is called on function (FURB118
) (#9556)ruff
] Avoid treating named expressions as static keys (RUF011
) (#9494)Documentation
noqa
with isort rules (#9555)cargo bench -p ruff_benchmark
(#9535)emacs-ruff-format
(#9403)flake8-blind-except
] Document exceptions toblind-except
rule (#9580)v0.1.13
Compare Source
Bug fixes
flake8-simplify
] Account for possibly-empty f-string values in truthiness logic (#9484)pylint
] Add the missing period inunnecessary-dunder-call
(#9485)pylint
] Fix__aenter__
message inunnecessary-dunder-call
(#9492)v0.1.12
Compare Source
Preview features
flake8-bandit
] Addssl-with-no-version
(S504
) (#9384)flake8-bandit
] Implementssl-insecure-version
(S502
) (#9390)flake8-bandit
] Implementssl-with-bad-defaults
(S503
) (#9391)flake8-bandit
] Implement suspicious import rules (S4XX
) (#8831)flake8-simplify
] Implementzip-dict-keys-and-values
(SIM911
) (#9460)pyflakes
] Add a fix forredefined-while-unused
(F811
) (#9419)pylint
] Implementunnecessary-dunder-call
(C2801
) (#9166)ruff
] Addparenthesize-chained-operators
(RUF021
) to enforce parentheses ina or b and c
(#9440)Rule changes
flake8-boolean-trap
] Allow Boolean positional arguments in setters (#9429)flake8-builtins
] Restrictbuiltin-attribute-shadowing
(A003
) to actual shadowed references (#9462)flake8-pyi
] Add fix forgenerator-return-from-iter-method
(PYI058
) (#9355)pyflakes
] Don't flagredefined-while-unused
(F811
) inif
branches (#9418)pyupgrade
] Add some additional Python 3.12 typing members todeprecated-import
(#9445)ruff
] Add fix forparenthesize-chained-operators
(RUF021
) (#9449)ruff
] Include subscripts and attributes in static key rule (RUF011
) (#9416)ruff
] Support variable keys in static dictionary key rule (RUF011
) (#9411)Formatter
# fmt: skip
with interspersed same-line comments (#9395)Bug fixes
None
comparisons (#9376)DisplayParseError
for stdin parser errors (#9409)comment_ranges
for isort directive extraction (#9414)flake8-pyi
] Excludewarnings.deprecated
andtyping_extensions.deprecated
arguments (#9423)flake8-pyi
] Fix false negative forunused-private-protocol
(PYI046
) with unused generic protocols (#9405)pydocstyle
] Disambiguate argument descriptors from section headers (#9427)pylint
] HomogenizePLR0914
message to match otherPLR09XX
rules (#9399)ruff
] AllowHashable = None
in type annotations (RUF013
) (#9442)Documentation
v0.1.11
Compare Source
Preview features
pylint
] Implementsuper-without-brackets
(W0245
) (#9257)Bug fixes
python -m ruff
invocations (#9367)Documentation
relative-imports
message (#9365)yield-in-for-loop
(#9364)v0.1.10
Compare Source
Preview features
dummy_implementations
preview style formatting (#9240)with
statements (#9222)flake8-pyi
] Implementgenerator-return-from-iter-method
(PYI058
) (#9313)pylint
] Implementempty-comment
(PLR2044
) (#9174)refurb
] Implementbit-count
(FURB161
) (#9265)ruff
] Addnever-union
rule to detect redundanttyping.NoReturn
andtyping.Never
(#9217)CLI
Configuration
Bug fixes
asyncio-dangling-task
for nonlocal and global bindings (#9263)__str__
definitions from super classes (#9338)unused-noqa
viaper-file-ignores
(#9300)typing_extensions
members as typing aliases (#9335)Display
for formatter parse errors (#9316)flake8-annotations
] Avoid adding return types to stub methods (#9277)flake8-annotations
] Respect mixedreturn
andraise
cases in return-type analysis (#9310)flake8-bandit
] Don't report violations whenSafeLoader
is imported fromyaml.loader
(S506
) (#9299)pylint
] Avoid panic when comment is preceded by Unicode (#9331)pylint
] ChangePLR0917
error message to match otherPLR09XX
messages (#9308)refurb
] Avoid false positives formath-constant
(FURB152
) (#9290)Documentation
perflint
] DocumentPERF102
fix un-safety (#9351)pyupgrade
] DocumentUP007
fix un-safety (#9306)v0.1.9
Compare Source
Breaking changes
Preview features
pylint
] Implementtoo-many-locals
(PLR0914
) (#9163)reimplemented_operator
(FURB118) (#9171)no_blank_line_before_class_docstring
preview style (#9154)Rule changes
CONSTANT_CASE
variables are improperly flagged for yoda violation (SIM300
) (#9164)flake8-pyi
] Cover ParamSpecs and TypeVarTuples (PYI018
) (#9198)flake8-bugbear
] Add fix forzip-without-explicit-strict
(B905
) (#9176)print
andpprint
statements (T201
,T203
) (#9208)Never
toNoReturn
in auto-typing in Python >= 3.11 (ANN201
) (#9213)Formatter
can_omit_optional_parentheses
: Exit early for unparenthesized expressions (#9125)dynamic
mode with doctests so that it doesn't exceed configured line width (#9129)can_omit_optional_parentheses
for expressions with a right most fstring (#9124)target_version
to formatter options (#9220)CLI
ruff format --check
to display message for already formatted files (#9153)Bug fixes
operator.contains
(#9192)D208
with multibyte indent (#9147)NoReturn
in auto-return-typing (#9206)typing
fromexempt-modules
(#9214)mutable-class-default
violations for Pydantic subclasses (#9187)PYI055
autofix (#9161)asyncio-dangling-task
violations on shadowed bindings (#9215)Documentation
v0.1.8
Compare Source
This release includes opt-in support for formatting Python snippets within
docstrings via the
docstring-code-format
setting.Check out the blog post for more details!
Preview features
"preserve"
quote-style to mimic Black's skip-string-normalization (#8822)prefer_splitting_right_hand_side_of_assignments
preview style (#8943)pycodestyle
] Add fix forunexpected-spaces-around-keyword-parameter-equals
(#9072)pycodestyle
] Add fix for comment-related whitespace rules (#9075)pycodestyle
] Allowsys.path
modifications between imports (#9047)refurb
] Implementhashlib-digest-hex
(FURB181
) (#9077)Rule changes
flake8-type-checking
rules to automatically quote runtime-evaluated references (#6001)flake8-annotations
] AvoidANN2xx
fixes for abstract methods with empty bodies (#9034)flake8-self
] Ignore underscore references in type annotations (#9036)pep8-naming
] Allow class names whenapps.get_model
is a non-string (#9065)pycodestyle
] Allowmatplotlib.use
calls to intersperse imports (#9094)pyflakes
] Support fixing unused assignments in tuples by renaming variables (F841
) (#9107)pylint
] Add fix forsubprocess-run-without-check
(PLW1510
) (#6708)Formatter
docstring-code-format
knob to enable docstring snippet formatting (#8854)CLI
--output-format
(#9078)Bug fixes
flake8-err-msg
] AllowEM
fixes even ifmsg
variable is defined (#9059)flake8-pie
] Prevent keyword arguments duplication (#8450)flake8-pie
] Respect trailing comma inunnecessary-dict-kwargs
(PIE804
) (#9015)flake8-raise
] Avoid removing parentheses on ctypes.WinError (#9027)isort
] Avoid invalid combination offorce-sort-within-types
andlines-between-types
(#9041)isort
] Ensure that from-style imports are always ordered first in__future__
(#9039)pycodestyle
] Allow tab indentation before keyword (#9099)pylint
] Ignore@overrides
and@overloads
fortoo-many-positional
(#9000)pyupgrade
] Enableprintf-string-formatting
fix with comments on right-hand side (#9037)refurb
] Makemath-constant
(FURB152
) rule more targeted (#9054)refurb
] Support floating-point base inredundant-log-base
(FURB163
) (#9100)ruff
] Detectunused-asyncio-dangling-task
(RUF006
) on unused assignments (#9060)v0.1.7
Compare Source
Preview features
fix_power_op_line_length
preview style (#8947)flake8-annotations
] Enable auto-return-type involvingOptional
andUnion
annotations (#8885)flake8-bandit
] Implementdjango-raw-sql
(S611
) (#8651)flake8-bandit
] Implementtarfile-unsafe-members
(S202
) (#8829)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 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 has been generated by Mend Renovate. View repository job log here.