Skip to content

Releases: astral-sh/ruff

v0.1.14

19 Jan 20:22
866bea6
Compare
Choose a tag to compare

Changes

Preview features

  • [flake8-bugbear] Add fix for duplicate-value (B033) (#9510)
  • [flake8-simplify] Implement enumerate-for-loop (SIM113) (#7777)
  • [pygrep_hooks] Add fix for deprecated-log-warn (PGH002) (#9519)
  • [pylint] Implement import-private-name (C2701) (#5920)
  • [refurb] Implement regex-flag-alias with fix (FURB167) (#9516)
  • [ruff] Add rule and fix to sort contents of __all__ (RUF022) (#9474)
  • [tryceratops] Add fix for error-instead-of-exception (TRY400) (#9520)

Rule changes

  • [flake8-pyi] Fix PYI047 false negatives on PEP-695 type aliases (#9566)
  • [flake8-pyi] Fix PYI049 false negatives on call-based TypedDicts (#9567)
  • [pylint] Exclude self and cls 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 more enumerate-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 when reimplemented-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 to blind-except rule (#9580)

Contributors

v0.1.13

12 Jan 15:52
d16c4a2
Compare
Choose a tag to compare

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 in unnecessary-dunder-call (#9485)
  • [pylint] Fix __aenter__ message in unnecessary-dunder-call (#9492)

Contributors

v0.1.12

11 Jan 22:52
55f8f3b
Compare
Choose a tag to compare

Changes

Preview features

  • Formatter: Hug multiline-strings in preview style (#9243)
  • [flake8-bandit] Add ssl-with-no-version (S504) (#9384)
  • [flake8-bandit] Implement ssl-insecure-version (S502) (#9390)
  • [flake8-bandit] Implement ssl-with-bad-defaults (S503) (#9391)
  • [flake8-bandit] Implement suspicious import rules (S4XX) (#8831)
  • [flake8-simplify] Implement zip-dict-keys-and-values (SIM911) (#9460)
  • [pyflakes] Add a fix for redefined-while-unused (F811) (#9419)
  • [pylint] Implement unnecessary-dunder-call (C2801) (#9166)
  • [ruff] Add parenthesize-chained-operators (RUF021) to enforce parentheses in a or b and c (#9440)

Rule changes

  • [flake8-boolean-trap] Allow Boolean positional arguments in setters (#9429)
  • [flake8-builtins] Restrict builtin-attribute-shadowing (A003) to actual shadowed references (#9462)
  • [flake8-pyi] Add fix for generator-return-from-iter-method (PYI058) (#9355)
  • [pyflakes] Don't flag redefined-while-unused (F811) in if branches (#9418)
  • [pyupgrade] Add some additional Python 3.12 typing members to deprecated-import (#9445)
  • [ruff] Add fix for parenthesize-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] Exclude warnings.deprecated and typing_extensions.deprecated arguments (#9423)
  • [flake8-pyi] Fix false negative for unused-private-protocol (PYI046) with unused generic protocols (#9405)
  • [pydocstyle] Disambiguate argument descriptors from section headers (#9427)
  • [pylint] Homogenize PLR0914 message to match other PLR09XX rules (#9399)
  • [ruff] Allow Hashable = None in type annotations (RUF013) (#9442)

Documentation

  • Fix admonition hyperlink colouring (#9385)
  • Add missing preview link (#9386)

Contributors

v0.1.11

02 Jan 23:05
fefc7e8
Compare
Choose a tag to compare

Changes

Preview features

  • [pylint] Implement super-without-brackets (W0245) (#9257)

Bug fixes

  • Check path string properly in python -m ruff invocations (#9367)

Documentation

  • Tweak relative-imports message (#9365)
  • Add fix safety note for yield-in-for-loop (#9364)

Contributors

v0.1.10

02 Jan 18:27
2743387
Compare
Choose a tag to compare

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] Implement generator-return-from-iter-method (PYI058) (#9313)
  • [pylint] Implement empty-comment (PLR2044) (#9174)
  • [refurb] Implement bit-count (FURB161) (#9265)
  • [ruff] Add never-union rule to detect redundant typing.NoReturn and typing.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 via per-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 mixed return and raise cases in return-type analysis (#9310)
  • [flake8-bandit] Don't report violations when SafeLoader is imported from yaml.loader (S506) (#9299)
  • [pylint] Avoid panic when comment is preceded by Unicode (#9331)
  • [pylint] Change PLR0917 error message to match other PLR09XX messages (#9308)
  • [refurb] Avoid false positives for math-constant (FURB152) (#9290)

Documentation

  • Expand target name for better rule documentation (#9302)
  • Fix typos found by codespell (#9346)
  • [perflint] Document PERF102 fix un-safety (#9351)
  • [pyupgrade] Document UP007 fix un-safety (#9306)

Contributors

v0.1.9

21 Dec 18:46
0263f27
Compare
Choose a tag to compare

Changes

Breaking changes

  • Add site-packages to default exclusions (#9188)

Preview features

  • Fix: Avoid parenthesizing subscript targets and values (#9209)
  • [pylint] Implement too-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 for zip-without-explicit-strict (B905) (#9176)
  • Add fix to automatically remove print and pprint statements (T201, T203) (#9208)
  • Prefer Never to NoReturn 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 from exempt-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

13 Dec 19:15
c014622
Compare
Choose a tag to compare

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 for unexpected-spaces-around-keyword-parameter-equals (#9072)
  • [pycodestyle] Add fix for comment-related whitespace rules (#9075)
  • [pycodestyle] Allow sys.path modifications between imports (#9047)
  • [refurb] Implement hashlib-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] Avoid ANN2xx fixes for abstract methods with empty bodies (#9034)
  • [flake8-self] Ignore underscore references in type annotations (#9036)
  • [pep8-naming] Allow class names when apps.get_model is a non-string (#9065)
  • [pycodestyle] Allow matplotlib.use calls to intersperse imports (#9094)
  • [pyflakes] Support fixing unused assignments in tuples by renaming variables (F841) (#9107)
  • [pylint] Add fix for subprocess-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] Allow EM fixes even if msg variable is defined (#9059)
  • [flake8-pie] Prevent keyword arguments duplication (#8450)
  • [flake8-pie] Respect trailing comma in unnecessary-dict-kwargs (PIE804) (#9015)
  • [flake8-raise] Avoid removing parentheses on ctypes.WinError (#9027)
  • [isort] Avoid invalid combination of force-sort-within-types and lines-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 for too-many-positional (#9000)
  • [pyupgrade] Enable printf-string-formatting fix with comments on right-hand side (#9037)
  • [refurb] Make math-constant (FURB152) rule more targeted (#9054)
  • [refurb] Support floating-point base in redundant-log-base (FURB163) (#9100)
  • [ruff] Detect unused-asyncio-dangling-task (RUF006) on unused assignments (#9060)

Contributors

v0.1.7

04 Dec 23:28
8d9912a
Compare
Choose a tag to compare

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 involving Optional and Union annotations (#8885)
  • [flake8-bandit] Implement django-raw-sql (S611) (#8651)
  • [flake8-bandit] Implement tarfile-unsafe-members (S202) (#8829)
  • [flake8-pyi] Implement fix for unnecessary-literal-union (PYI030) (#7934)
  • [flake8-simplify] Extend dict-get-with-none-default (SIM910) to non-literals (#8762)
  • [pylint] - add unnecessary-list-index-lookup (PLR1736) + autofix (#7999)
  • [pylint] - implement R0202 and R0203 with autofixes (#8335)
  • [pylint] Implement repeated-keyword (PLE1132) (#8706)
  • [pylint] Implement too-many-positional (PLR0917) (#8995)
  • [pylint] Implement unnecessary-dict-index-lookup (PLR1733) (#8036)
  • [refurb] Implement redundant-log-base (FURB163) (#8842)

Rule changes

  • [flake8-boolean-trap] Allow booleans in @override methods (#8882)
  • [flake8-bugbear] Avoid B015,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 for snake-case-type-alias and t-suffixed-type-alias (#8966)
  • [flake8-pyi] Check for kwarg and vararg NoReturn type annotations (#8948)
  • [flake8-simplify] Omit select context managers from SIM117 (#8801)
  • [pep8-naming] Allow Django model loads in non-lowercase-variable-in-function (N806) (#8917)
  • [pycodestyle] Avoid E703 for last expression in a cell (#8821)
  • [pycodestyle] Update E402 to work at cell level for notebooks (#8872)
  • [pydocstyle] Avoid D100 for Jupyter Notebooks (#8816)
  • [pylint] Implement fix for unspecified-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 and ruff format to default to the current directory (#8791)
  • Stop at the first resolved parent configuration (#8864)

Configuration

  • [pylint] Default max-positional-args to max-args (#8998)
  • [pylint] Add allow-dunder-method-names setting for bad-dunder-method-name (PLW3201) (#8812)
  • [isort] Add support for from-first setting (#8663)
  • [isort] Add support for length-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 in simple-defaults (PYI052) (#8767)
  • [flake8-trio] Use correct range for TRIO115 fix (#8933)
  • [flake8-trio] Use full arguments range for zero-sleep-call (#8936)
  • [isort] fix: mark __main__ as first-party import (#8805)
  • [pep8-naming] Avoid N806 errors for type alias statements (#8785)
  • [perflint] Avoid PERF101 if there's an append in loop body (#8809)
  • [pycodestyle] Allow space-before-colon after end-of-slice (#8838)
  • [pydocstyle] Avoid non-character breaks in over-indentation (D208) (#8866)
  • [pydocstyle] Ignore underlines when determining docstring logical lines (#8929)
  • [pylint] Extend self-assigning-variable to multi-target assignments (#8839)
  • [tryceratops] Avoid repeated triggers in nested tryceratops 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 in t-suffixed-type-alias (PYI043) example (#8963)
  • [flake8-pyi] Improve motivation for custom-type-var-return-type (PYI019) (#8766)

Contributors

v0.1.6

17 Nov 18:52
f460f9c
Compare
Choose a tag to compare

Changes

Preview features

  • [flake8-boolean-trap] Extend boolean-type-hint-positional-argument (FBT001) to include booleans in unions (#7501)
  • [flake8-pie] Extend reimplemented-list-builtin (PIE807) to dict reimplementations (#8608)
  • [flake8-pie] Extend unnecessary-pass (PIE790) to include ellipses (...) (#8641)
  • [flake8-pie] Implement fix for unnecessary-spread (PIE800) (#8668)
  • [flake8-quotes] Implement unnecessary-escaped-quote (Q004) (#8630)
  • [pycodestyle] Implement fix for multiple-spaces-after-keyword (E271) and multiple-spaces-before-keyword (E272) (#8622)
  • [pycodestyle] Implement fix for multiple-spaces-after-operator (E222) and multiple-spaces-before-operator (E221) (#8623)
  • [pyflakes] Extend is-literal (F632) to include comparisons against mutable initializers (#8607)
  • [pylint] Implement redefined-argument-from-local (PLR1704) (#8159)
  • [pylint] Implement fix for unnecessary-lambda (PLW0108) (#8621)
  • [refurb] Implement if-expr-min-max (FURB136) (#8664)
  • [refurb] Implement math-constant (FURB152) (#8727)

Rule changes

  • [flake8-annotations] Add autotyping-like return type inference for annotation rules (#8643)
  • [flake8-future-annotations] Implement fix for future-required-type-annotation (FA102) (#8711)
  • [flake8-implicit-namespace-package] Avoid missing namespace violations in scripts with shebangs (#8710)
  • [pydocstyle] Update over-indentation (D208) to preserve indentation offsets when fixing overindented lines (#8699)
  • [pyupgrade] Refine timeout-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 with no-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 from typing_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

08 Nov 23:19
3956f38
Compare
Choose a tag to compare

Changes

Preview features

  • [flake8-bandit] Implement mako-templates (S702) (#8533)
  • [flake8-trio] Implement TRIO105 (#8490)
  • [flake8-trio] Implement TRIO109 (#8534)
  • [flake8-trio] Implement TRIO110 (#8537)
  • [flake8-trio] Implement TRIO115 (#8486)
  • [refurb] Implement type-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 and override extend_safe_fixes (#8444)
  • Add support for disabling cache with RUFF_NO_CACHE environment variable (#8538)

Bug fixes

  • [E721] Flag comparisons to memoryview (#8485)
  • Allow collapsed-ellipsis bodies in other statements (#8499)
  • Avoid D301 autofix for u prefixed strings (#8495)
  • Only flag flake8-trio rules when trio import is present (#8550)
  • Reject more syntactically invalid Python programs (#8524)
  • Avoid raising TRIO115 violations for trio.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 over target-version (#8513)
  • Add singleton escape hatch to B008 documentation (#8501)
  • Fix tab configuration docs (#8502)

Contributors