Releases: astral-sh/ruff
Releases · astral-sh/ruff
v0.1.14
Changes
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)- Add
--extension
support to the formatter (#9483)
Configuration
- Ignore preview status for fixable and unfixable selectors (#9538)
- [
pycodestyle
] Use the configured tab size when expanding indents (#9506)
Bug fixes
- Recursively visit deferred AST nodes (#9541)
- Visit deferred lambdas before type definitions (#9540)
- [
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
- Add instructions on using
noqa
with isort rules (#9555) - Documentation update for URL giving 'page not found' (#9565)
- Fix admonition in dark mode (#9502)
- Update contributing docs to use
cargo bench -p ruff_benchmark
(#9535) - Update emacs integration section to include
emacs-ruff-format
(#9403) - [
flake8-blind-except
] Document exceptions toblind-except
rule (#9580)
Contributors
v0.1.13
Changes
Bug fixes
- Include base pyproject when initializing cache settings (#9480)
- [
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)
Contributors
v0.1.12
Changes
Preview features
- Formatter: Hug multiline-strings in preview style (#9243)
- [
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
- Generate deterministic IDs when formatting notebooks (#9359)
- Allow
# fmt: skip
with interspersed same-line comments (#9395) - Parenthesize breaking named expressions in match guards (#9396)
Bug fixes
- Add cell indexes to all diagnostics (#9387)
- Avoid infinite loop in constant vs.
None
comparisons (#9376) - Handle raises with implicit alternate branches (#9377)
- Ignore trailing quotes for unclosed l-brace errors (#9388)
- Respect multi-segment submodule imports when resolving qualified names (#9382)
- Use
DisplayParseError
for stdin parser errors (#9409) - Use
comment_ranges
for isort directive extraction (#9414) - Use transformed source code for diagnostic locations (#9408)
- [
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
Contributors
v0.1.11
v0.1.10
Changes
Preview features
- Improve
dummy_implementations
preview style formatting (#9240) - Normalise Hex and unicode escape sequences in strings (#9280)
- Parenthesize long type annotations in annotated assignments (#9210)
- Parenthesize multi-context managers in
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
- Add paths to TOML parse errors (#9358)
- Add row and column numbers to formatter parse errors (#9321)
- Improve responsiveness when invoked via Python (#9315)
- Short rule messages should not end with a period (#9345)
Configuration
- Respect runtime-required decorators on functions (#9317)
Bug fixes
- Avoid
asyncio-dangling-task
for nonlocal and global bindings (#9263) - Escape trailing placeholders in rule documentation (#9301)
- Fix continuation detection following multi-line strings (#9332)
- Fix scoping for generators in named expressions in classes (#9248)
- Port from obsolete wsl crate to is-wsl (#9356)
- Remove special pre-visit for module docstrings (#9261)
- Respect
__str__
definitions from super classes (#9338) - Respect
unused-noqa
viaper-file-ignores
(#9300) - Respect attribute chains when resolving builtin call paths (#9309)
- Treat all
typing_extensions
members as typing aliases (#9335) - Use
Display
for formatter parse errors (#9316) - Wrap subscripted dicts in parens for f-string conversion (#9238)
- [
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
- Expand target name for better rule documentation (#9302)
- Fix typos found by codespell (#9346)
- [
perflint
] DocumentPERF102
fix un-safety (#9351) - [
pyupgrade
] DocumentUP007
fix un-safety (#9306)
Contributors
v0.1.9
Changes
Breaking changes
- Add site-packages to default exclusions (#9188)
Preview features
- Fix: Avoid parenthesizing subscript targets and values (#9209)
- [
pylint
] Implementtoo-many-locals
(PLR0914
) (#9163) - Implement
reimplemented_operator
(FURB118) (#9171) - Add a rule to detect string members in runtime-evaluated unions (#9143)
- Implement
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) - Add fix to automatically remove
print
andpprint
statements (T201
,T203
) (#9208) - Prefer
Never
toNoReturn
in auto-typing in Python >= 3.11 (ANN201
) (#9213)
Formatter
can_omit_optional_parentheses
: Exit early for unparenthesized expressions (#9125)- Fix
dynamic
mode with doctests so that it doesn't exceed configured line width (#9129) - Fix
can_omit_optional_parentheses
for expressions with a right most fstring (#9124) - Add
target_version
to formatter options (#9220)
CLI
- Update
ruff format --check
to display message for already formatted files (#9153)
Bug fixes
- Reverse order of arguments for
operator.contains
(#9192) - Iterate over lambdas in deferred type annotations (#9175)
- Fix panic in
D208
with multibyte indent (#9147) - Add support for
NoReturn
in auto-return-typing (#9206) - Allow removal of
typing
fromexempt-modules
(#9214) - Avoid
mutable-class-default
violations for Pydantic subclasses (#9187) - Fix dropped union expressions for piped non-types in
PYI055
autofix (#9161) - Enable annotation quoting for multi-line expressions (#9142)
- Deduplicate edits when quoting annotations (#9140)
- Prevent invalid utf8 indexing in cell magic detection (#9146)
- Avoid nested quotations in auto-quoting fix (#9168)
- Add base-class inheritance detection to flake8-django rules (#9151)
- Avoid
asyncio-dangling-task
violations on shadowed bindings (#9215)
Documentation
- Fix blog post URL in changelog (#9119)
- Add error suppression hint for multi-line strings (#9205)
- Fix typo in SemanticModel.parent_expression docstring (#9167)
- Document link between import sorting and formatter (#9117)
Contributors
v0.1.8
Changes
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
- Add
"preserve"
quote-style to mimic Black's skip-string-normalization (#8822) - Implement
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
- Allow
flake8-type-checking
rules to automatically quote runtime-evaluated references (#6001) - Allow transparent cell magics in Jupyter Notebooks (#8911)
- [
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
- Add
docstring-code-format
knob to enable docstring snippet formatting (#8854) - Use double quotes for all docstrings, including single-quoted docstrings (#9020)
- Implement "dynamic" line width mode for docstring code formatting (#9098)
- Support reformatting Markdown code blocks (#9030)
- add support for formatting reStructuredText code snippets (#9003)
- Avoid trailing comma for single-argument with positional separator (#9076)
- Fix handling of trailing target comment (#9051)
CLI
- Hide unsafe fix suggestions when explicitly disabled (#9095)
- Add SARIF support to
--output-format
(#9078)
Bug fixes
- Apply unnecessary index rule prior to enumerate rewrite (#9012)
- [
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)
Contributors
v0.1.7
Changes
Preview features
- Implement multiline dictionary and list hugging for preview style (#8293)
- Implement the
fix_power_op_line_length
preview style (#8947) - Use Python version to determine typing rewrite safety (#8919)
- [
flake8-annotations
] Enable auto-return-type involvingOptional
andUnion
annotations (#8885) - [
flake8-bandit
] Implementdjango-raw-sql
(S611
) (#8651) - [
flake8-bandit
] Implementtarfile-unsafe-members
(S202
) (#8829) - [
flake8-pyi
] Implement fix forunnecessary-literal-union
(PYI030
) (#7934) - [
flake8-simplify
] Extenddict-get-with-none-default
(SIM910
) to non-literals (#8762) - [
pylint
] - addunnecessary-list-index-lookup
(PLR1736
) + autofix (#7999) - [
pylint
] - implement R0202 and R0203 with autofixes (#8335) - [
pylint
] Implementrepeated-keyword
(PLE1132
) (#8706) - [
pylint
] Implementtoo-many-positional
(PLR0917
) (#8995) - [
pylint
] Implementunnecessary-dict-index-lookup
(PLR1733
) (#8036) - [
refurb
] Implementredundant-log-base
(FURB163
) (#8842)
Rule changes
- [
flake8-boolean-trap
] Allow booleans in@override
methods (#8882) - [
flake8-bugbear
] AvoidB015
,B018
for last expression in a cell (#8815) - [
flake8-pie
] Allow ellipses for enum values in stub files (#8825) - [
flake8-pyi
] Check PEP 695 type aliases forsnake-case-type-alias
andt-suffixed-type-alias
(#8966) - [
flake8-pyi
] Check for kwarg and varargNoReturn
type annotations (#8948) - [
flake8-simplify
] Omit select context managers fromSIM117
(#8801) - [
pep8-naming
] Allow Django model loads innon-lowercase-variable-in-function
(N806
) (#8917) - [
pycodestyle
] AvoidE703
for last expression in a cell (#8821) - [
pycodestyle
] UpdateE402
to work at cell level for notebooks (#8872) - [
pydocstyle
] AvoidD100
for Jupyter Notebooks (#8816) - [
pylint
] Implement fix forunspecified-encoding
(PLW1514
) (#8928)
Formatter
- Avoid unstable formatting in ellipsis-only body with trailing comment (#8984)
- Inline trailing comments for type alias similar to assignments (#8941)
- Insert trailing comma when function breaks with single argument (#8921)
CLI
- Update
ruff check
andruff format
to default to the current directory (#8791) - Stop at the first resolved parent configuration (#8864)
Configuration
- [
pylint
] Defaultmax-positional-args
tomax-args
(#8998) - [
pylint
] Addallow-dunder-method-names
setting forbad-dunder-method-name
(PLW3201
) (#8812) - [
isort
] Add support forfrom-first
setting (#8663) - [
isort
] Add support forlength-sort
settings (#8841)
Bug fixes
- Add support for
@functools.singledispatch
(#8934) - Avoid off-by-one error in stripping noqa following multi-byte char (#8979)
- Avoid off-by-one error in with-item named expressions (#8915)
- Avoid syntax error via invalid ur string prefix (#8971)
- Avoid underflow in
get_model
matching (#8965) - Avoid unnecessary index diagnostics when value is modified (#8970)
- Convert over-indentation rule to use number of characters (#8983)
- Detect implicit returns in auto-return-types (#8952)
- Fix start >= end error in over-indentation (#8982)
- Ignore
@overload
and@override
methods for too-many-arguments checks (#8954) - Lexer start of line is false only for
Mode::Expression
(#8880) - Mark
pydantic_settings.BaseSettings
as having default copy semantics (#8793) - Respect dictionary unpacking in
NamedTuple
assignments (#8810) - Respect local subclasses in
flake8-type-checking
(#8768) - Support type alias statements in simple statement positions (#8916)
- [
flake8-annotations
] Avoid filtering out un-representable types in return annotation (#8881) - [
flake8-pie
] Retain extra ellipses in protocols and abstract methods (#8769) - [
flake8-pyi
] Respect local enum subclasses insimple-defaults
(PYI052
) (#8767) - [
flake8-trio
] Use correct range forTRIO115
fix (#8933) - [
flake8-trio
] Use full arguments range for zero-sleep-call (#8936) - [
isort
] fix: mark__main__
as first-party import (#8805) - [
pep8-naming
] AvoidN806
errors for type alias statements (#8785) - [
perflint
] AvoidPERF101
if there's an append in loop body (#8809) - [
pycodestyle
] Allow space-before-colon after end-of-slice (#8838) - [
pydocstyle
] Avoid non-character breaks inover-indentation
(D208
) (#8866) - [
pydocstyle
] Ignore underlines when determining docstring logical lines (#8929) - [
pylint
] Extendself-assigning-variable
to multi-target assignments (#8839) - [
tryceratops
] Avoid repeated triggers in nestedtryceratops
diagnostics (#8772)
Documentation
- Add advice for fixing RUF008 when mutability is not desired (#8853)
- Added the command to run ruff using pkgx to the installation.md (#8955)
- Document fix safety for flake8-comprehensions and some pyupgrade rules (#8918)
- Fix doc formatting for zero-sleep-call (#8937)
- Remove duplicate imports from os-stat documentation (#8930)
- Replace generated reference to MkDocs (#8806)
- Update Arch Linux package URL in installation.md (#8802)
- [
flake8-pyi
] Fix error int-suffixed-type-alias
(PYI043
) example (#8963) - [
flake8-pyi
] Improve motivation forcustom-type-var-return-type
(PYI019
) (#8766)
Contributors
v0.1.6
Changes
Preview features
- [
flake8-boolean-trap
] Extendboolean-type-hint-positional-argument
(FBT001
) to include booleans in unions (#7501) - [
flake8-pie
] Extendreimplemented-list-builtin
(PIE807
) todict
reimplementations (#8608) - [
flake8-pie
] Extendunnecessary-pass
(PIE790
) to include ellipses (...
) (#8641) - [
flake8-pie
] Implement fix forunnecessary-spread
(PIE800
) (#8668) - [
flake8-quotes
] Implementunnecessary-escaped-quote
(Q004
) (#8630) - [
pycodestyle
] Implement fix formultiple-spaces-after-keyword
(E271
) andmultiple-spaces-before-keyword
(E272
) (#8622) - [
pycodestyle
] Implement fix formultiple-spaces-after-operator
(E222
) andmultiple-spaces-before-operator
(E221
) (#8623) - [
pyflakes
] Extendis-literal
(F632
) to include comparisons against mutable initializers (#8607) - [
pylint
] Implementredefined-argument-from-local
(PLR1704
) (#8159) - [
pylint
] Implement fix forunnecessary-lambda
(PLW0108
) (#8621) - [
refurb
] Implementif-expr-min-max
(FURB136
) (#8664) - [
refurb
] Implementmath-constant
(FURB152
) (#8727)
Rule changes
- [
flake8-annotations
] Add autotyping-like return type inference for annotation rules (#8643) - [
flake8-future-annotations
] Implement fix forfuture-required-type-annotation
(FA102
) (#8711) - [
flake8-implicit-namespace-package
] Avoid missing namespace violations in scripts with shebangs (#8710) - [
pydocstyle
] Updateover-indentation
(D208
) to preserve indentation offsets when fixing overindented lines (#8699) - [
pyupgrade
] Refinetimeout-error-alias
(UP041
) to remove false positives (#8587)
Formatter
- Fix instability in
await
formatting with fluent style (#8676) - Compare formatted and unformatted ASTs during formatter tests (#8624)
- Preserve trailing semicolon for Notebooks (#8590)
CLI
- Improve debug printing for resolving origin of config settings (#8729)
- Write unchanged, excluded files to stdout when read via stdin (#8596)
Configuration
- [
isort
] Support disabling sections withno-sections = true
(#8657) - [
pep8-naming
] Support local and dynamic class- and static-method decorators (#8592) - [
pydocstyle
] Allow overriding pydocstyle convention rules (#8586)
Bug fixes
- Avoid syntax error via importing
trio.lowlevel
(#8730) - Omit unrolled augmented assignments in
PIE794
(#8634) - Slice source code instead of generating it for
EM
fixes (#7746) - Allow whitespace around colon in slices for
whitespace-before-punctuation
(E203
) (#8654) - Use function range for
no-self-use
(#8637) - F-strings doesn't contain bytes literal for
PLW0129
(#8675) - Improve detection of
TYPE_CHECKING
blocks imported fromtyping_extensions
or_typeshed
(#8429) - Treat display as a builtin in IPython (#8707)
- Avoid
FURB113
autofix if comments are present (#8494) - Consider the new f-string tokens for
flake8-commas
(#8582) - Remove erroneous bad-dunder-name reference (#8742)
- Avoid recommending Self usages in metaclasses (#8639)
- Detect runtime-evaluated base classes defined in the current file (#8572)
- Avoid inserting trailing commas within f-strings (#8574)
- Remove incorrect deprecation label for stdout and stderr (#8743)
- Fix unnecessary parentheses in UP007 fix (#8610)
- Remove repeated and erroneous scoped settings headers in docs (#8670)
- Trim trailing empty strings when converting to f-strings (#8712)
- Fix ordering for
force-sort-within-sections
(#8665) - Run unicode prefix rule over tokens (#8709)
- Update UP032 to unescape curly braces in literal parts of converted strings (#8697)
- List all ipython builtins (#8719)
Documentation
- Document conventions in the FAQ (#8638)
- Redirect from rule codes to rule pages in docs (#8636)
- Fix permalink to convention setting (#8575)
Contributors
v0.1.5
Changes
Preview features
- [
flake8-bandit
] Implementmako-templates
(S702
) (#8533) - [
flake8-trio
] ImplementTRIO105
(#8490) - [
flake8-trio
] ImplementTRIO109
(#8534) - [
flake8-trio
] ImplementTRIO110
(#8537) - [
flake8-trio
] ImplementTRIO115
(#8486) - [
refurb
] Implementtype-none-comparison
(FURB169
) (#8487) - Flag all comparisons against builtin types in
E721
(#8491) - Make
SIM118
fix as safe when the expression is a known dictionary (#8525)
Formatter
- Fix multiline lambda expression statement formatting (#8466)
CLI
- Add hidden
--extension
to override inference of source type from file extension (#8373)
Configuration
- Account for selector specificity when merging
extend_unsafe_fixes
andoverride extend_safe_fixes
(#8444) - Add support for disabling cache with
RUFF_NO_CACHE
environment variable (#8538)
Bug fixes
- [
E721
] Flag comparisons tomemoryview
(#8485) - Allow collapsed-ellipsis bodies in other statements (#8499)
- Avoid
D301
autofix foru
prefixed strings (#8495) - Only flag
flake8-trio
rules whentrio
import is present (#8550) - Reject more syntactically invalid Python programs (#8524)
- Avoid raising
TRIO115
violations fortrio.sleep(...)
calls with non-number values (#8532) - Fix
F841
false negative on assignment to multiple variables (#8489)
Documentation
- Fix link to isort
known-first-party
(#8562) - Add notes on fix safety to a few rules (#8500)
- Add missing toml config tabs (#8512)
- Add instructions for configuration of Emacs (#8488)
- Improve detail link contrast in dark mode (#8548)
- Fix typo in example (#8506)
- Added tabs for configuration files in the documentation (#8480)
- Recommend
project.requires-python
overtarget-version
(#8513) - Add singleton escape hatch to
B008
documentation (#8501) - Fix tab configuration docs (#8502)