Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dependency ruff to v0.4.4 #1854

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Feb 6, 2024

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
ruff (source, changelog) 0.2.0 -> 0.4.4 age adoption passing confidence

Release Notes

astral-sh/ruff (ruff)

v0.4.4

Compare Source

Preview features
  • [pycodestyle] Ignore end-of-line comments when determining blank line rules (#​11342)
  • [pylint] Detect pathlib.Path.open calls in unspecified-encoding (PLW1514) (#​11288)
  • [flake8-pyi] Implement PYI059 (generic-not-last-base-class) (#​11233)
  • [flake8-pyi] Implement PYI062 (duplicate-literal-member) (#​11269)
Rule changes
  • [flake8-boolean-trap] Allow passing booleans as positional-only arguments in code such as set(True) (#​11287)
  • [flake8-bugbear] Ignore enum classes in cached-instance-method (B019) (#​11312)
Server
  • Expand tildes when resolving Ruff server configuration file (#​11283)
  • Fix ruff server hanging after Neovim closes (#​11291)
  • Editor settings are used by default if no file-based configuration exists (#​11266)
Bug fixes
  • [pylint] Consider with statements for too-many-branches (PLR0912) (#​11321)
  • [flake8-blind-except, tryceratops] Respect logged and re-raised expressions in nested statements (BLE001, TRY201) (#​11301)
  • Recognise assignments such as __all__ = builtins.list(["foo", "bar"]) as valid __all__ definitions (#​11335)

v0.4.3

Compare Source

Enhancements
Preview features
  • [refurb] Use function range for reimplemented-operator diagnostics (#​11271)
  • [refurb] Ignore methods in reimplemented-operator (FURB118) (#​11270)
  • [refurb] Implement fstring-number-format (FURB116) (#​10921)
  • [ruff] Implement redirected-noqa (RUF101) (#​11052)
  • [pyflakes] Distinguish between first-party and third-party imports for fix suggestions (#​11168)
Rule changes
  • [flake8-bugbear] Ignore non-abstract class attributes when enforcing B024 (#​11210)
  • [flake8-logging] Include inline instantiations when detecting loggers (#​11154)
  • [pylint] Also emit PLR0206 for properties with variadic parameters (#​11200)
  • [ruff] Detect duplicate codes as part of unused-noqa (RUF100) (#​10850)
Formatter
  • Avoid multiline expression if format specifier is present (#​11123)
LSP
  • Write ruff server setup guide for Helix (#​11183)
  • ruff server no longer hangs after shutdown (#​11222)
  • ruff server reads from a configuration TOML file in the user configuration directory if no local configuration exists (#​11225)
  • ruff server respects per-file-ignores configuration (#​11224)
  • ruff server: Support a custom TOML configuration file (#​11140)
  • ruff server: Support setting to prioritize project configuration over editor configuration (#​11086)
Bug fixes
  • Avoid debug assertion around NFKC renames (#​11249)
  • [pyflakes] Prioritize redefined-while-unused over unused-import (#​11173)
  • [ruff] Respect async expressions in comprehension bodies (#​11219)
  • [pygrep_hooks] Fix blanket-noqa panic when last line has noqa with no newline (PGH004) (#​11108)
  • [perflint] Ignore list-copy recommendations for async for loops (#​11250)
  • [pyflakes] Improve invalid-print-syntax documentation (#​11171)
Performance
  • Avoid allocations for isort module names (#​11251)
  • Build a separate ARM wheel for macOS (#​11149)

v0.4.2

Compare Source

Rule changes
  • [flake8-pyi] Allow for overloaded __exit__ and __aexit__ definitions (PYI036) (#​11057)
  • [pyupgrade] Catch usages of "%s" % var and provide an unsafe fix (UP031) (#​11019)
  • [refurb] Implement new rule that suggests min/max over sorted() (FURB192) (#​10868)
Server
  • Fix an issue with missing diagnostics for Neovim and Helix (#​11092)
  • Implement hover documentation for noqa codes (#​11096)
  • Introduce common Ruff configuration options with new server settings (#​11062)
Bug fixes
  • Use macos-12 for building release wheels to enable macOS 11 compatibility (#​11146)
  • [flake8-blind-expect] Allow raise from in BLE001 (#​11131)
  • [flake8-pyi] Allow simple assignments to None in enum class scopes (PYI026) (#​11128)
  • [flake8-simplify] Avoid raising SIM911 for non-zip attribute calls (#​11126)
  • [refurb] Avoid operator.itemgetter suggestion for single-item tuple (#​11095)
  • [ruff] Respect per-file-ignores for RUF100 with no other diagnostics (#​11058)
  • [ruff] Fix async comprehension false positive (RUF029) (#​11070)
Documentation
  • [flake8-bugbear] Document explicitly disabling strict zip (B905) (#​11040)
  • [flake8-type-checking] Mention lint.typing-modules in TCH001, TCH002, and TCH003 (#​11144)
  • [isort] Improve documentation around custom isort sections (#​11050)
  • [pylint] Fix documentation oversight for invalid-X-returns (#​11094)
Performance
  • Use matchit to resolve per-file settings (#​11111)

v0.4.1

Compare Source

Preview features
  • [pylint] Implement invalid-hash-returned (PLE0309) (#​10961)
  • [pylint] Implement invalid-index-returned (PLE0305) (#​10962)
Bug fixes
  • [pylint] Allow NoReturn-like functions for __str__, __len__, etc. (PLE0307) (#​11017)
  • Parser: Use empty range when there's "gap" in token source (#​11032)
  • [ruff] Ignore stub functions in unused-async (RUF029) (#​11026)
  • Parser: Expect indented case block instead of match stmt (#​11033)

v0.4.0

Compare Source

A new, hand-written parser

Ruff's new parser is >2x faster, which translates to a 20-40% speedup for all linting and formatting invocations.
There's a lot to say about this exciting change, so check out the blog post for more details!

See #​10036 for implementation details.

A new language server in Rust

With this release, we also want to highlight our new language server. ruff server is a Rust-powered language
server that comes built-in with Ruff. It can be used with any editor that supports the Language Server Protocol (LSP).
It uses a multi-threaded, lock-free architecture inspired by rust-analyzer and it will open the door for a lot
of exciting features. It’s also faster than our previous Python-based language server
-- but you probably guessed that already.

ruff server is only in alpha, but it has a lot of features that you can try out today:

  • Lints Python files automatically and shows quick-fixes when available
  • Formats Python files, with support for range formatting
  • Comes with commands for quickly performing actions: ruff.applyAutofix, ruff.applyFormat, and ruff.applyOrganizeImports
  • Supports source.fixAll and source.organizeImports source actions
  • Automatically reloads your project configuration when you change it

To setup ruff server with your editor, refer to the README.md.

Preview features
  • [pycodestyle] Do not trigger E3 rules on defs following a function/method with a dummy body (#​10704)
  • [pylint] Implement invalid-bytes-returned (E0308) (#​10959)
  • [pylint] Implement invalid-length-returned (E0303) (#​10963)
  • [pylint] Implement self-cls-assignment (W0642) (#​9267)
  • [pylint] Omit stubs from invalid-bool and invalid-str-return-type (#​11008)
  • [ruff] New rule unused-async (RUF029) to detect unneeded async keywords on functions (#​9966)
Rule changes
  • [flake8-bandit] Allow urllib.request.urlopen calls with static Request argument (S310) (#​10964)
  • [flake8-bugbear] Treat raise NotImplemented-only bodies as stub functions (B006) (#​10990)
  • [flake8-slots] Respect same-file Enum subclasses (SLOT000) (#​11006)
  • [pylint] Support inverted comparisons (PLR1730) (#​10920)
Linter
  • Improve handling of builtin symbols in linter rules (#​10919)
  • Improve display of rules in --show-settings (#​11003)
  • Improve inference capabilities of the BuiltinTypeChecker (#​10976)
  • Resolve classes and functions relative to script name (#​10965)
  • Improve performance of RuleTable::any_enabled (#​10971)
Server

This section is devoted to updates for our new language server, written in Rust.

  • Enable ruff-specific source actions (#​10916)
  • Refreshes diagnostics for open files when file configuration is changed (#​10988)
  • Important errors are now shown as popups (#​10951)
  • Introduce settings for directly configuring the linter and formatter (#​10984)
  • Resolve configuration for each document individually (#​10950)
  • Write a setup guide for Neovim (#​10987)
Configuration
  • Add RUFF_OUTPUT_FILE environment variable support (#​10992)
Bug fixes
  • Avoid non-augmented-assignment for reversed, non-commutative operators (PLR6104) (#​10909)
  • Limit commutative non-augmented-assignments to primitive data types (PLR6104) (#​10912)
  • Respect per-file-ignores for RUF100 on blanket # noqa (#​10908)
  • Consider if expression for parenthesized with items parsing (#​11010)
  • Consider binary expr for parenthesized with items parsing (#​11012)
  • Reset FOR_TARGET context for all kinds of parentheses (#​11009)

v0.3.7

Compare Source

Preview features
  • [flake8-bugbear] Implement loop-iterator-mutation (B909) (#​9578)
  • [pylint] Implement rule to prefer augmented assignment (PLR6104) (#​9932)
Bug fixes
  • Avoid TOCTOU errors in cache initialization (#​10884)
  • [pylint] Recode nan-comparison rule to W0177 (#​10894)
  • [pylint] Reverse min-max logic in if-stmt-min-max (#​10890)

v0.3.6

Compare Source

Preview features
  • [pylint] Implement bad-staticmethod-argument (PLW0211) (#​10781)
  • [pylint] Implement if-stmt-min-max (PLR1730, PLR1731) (#​10002)
  • [pyupgrade] Replace str,Enum multiple inheritance with StrEnum UP042 (#​10713)
  • [refurb] Implement if-expr-instead-of-or-operator (FURB110) (#​10687)
  • [refurb] Implement int-on-sliced-str (FURB166) (#​10650)
  • [refurb] Implement write-whole-file (FURB103) (#​10802)
  • [refurb] Support itemgetter in reimplemented-operator (FURB118) (#​10526)
  • [flake8_comprehensions] Add sum/min/max to unnecessary comprehension check (C419) (#​10759)
Rule changes
  • [pydocstyle] Require capitalizing docstrings where the first sentence is a single word (D403) (#​10776)
  • [pycodestyle] Ignore annotated lambdas in class scopes (E731) (#​10720)
  • [flake8-pyi] Various improvements to PYI034 (#​10807)
  • [flake8-slots] Flag subclasses of call-based typing.NamedTuples as well as subclasses of collections.namedtuple() (SLOT002) (#​10808)
  • [pyflakes] Allow forward references in class bases in stub files (F821) (#​10779)
  • [pygrep-hooks] Improve blanket-noqa error message (PGH004) (#​10851)
CLI
Configuration
  • Support negated patterns in [extend-]per-file-ignores (#​10852)
Bug fixes
  • [flake8-import-conventions] Accept non-aliased (but correct) import in unconventional-import-alias (ICN001) (#​10729)
  • [flake8-quotes] Add semantic model flag when inside f-string replacement field (#​10766)
  • [pep8-naming] Recursively resolve TypeDicts for N815 violations (#​10719)
  • [flake8-quotes] Respect Q00* ignores in flake8-quotes rules (#​10728)
  • [flake8-simplify] Show negated condition in needless-bool diagnostics (SIM103) (#​10854)
  • [ruff] Use within-scope shadowed bindings in asyncio-dangling-task (RUF006) (#​10793)
  • [flake8-pytest-style] Fix single-tuple conversion in pytest-parametrize-values-wrong-type (PT007) (#​10862)
  • [flake8-return] Ignore assignments to annotated variables in unnecessary-assign (RET504) (#​10741)
  • [refurb] Do not allow any keyword arguments for read-whole-file in rb mode (FURB101) (#​10803)
  • [pylint] Don't recommend decorating staticmethods with @singledispatch (PLE1519, PLE1520) (#​10637)
  • [pydocstyle] Use section name range for all section-related docstring diagnostics (#​10740)
  • Respect # noqa directives on __all__ openers (#​10798)

v0.3.5

Compare Source

Preview features
  • [pylint] Implement modified-iterating-set (E4703) (#​10473)
  • [refurb] Implement for-loop-set-mutations (FURB142) (#​10583)
  • [refurb] Implement unnecessary-from-float (FURB164) (#​10647)
  • [refurb] Implement verbose-decimal-constructor (FURB157) (#​10533)
Rule changes
  • [flake8-comprehensions] Handled special case for C401 which also matches C416 (#​10596)
  • [flake8-pyi] Mark unaliased-collections-abc-set-import fix as "safe" for more cases in stub files (PYI025) (#​10547)
  • [numpy] Add row_stack to NumPy 2.0 migration rule (#​10646)
  • [pycodestyle] Allow cell magics before an import (E402) (#​10545)
  • [pycodestyle] Avoid blank line rules for the first logical line in cell (#​10291)
Configuration
  • Respected nested namespace packages (#​10541)
  • [flake8-boolean-trap] Add setting for user defined allowed boolean trap (#​10531)
Bug fixes
  • Correctly handle references in __all__ definitions when renaming symbols in autofixes (#​10527)
  • Track ranges of names inside __all__ definitions (#​10525)
  • [flake8-bugbear] Avoid false positive for usage after continue (B031) (#​10539)
  • [flake8-copyright] Accept commas in default copyright pattern (#​9498)
  • [flake8-datetimez] Allow f-strings with %z for DTZ007 (#​10651)
  • [flake8-pytest-style] Fix PT014 autofix for last item in list (#​10532)
  • [flake8-quotes] Ignore Q000, Q001 when string is inside forward ref (#​10585)
  • [isort] Always place non-relative imports after relative imports (#​10669)
  • [isort] Respect Unicode characters in import sorting (#​10529)
  • [pyflakes] Fix F821 false negatives when from __future__ import annotations is active (attempt 2) (#​10524)
  • [pyflakes] Make unnecessary-lambda an always-unsafe fix (#​10668)
  • [pylint] Fixed false-positive on the rule PLW1641 (eq-without-hash) (#​10566)
  • [ruff] Fix panic in unused # noqa removal with multi-byte space (RUF100) (#​10682)
Documentation
  • Add PR title format to CONTRIBUTING.md (#​10665)
  • Fix list markup to include blank lines required (#​10591)
  • Put flake8-logging next to the other flake8 plugins in registry (#​10587)
  • [flake8-bandit] Update warning message for rule S305 to address insecure block cipher mode use (#​10602)
  • [flake8-bugbear] Document use of anonymous assignment in useless-expression (#​10551)
  • [flake8-datetimez] Clarify error messages and docs for DTZ rules (#​10621)
  • [pycodestyle] Use same before vs. after numbers for space-around-operator (#​10640)
  • [ruff] Change quadratic-list-summation docs to use iadd consistently (#​10666)

v0.3.4

Compare Source

Preview features
  • [flake8-simplify] Detect implicit else cases in needless-bool (SIM103) (#​10414)
  • [pylint] Implement nan-comparison (PLW0117) (#​10401)
  • [pylint] Implement nonlocal-and-global (E115) (#​10407)
  • [pylint] Implement singledispatchmethod-function (PLE5120) (#​10428)
  • [refurb] Implement list-reverse-copy (FURB187) (#​10212)
Rule changes
  • [flake8-pytest-style] Add automatic fix for pytest-parametrize-values-wrong-type (PT007) (#​10461)
  • [pycodestyle] Allow SPDX license headers to exceed the line length (E501) (#​10481)
Formatter
  • Fix unstable formatting for trailing subscript end-of-line comment (#​10492)
Bug fixes
  • Avoid code comment detection in PEP 723 script tags (#​10464)
  • Avoid incorrect tuple transformation in single-element case (C409) (#​10491)
  • Bug fix: Prevent fully defined links name from being reformatted (#​10442)
  • Consider raw source code for W605 (#​10480)
  • Docs: Link inline settings when not part of options section (#​10499)
  • Don't treat annotations as redefinitions in .pyi files (#​10512)
  • Fix E231 bug: Inconsistent catch compared to pycodestyle, such as when dict nested in list (#​10469)
  • Fix pylint upstream categories not showing in docs (#​10441)
  • Add missing Options references to blank line docs (#​10498)
  • 'Revert "F821: Fix false negatives in .py files when from __future__ import annotations is active (#​10362)"' (#​10513)
  • Apply NFKC normalization to unicode identifiers in the lexer (#​10412)
  • Avoid failures due to non-deterministic binding ordering (#​10478)
  • [flake8-bugbear] Allow tuples of exceptions (B030) (#​10437)
  • [flake8-quotes] Avoid syntax errors due to invalid quotes (Q000, Q002) (#​10199)

v0.3.3

Compare Source

Preview features
  • [flake8-bandit]: Implement S610 rule (#​10316)
  • [pycodestyle] Implement blank-line-at-end-of-file (W391) (#​10243)
  • [pycodestyle] Implement redundant-backslash (E502) (#​10292)
  • [pylint] - implement redeclared-assigned-name (W0128) (#​9268)
Rule changes
  • [flake8_comprehensions] Handled special case for C400 which also matches C416 (#​10419)
  • [flake8-bandit] Implement upstream updates for S311, S324 and S605 (#​10313)
  • [pyflakes] Remove F401 fix for __init__ imports by default and allow opt-in to unsafe fix (#​10365)
  • [pylint] Implement invalid-bool-return-type (E304) (#​10377)
  • [pylint] Include builtin warnings in useless-exception-statement (PLW0133) (#​10394)
CLI
  • Add message on success to ruff check (#​8631)
Bug fixes
  • [PIE970] Allow trailing ellipsis in typing.TYPE_CHECKING (#​10413)
  • Avoid TRIO115 if the argument is a variable (#​10376)
  • [F811] Avoid removing shadowed imports that point to different symbols (#​10387)
  • Fix F821 and F822 false positives in .pyi files (#​10341)
  • Fix F821 false negatives in .py files when from __future__ import annotations is active (#​10362)
  • Fix case where Indexer fails to identify continuation preceded by newline #​10351 (#​10354)
  • Sort hash maps in Settings display (#​10370)
  • Track conditional deletions in the semantic model (#​10415)
  • [C413] Wrap expressions in parentheses when negating (#​10346)
  • [pycodestyle] Do not ignore lines before the first logical line in blank lines rules. (#​10382)
  • [pycodestyle] Do not trigger E225 and E275 when the next token is a ')' (#​10315)
  • [pylint] Avoid false-positive slot non-assignment for __dict__ (PLE0237) (#​10348)
  • Gate f-string struct size test for Rustc < 1.76 (#​10371)
Documentation
  • Use ruff.toml format in README (#​10393)
  • [RUF008] Make it clearer that a mutable default in a dataclass is only valid if it is typed as a ClassVar (#​10395)
  • [pylint] Extend docs and test in invalid-str-return-type (E307) (#​10400)
  • Remove . from check and format commands (#​10217)

v0.3.2

Compare Source

Preview features
  • Improve single-with item formatting for Python 3.8 or older (#​10276)
Rule changes
  • [pyupgrade] Allow fixes for f-string rule regardless of line length (UP032) (#​10263)
  • [pycodestyle] Include actual conditions in E712 diagnostics (#​10254)
Bug fixes
  • Fix trailing kwargs end of line comment after slash (#​10297)
  • Fix unstable with items formatting (#​10274)
  • Avoid repeating function calls in f-string conversions (#​10265)
  • Fix E203 false positive for slices in format strings (#​10280)
  • Fix incorrect Parameter range for *args and **kwargs (#​10283)
  • Treat typing.Annotated subscripts as type definitions (#​10285)

v0.3.1

Compare Source

Preview features
  • [pycodestyle] Fix E301 not triggering on decorated methods. (#​10117)
  • [pycodestyle] Respect isort settings in blank line rules (E3*) (#​10096)
  • [pycodestyle] Make blank lines in typing stub files optional (E3*) (#​10098)
  • [pylint] Implement singledispatch-method (E1519) (#​10140)
  • [pylint] Implement useless-exception-statement (W0133) (#​10176)
Rule changes
  • [flake8-debugger] Check for use of debugpy and ptvsd debug modules (#​10177) (#​10194)
  • [pyupgrade] Generate diagnostic for all valid f-string conversions regardless of line length (UP032) (#​10238)
  • [pep8_naming] Add fixes for N804 and N805 (#​10215)
CLI
  • Colorize the output of ruff format --diff (#​10110)
  • Make --config and --isolated global flags (#​10150)
  • Correctly expand tildes and environment variables in paths passed to --config (#​10219)
Configuration
  • Accept a PEP 440 version specifier for required-version (#​10216)
  • Implement isort's default-section setting (#​10149)
Bug fixes
  • Remove trailing space from CapWords message (#​10220)
  • Respect external codes in file-level exemptions (#​10203)
  • [flake8-raise] Avoid false-positives for parens-on-raise with future.exception() (RSE102) (#​10206)
  • [pylint] Add fix for unary expressions in PLC2801 (#​9587)
  • [ruff] Fix RUF028 not allowing # fmt: skip on match cases (#​10178)

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] Allow os.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 out case statements (ERA001) (#​10055)
  • [eradicate] Detect single-line code for try:, 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 Rule dict-iter-missing-items (PLE1141) (#​9845)
  • [pylint] Ignore sys.version and sys.platform (PLR1714) (#​10054)
  • [pyupgrade] Detect literals with unary operators (UP018) (#​10060)
  • [ruff] Expand rule for list(iterable).pop(0) idiom (RUF015) (#​10148)
Formatter

This release introduces the Ruff 2024.2 style, stabilizing the following changes:

  • Prefer splitting the assignment's value over the target or type annotation (#​8943)
  • Remove blank lines before class docstrings (#​9154)
  • Wrap multiple context managers in with parentheses when targeting Python 3.9 or newer (#​9222)
  • Add a blank line after nested classes with a dummy body (...) in typing stub files (#​9155)
  • Reduce vertical spacing for classes and functions with a dummy (...) body (#​7440, #​9240)
  • Add a blank line after the module docstring (#​8283)
  • Parenthesize long type hints in assignments (#​9210)
  • Preserve indent for single multiline-string call-expressions (#​9673)
  • Normalize hex escape and unicode escape sequences (#​9280)
  • Format module docstrings (#​9725)
CLI
  • Explicitly disallow extend as part of a --config flag (#​10135)
  • Remove build from the default exclusion list (#​10093)
  • Deprecate ruff <path>, ruff --explain, ruff --clean, and ruff --generate-shell-completion in favor of ruff check <path>, ruff rule, ruff clean, and ruff generate-shell-completion (#​10169)
  • Remove the deprecated CLI option --format from ruff rule and ruff 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 in gettext calls (RUF027) (#​10118)
  • Fix ruff crashing on PowerPC systems because of too small page size (#​10080)
Performance
  • Add cold attribute to less likely printer queue branches in the formatter (#​10121)
  • Skip unnecessary string normalization in the formatter (#​10116)
Documentation
  • Remove "Beta" Label from formatter documentation (#​10144)
  • line-length option: fix link to pycodestyle.max-line-length (#​10136)

v0.2.2

Compare Source

Highlights include:

  • Initial support formatting f-strings (in --preview).
  • Support for overriding arbitrary configuration options via the CLI through an expanded --config argument (e.g., --config "lint.isort.combine-as-imports=false").
  • Significant performance improvements in Ruff's lexer, parser, and lint rules.
Preview features
  • Implement minimal f-string formatting (#​9642)
  • [pycodestyle] Add blank line(s) rules (E301, E302, E303, E304, E305, E306) (#​9266)
  • [refurb] Implement readlines_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] Detect mark_safe usages in decorators (#​9887)
  • [ruff] Expand asyncio-dangling-task (RUF006) to include new_event_loop (#​9976)
  • [flake8-pyi] Ignore 'unused' private type dicts in class scopes (#​9952)
Formatter
  • Docstring formatting: Preserve tab indentation when using indent-style=tabs (#​9915)
  • Disable top-level docstring formatting for notebooks (#​9957)
  • Stabilize quote-style's preserve mode (#​9922)
CLI
  • Allow arbitrary configuration options to be overridden via the CLI (#​9599)
Bug fixes
  • Make show-settings filters directory-agnostic (#​9866)
  • Respect duplicates when rewriting type aliases (#​9905)
  • Respect tuple assignments in typing analyzer (#​9969)
  • Use atomic write when persisting cache (#​9981)
  • Use non-parenthesized range for DebugText (#​9953)
  • [flake8-simplify] Avoid false positive with async for loops (SIM113) (#​9996)
  • [flake8-trio] Respect async with in timeout-without-await (#​9859)
  • [perflint] Catch a wider range of mutations in PERF101 (#​9955)
  • [pycodestyle] Fix E30X panics on blank lines with trailing white spaces (#​9907)
  • [pydocstyle] Allow using parameters 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
  • Use memchr for string lexing (#​9888)
  • Use memchr for tab-indentation detection (#​9853)
  • Reduce Result<Tok, LexicalError> size by using Box<str> instead of String (#​9885)
  • Reduce size of Expr from 80 to 64 bytes (#​9900)
  • Improve trailing comma rule performance (#​9867)
  • Remove unnecessary string cloning from the parser (#​9884)

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] Implement missing-f-string-syntax (RUF027) (#​9728)
  • Format module-level docstrings (#​9725)
Formatter
  • Add --range option to ruff format (#​9733)
  • Don't trim last empty line in docstrings (#​9813)
Bug fixes
  • Skip empty lines when determining base indentation (#​9795)
  • Drop __get__ and __set__ from unnecessary-dunder-call (#​9791)
  • Respect generic Protocol in ellipsis removal (#​9841)
  • Revert "Use publicly available Apple Silicon runners (#​9726)" (#​9834)
Performance
  • Skip LibCST parsing for standard dedent adjustments (#​9769)
  • Remove CST-based fixer for C408 (#​9822)
  • Add our own ignored-names abstractions (#​9802)
  • Remove CST-based fixers for C400, C401, C410, and C418 (#​9819)
  • Use AhoCorasick to speed up quote match (#​9773)
  • Remove CST-based fixers for C405 and C409 (#​9821)
  • Add fast-path for comment detection (#​9808)
  • Invert order of checks in zero-sleep-call (#​9766)
  • Short-circuit typing matches based on imports (#​9800)
  • Run dunder method rule on methods directly (#​9815)
  • Track top-level module imports in the semantic model (#​9775)
  • Slight speed-up for lowercase and uppercase identifier checks (#​9798)
  • Remove LibCST-based fixer for C403 (#​9818)
Documentation
  • Update max-pos-args example to max-positional-args (#​9797)
  • Fixed example code in weak_cryptographic_key.rs (#​9774)
  • Fix references to deprecated ANN rules in changelog (#​9771)
  • Fix default for max-positional-args (#​9838)

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.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot added the packaging Updates to packaging (dependencies, etc) label Feb 6, 2024
@renovate renovate bot requested review from micahellison and wren February 6, 2024 01:33
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from 7d12e58 to 573f788 Compare February 17, 2024 22:44
@renovate renovate bot changed the title Update dependency ruff to v0.2.1 Update dependency ruff to v0.2.2 Feb 17, 2024
@renovate renovate bot changed the title Update dependency ruff to v0.2.2 Update dependency ruff to v0.3.0 Feb 29, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch 2 times, most recently from 5c8efc6 to cbde340 Compare March 6, 2024 23:23
@renovate renovate bot changed the title Update dependency ruff to v0.3.0 Update dependency ruff to v0.3.1 Mar 6, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from cbde340 to 572137d Compare March 9, 2024 04:33
@renovate renovate bot changed the title Update dependency ruff to v0.3.1 Update dependency ruff to v0.3.2 Mar 9, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from 572137d to e1444b2 Compare March 15, 2024 18:42
@renovate renovate bot changed the title Update dependency ruff to v0.3.2 Update dependency ruff to v0.3.3 Mar 15, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from e1444b2 to 5a4ebd3 Compare March 21, 2024 19:49
@renovate renovate bot changed the title Update dependency ruff to v0.3.3 Update dependency ruff to v0.3.4 Mar 21, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from 5a4ebd3 to b07032b Compare April 1, 2024 18:05
@renovate renovate bot changed the title Update dependency ruff to v0.3.4 Update dependency ruff to v0.3.5 Apr 1, 2024
@renovate renovate bot changed the title Update dependency ruff to v0.3.5 Update dependency ruff to v0.3.6 Apr 11, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch 2 times, most recently from dccc4c7 to ad5e1a6 Compare April 12, 2024 04:26
@renovate renovate bot changed the title Update dependency ruff to v0.3.6 Update dependency ruff to v0.3.7 Apr 12, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from ad5e1a6 to 0c054c0 Compare April 18, 2024 21:37
@renovate renovate bot changed the title Update dependency ruff to v0.3.7 Update dependency ruff to v0.4.0 Apr 18, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from 0c054c0 to f81a779 Compare April 19, 2024 13:09
@renovate renovate bot changed the title Update dependency ruff to v0.4.0 Update dependency ruff to v0.4.1 Apr 19, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from f81a779 to 6d4aace Compare April 25, 2024 18:32
@renovate renovate bot changed the title Update dependency ruff to v0.4.1 Update dependency ruff to v0.4.2 Apr 25, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from 6d4aace to 675d6d0 Compare May 4, 2024 01:52
@renovate renovate bot changed the title Update dependency ruff to v0.4.2 Update dependency ruff to v0.4.3 May 4, 2024
@renovate renovate bot force-pushed the renovate/ruff-0.x-lockfile branch from 675d6d0 to b91ded7 Compare May 9, 2024 19:49
@renovate renovate bot changed the title Update dependency ruff to v0.4.3 Update dependency ruff to v0.4.4 May 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
packaging Updates to packaging (dependencies, etc)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

0 participants