Update dependency ruff to v0.7.0
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| ruff (source, changelog) | ==0.0.256 -> ==0.7.0 |
Release Notes
astral-sh/ruff (ruff)
v0.7.0
Check out the blog post for a migration guide and overview of the changes!
Breaking changes
- The pytest rules
PT001andPT023now default to omitting the decorator parentheses when there are no arguments (#12838, #13292). This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part. See the blog post for more details. - The
useless-try-exceptrule (in ourtryceratopscategory) has been recoded fromTRY302toTRY203(#13502). This ensures Ruff's code is consistent with the same rule in thetryceratopslinter. - The
lint.allow-unused-importssetting has been removed (#13677). Uselint.pyflakes.allow-unused-importsinstead.
Formatter preview style
- Normalize implicit concatenated f-string quotes per part (#13539)
Preview linter features
- [
refurb] implementhardcoded-string-charset(FURB156) (#13530) - [
refurb] Count codepoints not bytes forslice-to-remove-prefix-or-suffix (FURB188)(#13631)
Rule changes
- [
pylint] MarkPLE1141fix as unsafe (#13629) - [
flake8-async] Consider async generators to be "checkpoints" forcancel-scope-no-checkpoint(ASYNC100) (#13639) - [
flake8-bugbear] Do not suggest setting parameterstrict=toFalseinB905diagnostic message (#13656) - [
flake8-todos] Only flag the word "TODO", not words starting with "todo" (TD006) (#13640) - [
pycodestyle] Fix whitespace-related false positives and false negatives inside type-parameter lists (E231,E251) (#13704) - [
flake8-simplify] Stabilize preview behavior forSIM115so that the rule can detect files being opened from a wider range of standard-library functions (#12959).
CLI
- Add explanation of fixable in
--statisticscommand (#13774)
Bug fixes
- [
pyflakes] Allowipytestcell magic (F401) (#13745) - [
flake8-use-pathlib] FixPTH123false positive whenopenis passed a file descriptor (#13616) - [
flake8-bandit] Detect patterns from multi line SQL statements (S608) (#13574) - [
flake8-pyi] - Fix dropped expressions inPYI030autofix (#13727)
v0.6.9
Preview features
- Fix codeblock dynamic line length calculation for indented docstring examples (#13523)
- [
refurb] MarkFURB118fix as unsafe (#13613)
Rule changes
- [
pydocstyle] Don't raiseD208when last line is non-empty (#13372) - [
pylint] Preserve trivia (i.e. comments) inPLR5501autofix (#13573)
Configuration
- [
pyflakes] Addallow-unused-importssetting forunused-importrule (F401) (#13601)
Bug fixes
- Support ruff discovery in pip build environments (#13591)
- [
flake8-bugbear] Avoid short circuitingB017for multiple context managers (#13609) - [
pylint] Do not offer an invalid fix forPLR1716when the comparisons contain parenthesis (#13527) - [
pyupgrade] FixUP043to apply tocollections.abc.Generatorandcollections.abc.AsyncGenerator(#13611) - [
refurb] Fix handling of slices in tuples forFURB118, e.g.,x[:, 1](#13518)
Documentation
- Update GitHub Action link to
astral-sh/ruff-action(#13551)
v0.6.8
Preview features
- Remove unnecessary parentheses around
match caseclauses (#13510) - Parenthesize overlong
ifguards inmatch..caseclauses (#13513) - Detect basic wildcard imports in
ruff analyze graph(#13486) - [
pylint] Implementboolean-chained-comparison(R1716) (#13435)
Rule changes
- [
lake8-simplify] DetectSIM910when using variadic keyword arguments, i.e.,**kwargs(#13503) - [
pyupgrade] Avoid false negatives with non-reference shadowed bindings of loop variables (UP028) (#13504)
Bug fixes
- Detect tuples bound to variadic positional arguments i.e.
*args(#13512) - Exit gracefully on broken pipe errors (#13485)
- Avoid panic when analyze graph hits broken pipe (#13484)
Performance
v0.6.7
Preview features
- Add Python version support to ruff analyze CLI (#13426)
- Add
excludesupport toruff analyze(#13425) - Fix parentheses around return type annotations (#13381)
Rule changes
- [
pycodestyle] Fix: Don't autofix if the first line ends in a question mark? (D400) (#13399)
Bug fixes
- Respect
lint.excludein ruff check--add-noqa(#13427)
Performance
- Avoid tracking module resolver files in Salsa (#13437)
- Use
forgetfor module resolver database (#13438)
v0.6.6
Preview features
- [
refurb] Skipslice-to-remove-prefix-or-suffix(FURB188) when non-trivial slice steps are present (#13405) - Add a subcommand to generate dependency graphs (#13402)
Formatter
- Fix placement of inline parameter comments (#13379)
Server
- Fix off-by one error in the
LineIndex::offsetcalculation (#13407)
Bug fixes
- [
fastapi] Respect FastAPI aliases in route definitions (#13394) - [
pydocstyle] Respect word boundaries when detecting function signature in docs (#13388)
Documentation
- Add backlinks to rule overview linter (#13368)
- Fix documentation for editor vim plugin ALE (#13348)
- Fix rendering of
FURB188docs (#13406)
v0.6.5
Preview features
- [
pydoclint] IgnoreDOC201when function name is "new" (#13300) - [
refurb] Implementslice-to-remove-prefix-or-suffix(FURB188) (#13256)
Rule changes
- [
eradicate] Ignore script-comments with multiple end-tags (ERA001) (#13283) - [
pyflakes] Improve error message forUndefinedNamewhen a builtin was added in a newer version than specified in Ruff config (F821) (#13293)
Server
- Add support for extensionless Python files for server (#13326)
- Fix configuration inheritance for configurations specified in the LSP settings (#13285)
Bug fixes
- [
ruff] Handle unary operators indecimal-from-float-literal(RUF032) (#13275)
CLI
- Only include rules with diagnostics in SARIF metadata (#13268)
Playground
- Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML" (#13328)
- Fix errors not shown for restored snippet on page load (#13262)
v0.6.4
Preview features
- [
flake8-builtins] Use dynamic builtins list based on Python version (#13172) - [
pydoclint] Permit yieldingNoneinDOC402andDOC403(#13148) - [
pylint] Update diagnostic message forPLW3201(#13194) - [
ruff] Implementpost-init-default(RUF033) (#13192) - [
ruff] Implement useless if-else (RUF034) (#13218)
Rule changes
- [
flake8-pyi] Respectpep8_naming.classmethod-decoratorssettings when determining if a method is a classmethod incustom-type-var-return-type(PYI019) (#13162) - [
flake8-pyi] Teach various rules that annotations might be stringized (#12951) - [
pylint] Avoidno-self-useforattrs-style validators (#13166) - [
pylint] Recurse into subscript subexpressions when searching for list/dict lookups (PLR1733,PLR1736) (#13186) - [
pyupgrade] Detectaiofiles.opencalls inUP015(#13173) - [
pyupgrade] Marksys.version_info[0] < 3and similar comparisons as outdated (UP036) (#13175)
CLI
- Enrich messages of SARIF results (#13180)
- Handle singular case for incompatible rules warning in
ruff formatoutput (#13212)
Bug fixes
- [
pydocstyle] Improve heuristics for detecting Google-style docstrings (#13142) - [
refurb] Treatseparguments with effects as unsafe removals (FURB105) (#13165)
v0.6.3
Preview features
- [
flake8-simplify] Extendopen-file-with-context-handlerto work withdbm.sqlite3(SIM115) (#13104) - [
pycodestyle] DisableE741in stub files (.pyi) (#13119) - [
pydoclint] AvoidDOC201on explicit returns in functions that only returnNone(#13064)
Rule changes
- [
flake8-async] Disable check forasynciobefore Python 3.11 (ASYNC109) (#13023)
Bug fixes
- [
FastAPI] Avoid introducing invalid syntax in fix forfast-api-non-annotated-dependency(FAST002) (#13133) - [
flake8-implicit-str-concat] Normalize octals before merging concatenated strings insingle-line-implicit-string-concatenation(ISC001) (#13118) - [
flake8-pytest-style] Improve help message forpytest-incorrect-mark-parentheses-style(PT023) (#13092) - [
pylint] Avoid autofix for calls that aren'tminormaxas starred expression (PLW3301) (#13089) - [
ruff] Adddatetime.time,datetime.tzinfo, anddatetime.timezoneas immutable function calls (RUF009) (#13109) - [
ruff] Extend comment deletion forRUF100to include trailing text fromnoqadirectives while preserving any following comments on the same line, if any (#13105) - Fix dark theme on initial page load for the Ruff playground (#13077)
v0.6.2
Preview features
- [
flake8-simplify] Extendopen-file-with-context-handlerto work with other standard-library IO modules (SIM115) (#12959) - [
ruff] Avoidunused-asyncfor functions with FastAPI route decorator (RUF029) (#12938) - [
ruff] Ignorefstring-missing-syntax(RUF027) forfastAPIpaths (#12939) - [
ruff] Implement check for Decimal called with a float literal (RUF032) (#12909)
Rule changes
- [
flake8-bugbear] Update diagnostic message when expression is at the end of function (B015) (#12944) - [
flake8-pyi] Skip type annotations instring-or-bytes-too-long(PYI053) (#13002) - [
flake8-type-checking] Always recognise relative imports as first-party (#12994) - [
flake8-unused-arguments] Ignore unused arguments on stub functions (ARG001) (#12966) - [
pylint] Ignore augmented assignment forself-cls-assignment(PLW0642) (#12957)
Server
- Show full context in error log messages (#13029)
Bug fixes
- [
pep8-naming] Don't flagfromimports following conventional import names (N817) (#12946) - [
pylint] - Allow__new__methods to haveclsas their first argument even if decorated with@staticmethodforbad-staticmethod-argument(PLW0211) (#12958)
Documentation
- Add
hyperfineinstallation instructions; updatehyperfinecode samples (#13034) - Expand note to use Ruff with other language server in Kate (#12806)
- Update example for
PT001as per the new default behavior (#13019) - [
perflint] Improve docs fortry-except-in-loop(PERF203) (#12947) - [
pydocstyle] Add reference tolint.pydocstyle.ignore-decoratorssetting to rule docs (#12996)
v0.6.1
This is a hotfix release to address an issue with ruff-pre-commit. In v0.6,
Ruff changed its behavior to lint and format Jupyter notebooks by default;
however, due to an oversight, these files were still excluded by default if
Ruff was run via pre-commit, leading to inconsistent behavior.
This has now been fixed.
Preview features
- [
fastapi] Implementfast-api-unused-path-parameter(FAST003) (#12638)
Rule changes
- [
pylint] Renametoo-many-positionaltotoo-many-positional-arguments(R0917) (#12905)
Server
- Fix crash when applying "fix-all" code-action to notebook cells (#12929)
Other changes
- [
flake8-naming]: Respect import conventions (N817) (#12922)
v0.6.0
Check out the blog post for a migration guide and overview of the changes!
Breaking changes
See also, the "Remapped rules" section which may result in disabled rules.
- Lint and format Jupyter Notebook by default (#12878).
- Detect imports in
srclayouts by default forisortrules (#12848) - The pytest rules
PT001andPT023now default to omitting the decorator parentheses when there are no arguments (#12838).
Deprecations
The following rules are now deprecated:
pytest-missing-fixture-name-underscore(PT004)pytest-incorrect-fixture-name-underscore(PT005)unpacked-list-comprehension(UP027)
Remapped rules
The following rules have been remapped to new rule codes:
unnecessary-dict-comprehension-for-iterable:RUF025toC420
Stabilization
The following rules have been stabilized and are no longer in preview:
singledispatch-method(PLE1519)singledispatchmethod-function(PLE1520)bad-staticmethod-argument(PLW0211)if-stmt-min-max(PLR1730)invalid-bytes-return-type(PLE0308)invalid-hash-return-type(PLE0309)invalid-index-return-type(PLE0305)invalid-length-return-type(E303)self-or-cls-assignment(PLW0642)byte-string-usage(PYI057)duplicate-literal-member(PYI062)redirected-noqa(RUF101)
The following behaviors have been stabilized:
cancel-scope-no-checkpoint(ASYNC100): Supportasyncioandanyiocontext mangers.async-function-with-timeout(ASYNC109): Supportasyncioandanyiocontext mangers.async-busy-wait(ASYNC110): Supportasyncioandanyiocontext mangers.async-zero-sleep(ASYNC115): Supportanyiocontext mangers.long-sleep-not-forever(ASYNC116): Supportanyiocontext mangers.
The following fixes have been stabilized:
superfluous-else-return(RET505)superfluous-else-raise(RET506)superfluous-else-continue(RET507)superfluous-else-break(RET508)
Preview features
- [
flake8-simplify] Further simplify to binary in preview for (SIM108) (#12796) - [
pyupgrade] Show violations without auto-fix (UP031) (#11229)
Rule changes
- [
flake8-import-conventions] Addxml.etree.ElementTreeto default conventions (#12455) - [
flake8-pytest-style] Add a space after comma in CSV output (PT006) (#12853)
Server
- Show a message for incorrect settings (#12781)
Bug fixes
- [
flake8-async] Do not lint yield in context manager (ASYNC100) (#12896) - [
flake8-comprehensions] Do not lintasync forcomprehensions (C419) (#12895) - [
flake8-return] Only add returnNoneat end of a function (RET503) (#11074) - [
flake8-type-checking] Avoid treatingdataclasses.KW_ONLYas typing-only (TCH003) (#12863) - [
pep8-naming] Treattype(Protocol)et al as metaclass base (N805) (#12770) - [
pydoclint] Don't enforce returns and yields in abstract methods (DOC201,DOC202) (#12771) - [
ruff] Skip tuples with slice expressions in (RUF031) (#12768) - [
ruff] Ignore unparenthesized tuples in subscripts when the subscript is a type annotation or type alias (RUF031) (#12762) - [
ruff] Ignore template strings passed to logging andbuiltins._()calls (RUF027) (#12889) - [
ruff] Do not remove parens for tuples with starred expressions in Python <=3.10 (RUF031) (#12784) - Evaluate default parameter values for a function in that function's enclosing scope (#12852)
Other changes
- Respect VS Code cell metadata when detecting the language of Jupyter Notebook cells (#12864)
- Respect
kernelspecnotebook metadata when detecting the preferred language for a Jupyter Notebook (#12875)
v0.5.7
Preview features
- [
flake8-comprehensions] Account for list and set comprehensions inunnecessary-literal-within-tuple-call(C409) (#12657) - [
flake8-pyi] Add autofix forfuture-annotations-in-stub(PYI044) (#12676) - [
flake8-return] Avoid syntax error when auto-fixingRET505with mixed indentation (space and tabs) (#12740) - [
pydoclint] Adddocstring-missing-yields(DOC402) anddocstring-extraneous-yields(DOC403) (#12538) - [
pydoclint] AvoidDOC201if docstring begins with "Return", "Returns", "Yield", or "Yields" (#12675) - [
pydoclint] Deduplicate collected exceptions after traversing function bodies (DOC501) (#12642) - [
pydoclint] IgnoreDOCerrors for stub functions (#12651) - [
pydoclint] Teach rules to understand reraised exceptions as being explicitly raised (DOC501,DOC502) (#12639) - [
ruff] Implementincorrectly-parenthesized-tuple-in-subscript(RUF031) (#12480) - [
ruff] MarkRUF023fix as unsafe if__slots__is not a set and the binding is used elsewhere (#12692)
Rule changes
- [
refurb] Add autofix forimplicit-cwd(FURB177) (#12708) - [
ruff] Add autofix forzip-instead-of-pairwise(RUF007) (#12663) - [
tryceratops] AddBaseExceptiontoraise-vanilla-classrule (TRY002) (#12620)
Server
- Ignore non-file workspace URL; Ruff will display a warning notification in this case (#12725)
CLI
- Fix cache invalidation for nested
pyproject.tomlfiles (#12727)
Bug fixes
- [
flake8-async] Fix false positives with multipleasync withitems (ASYNC100) (#12643) - [
flake8-bandit] Avoid false-positives for list concatenations in SQL construction (S608) (#12720) - [
flake8-bugbear] Treatreturnas equivalent tobreak(B909) (#12646) - [
flake8-comprehensions] Set comprehensions not a violation forsuminunnecessary-comprehension-in-call(C419) (#12691) - [
flake8-simplify] Parenthesize conditions based on precedence when merging if arms (SIM114) (#12737) - [
pydoclint] Try both 'Raises' section styles when convention is unspecified (DOC501) (#12649)
v0.5.6
Ruff 0.5.6 automatically enables linting and formatting of notebooks in preview mode.
You can opt-out of this behavior by adding *.ipynb to the extend-exclude setting.
[tool.ruff]
extend-exclude = ["*.ipynb"]
Preview features
- Enable notebooks by default in preview mode (#12621)
- [
flake8-builtins] Implement import, lambda, and module shadowing (#12546) - [
pydoclint] Adddocstring-missing-returns(DOC201) anddocstring-extraneous-returns(DOC202) (#12485)
Rule changes
- [
flake8-return] Exempt cached properties and other property-like decorators from explicit return rule (RET501) (#12563)
Server
- Make server panic hook more error resilient (#12610)
- Use
$/logTracefor server trace logs in Zed and VS Code (#12564) - Keep track of deleted cells for reorder change request (#12575)
Configuration
- [
flake8-implicit-str-concat] Always allow explicit multi-line concatenations when implicit concatenations are banned (#12532)
Bug fixes
- [
flake8-async] Avoid flaggingasyncio.timeouts as unused when the context manager includesasyncio.TaskGroup(#12605) - [
flake8-slots] Avoid recommending__slots__for classes that inherit from more thannamedtuple(#12531) - [
isort] Avoid marking required imports as unused (#12537) - [
isort] Preserve trailing inline comments on import-from statements (#12498) - [
pycodestyle] Add newlines before comments (E305) (#12606) - [
pycodestyle] Don't attach comments with mismatched indents (#12604) - [
pyflakes] Fix preview-mode bugs inF401when attempting to autofix unused first-party submodule imports in an__init__.pyfile (#12569) - [
pylint] Respect start index inunnecessary-list-index-lookup(#12603) - [
pyupgrade] Avoid recommending no-argument super inslots=Truedataclasses (#12530) - [
pyupgrade] Use colon rather than dot formatting for integer-only types (#12534) - Fix NFKC normalization bug when removing unused imports (#12571)
Other changes
- Consider more stdlib decorators to be property-like (#12583)
- Improve handling of metaclasses in various linter rules (#12579)
- Improve consistency between linter rules in determining whether a function is property (#12581)
v0.5.5
Preview features
- [
fastapi] Implementfastapi-redundant-response-model(FAST001) andfastapi-non-annotated-dependency(FAST002) (#11579) - [
pydoclint] Implementdocstring-missing-exception(DOC501) anddocstring-extraneous-exception(DOC502) (#11471)
Rule changes
- [
numpy] Fix NumPy 2.0 rule fornp.alltrueandnp.sometrue(#12473) - [
numpy] IgnoreNPY201insideexceptblocks for compatibility with older numpy versions (#12490) - [
pep8-naming] Avoid applyingignore-namestoselfandclsfunction names (N804,N805) (#12497)
Formatter
- Fix incorrect placement of leading function comment with type params (#12447)
Server
- Do not bail code action resolution when a quick fix is requested (#12462)
Bug fixes
- Fix
Ordimplementation ofcmp_fix(#12471) - Raise syntax error for unparenthesized generator expression in multi-argument call (#12445)
- [
pydoclint] Fix panic inDOC501reported in #12428 (#12435) - [
flake8-bugbear] Allow singleton tuples with starred expressions inB013(#12484)
Documentation
- Add Eglot setup guide for Emacs editor (#12426)
- Add note about the breaking change in
nvim-lspconfig(#12507) - Add note to include notebook files for native server (#12449)
- Add setup docs for Zed editor (#12501)
v0.5.4
Rule changes
- [
ruff] RenameRUF007tozip-instead-of-pairwise(#12399)
Bug fixes
- [
flake8-builtins] Avoid shadowing diagnostics for@overridemethods (#12415) - [
flake8-comprehensions] Insert parentheses for multi-argument generators (#12422) - [
pydocstyle] Handle escaped docstrings within docstring (D301) (#12192)
Documentation
v0.5.3
Ruff 0.5.3 marks the stable release of the Ruff language server and introduces revamped documentation, including setup guides for your editor of choice and the language server itself.
Preview features
- Formatter: Insert empty line between suite and alternative branch after function/class definition (#12294)
- [
pyupgrade] Implementunnecessary-default-type-args(UP043) (#12371)
Rule changes
- [
flake8-bugbear] Detect enumerate iterations inloop-iterator-mutation(B909) (#12366) - [
flake8-bugbear] Removediscard,remove, andpopallowance forloop-iterator-mutation(B909) (#12365) - [
pylint] Allowrepeated-equality-comparisonfor mixed operations (PLR1714) (#12369) - [
pylint] Ignoreselfandclswhen counting arguments (PLR0913) (#12367) - [
pylint] Use UTF-8 as default encoding inunspecified-encodingfix (PLW1514) (#12370)
Server
- Build settings index in parallel for the native server (#12299)
- Use fallback settings when indexing the project (#12362)
- Consider
--previewflag forserversubcommand for the linter and formatter (#12208)
Bug fixes
- [
flake8-comprehensions] Allow additional arguments forsumandmaxcomprehensions (C419) (#12364) - [
pylint] Avoid dropping extra boolean operations inrepeated-equality-comparison(PLR1714) (#12368) - [
pylint] Consider expression before statement when determining binding kind (PLR1704) (#12346)
Documentation
- Add docs for Ruff language server (#12344)
- Migrate to standalone docs repo (#12341)
- Update versioning policy for editor integration (#12375)
Other changes
- Publish Wasm API to npm (#12317)
v0.5.2
Preview features
- Use
spaceseparator before parenthesized expressions in comprehensions with leading comments (#12282) - [
flake8-async] UpdateASYNC100to includeanyioandasyncio(#12221) - [
flake8-async] UpdateASYNC109to includeanyioandasyncio(#12236) - [
flake8-async] UpdateASYNC110to includeanyioandasyncio(#12261) - [
flake8-async] UpdateASYNC115to includeanyioandasyncio(#12262) - [
flake8-async] UpdateASYNC116to includeanyioandasyncio(#12266)
Rule changes
- [
flake8-return] Exempt properties from explicit return rule (RET501) (#12243) - [
numpy] Addnp.NAN-to-np.nandiagnostic (#12292) - [
refurb] Makelist-reverse-copyan unsafe fix (#12303)
Server
- Consider
includeandextend-includesettings in native server (#12252) - Include nested configurations in settings reloading (#12253)
CLI
- Omit code frames for fixes with empty ranges (#12304)
- Warn about formatter incompatibility for
D203(#12238)
Bug fixes
- Make cache-write failures non-fatal on Windows (#12302)
- Treat
notoperations as boolean tests (#12301) - [
flake8-bandit] AvoidS310violations for HTTP-safe f-strings (#12305) - [
flake8-bandit] Support explicit string concatenations in S310 HTTP detection (#12315) - [
flake8-bandit] fix S113 false positive for httpx withouttimeoutargument (#12213) - [
pycodestyle] Remove "non-obvious" allowance for E721 (#12300) - [
pyflakes] Considerwithblocks as single-item branches for redefinition analysis (#12311) - [
refurb] Restrict forwarding fornewlineargument inopen()calls to Python versions >= 3.10 (#12244)
Documentation
- Update help and documentation to reflect
--output-format fulldefault (#12248)
Performance
- Use more threads when discovering Python files (#12258)
v0.5.1
Preview features
- [
flake8-bugbear] Implement mutable-contextvar-default (B039) (#12113) - [
pycodestyle] Whitespace after decorator (E204) (#12140) - [
pytest] ReversePT001andPT0023defaults (#12106)
Rule changes
- Enable token-based rules on source with syntax errors (#11950)
- [
flake8-bandit] DetecthttpxforS113(#12174) - [
numpy] UpdateNPY201to include exception deprecations (#12065) - [
pylint] Generate autofix forduplicate-bases(PLE0241) (#12105)
Server
- Avoid syntax error notification for source code actions (#12148)
- Consider the content of the new cells during notebook sync (#12203)
- Fix replacement edit range computation (#12171)
Bug fixes
- Disable auto-fix when source has syntax errors (#12134)
- Fix cache key collisions for paths with separators (#12159)
- Make
requires-pythoninference robust to==(#12091) - Use char-wise width instead of
str-width (#12135) - [
pycodestyle] AvoidE275if keyword followed by comma (#12136) - [
pycodestyle] AvoidE275if keyword is followed by a semicolon (#12095) - [
pylint] Skip dummy variables forPLR1704(#12190)
Performance
v0.5.0
Check out the blog post for a migration guide and overview of the changes!
Breaking changes
See also, the "Remapped rules" section which may result in disabled rules.
- Follow the XDG specification to discover user-level configurations on macOS (same as on other Unix platforms)
- Selecting
ALLnow excludes deprecated rules - The released archives now include an extra level of nesting, which can be removed with
--strip-components=1when untarring. - The release artifact's file name no longer includes the version tag. This enables users to install via
/latestURLs on GitHub.
Deprecations
The following rules are now deprecated:
syntax-error(E999): Syntax errors are now always shown
Remapped rules
The following rules have been remapped to new rule codes:
blocking-http-call-in-async-function:ASYNC100toASYNC210open-sleep-or-subprocess-in-async-function:ASYNC101split intoASYNC220,ASYNC221,ASYNC230, andASYNC251blocking-os-call-in-async-function:ASYNC102has been merged intoASYNC220andASYNC221trio-timeout-without-await:TRIO100toASYNC100trio-sync-call:TRIO105toASYNC105trio-async-function-with-timeout:TRIO109toASYNC109trio-unneeded-sleep:TRIO110toASYNC110trio-zero-sleep-call:TRIO115toASYNC115repeated-isinstance-calls:PLR1701toSIM101
Stabilization
The following rules have been stabilized and are no longer in preview:
mutable-fromkeys-value(RUF024)default-factory-kwarg(RUF026)django-extra(S610)manual-dict-comprehension(PERF403)print-empty-string(FURB105)readlines-in-for(FURB129)if-expr-min-max(FURB136)bit-count(FURB161)redundant-log-base(FURB163)regex-flag-alias(FURB167)isinstance-type-none(FURB168)type-none-comparison(FURB169)implicit-cwd(FURB177)hashlib-digest-hex(FURB181)list-reverse-copy(FURB187)bad-open-mode(PLW1501)empty-comment(PLR2044)global-at-module-level(PLW0604)misplaced-bare-raise(PLE0744)non-ascii-import-name(PLC2403)non-ascii-name(PLC2401)nonlocal-and-global(PLE0115)potential-index-error(PLE0643)redeclared-assigned-name(PLW0128)redefined-argument-from-local(PLR1704)repeated-keyword-argument(PLE1132)super-without-brackets(PLW0245)unnecessary-list-index-lookup(PLR1736)useless-exception-statement(PLW0133)useless-with-lock(PLW2101)
The following behaviors have been stabilized:
is-literal(F632) now warns for identity checks against list, set or dictionary literalsneedless-bool(SIM103) now detectsifexpressions with implicitelsebranchesmodule-import-not-at-top-of-file(E402) now allowsos.environmodifications between import statementstype-comparison(E721) now allows idioms such astype(x) is intyoda-condition(SIM300) now flags a wider range of expressions
Removals
The following deprecated settings have been removed:
output-format=text; useoutput-format=conciseoroutput-format=fulltab-size; useindent-width
The following deprecated CLI options have been removed:
--show-source; use--output-format=full--no-show-source; use--output-format=concise
The following deprecated CLI commands have been removed:
ruff <path>; useruff check <path>ruff --clean; useruff cleanruff --generate-shell-completion; useruff generate-shell-completion
Preview features
- [
ruff] Addassert-with-print-messagerule (#11981)
CLI
- Use rule name rather than message in
--statistics(#11697) - Use the output format
fullby default (#12010) - Don't log syntax errors to the console (#11902)
Rule changes
- [
ruff] Fix false positives ifgettextis imported using an alias (RUF027) (#12025) - [
npy] Updatetrapzandin1ddeprecation (NPY201) (#11948) - [
flake8-bandit] Modify diagnostic ranges for shell-related rules (#10667)
Server
- Closing an untitled, unsaved notebook document no longer throws an error (#11942)
- Support the usage of tildes and environment variables in
logFile(#11945) - Add option to configure whether to show syntax errors (#12059)
Bug fixes
- [
pycodestyle] AvoidE203for f-string debug expression (#12024) - [
pep8-naming] Match import-name ignores against both name and alias (N812,N817) (#12033) - [
pyflakes] Detect assignments that shadow definitions (F811) (#11961)
Parser
- Emit a syntax error for an empty type parameter list (#12030)
- Avoid consuming the newline for unterminated strings (#12067)
- Do not include the newline in the unterminated string range (#12017)
- Use the correct range to highlight line continuation errors (#12016)
- Consider 2-character EOL before line continuations (#12035)
- Consider line continuation character for re-lexing (#12008)
Other changes
- Upgrade the Unicode table used for measuring the line-length (#11194)
- Remove the deprecation error message for the nursery selector (#10172)
v0.4.10
Parser
- Implement re-lexing logic for better error recovery ([#11845](https://redirect.githu
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 was generated by Mend Renovate. View the repository job log.