changelogs/0.2.x.md
NURSERY selector cannot be used anymoreSee also, the "Remapped rules" section which may result in disabled rules.
The following rules are now deprecated:
missing-type-self (ANN101)missing-type-cls (ANN102)The following command line options are now deprecated:
--show-source; use --output-format full instead--no-show-source; use --output-format concise instead--output-format text; use full or concise insteadThe following settings have moved and the previous name is deprecated:
ruff.allowed-confusables → ruff.lint.allowed-confusablesruff.dummy-variable-rgx → ruff.lint.dummy-variable-rgxruff.explicit-preview-rules → ruff.lint.explicit-preview-rulesruff.extend-fixable → ruff.lint.extend-fixableruff.extend-ignore → ruff.lint.extend-ignoreruff.extend-per-file-ignores → ruff.lint.extend-per-file-ignoresruff.extend-safe-fixes → ruff.lint.extend-safe-fixesruff.extend-select → ruff.lint.extend-selectruff.extend-unfixable → ruff.lint.extend-unfixableruff.extend-unsafe-fixes → ruff.lint.extend-unsafe-fixesruff.external → ruff.lint.externalruff.fixable → ruff.lint.fixableruff.flake8-annotations → ruff.lint.flake8-annotationsruff.flake8-bandit → ruff.lint.flake8-banditruff.flake8-bugbear → ruff.lint.flake8-bugbearruff.flake8-builtins → ruff.lint.flake8-builtinsruff.flake8-comprehensions → ruff.lint.flake8-comprehensionsruff.flake8-copyright → ruff.lint.flake8-copyrightruff.flake8-errmsg → ruff.lint.flake8-errmsgruff.flake8-gettext → ruff.lint.flake8-gettextruff.flake8-implicit-str-concat → ruff.lint.flake8-implicit-str-concatruff.flake8-import-conventions → ruff.lint.flake8-import-conventionsruff.flake8-pytest-style → ruff.lint.flake8-pytest-styleruff.flake8-quotes → ruff.lint.flake8-quotesruff.flake8-self → ruff.lint.flake8-selfruff.flake8-tidy-imports → ruff.lint.flake8-tidy-importsruff.flake8-type-checking → ruff.lint.flake8-type-checkingruff.flake8-unused-arguments → ruff.lint.flake8-unused-argumentsruff.ignore → ruff.lint.ignoreruff.ignore-init-module-imports → ruff.lint.ignore-init-module-importsruff.isort → ruff.lint.isortruff.logger-objects → ruff.lint.logger-objectsruff.mccabe → ruff.lint.mccaberuff.pep8-naming → ruff.lint.pep8-namingruff.per-file-ignores → ruff.lint.per-file-ignoresruff.pycodestyle → ruff.lint.pycodestyleruff.pydocstyle → ruff.lint.pydocstyleruff.pyflakes → ruff.lint.pyflakesruff.pylint → ruff.lint.pylintruff.pyupgrade → ruff.lint.pyupgraderuff.select → ruff.lint.selectruff.task-tags → ruff.lint.task-tagsruff.typing-modules → ruff.lint.typing-modulesruff.unfixable → ruff.lint.unfixableThe following rules have been remapped to new codes:
raise-without-from-inside-except: TRY200 to B904suspicious-eval-usage: PGH001 to S307logging-warn: PGH002 to G010static-key-dict-comprehension: RUF011 to B035runtime-string-union: TCH006 to TCH010The following rules have been stabilized and are no longer in preview:
trio-timeout-without-await (TRIO100)trio-sync-call (TRIO105)trio-async-function-with-timeout (TRIO109)trio-unneeded-sleep (TRIO110)trio-zero-sleep-call (TRIO115)unnecessary-escaped-quote (Q004)enumerate-for-loop (SIM113)zip-dict-keys-and-values (SIM911)timeout-error-alias (UP041)flask-debug-true (S201)tarfile-unsafe-members (S202)ssl-insecure-version (S502)ssl-with-bad-defaults (S503)ssl-with-no-version (S504)weak-cryptographic-key (S505)ssh-no-host-key-verification (S507)django-raw-sql (S611)mako-templates (S702)generator-return-from-iter-method (PYI058)runtime-string-union (TCH006)numpy2-deprecation (NPY201)quadratic-list-summation (RUF017)assignment-in-assert (RUF018)unnecessary-key-check (RUF019)never-union (RUF020)direct-logger-instantiation (LOG001)invalid-get-logger-argument (LOG002)exception-without-exc-info (LOG007)undocumented-warn (LOG009)Fixes for the following rules have been stabilized and are now available without preview:
triple-single-quotes (D300)non-pep604-annotation (UP007)dict-get-with-none-default (SIM910)in-dict-keys (SIM118)collapsible-else-if (PLR5501)if-with-same-arms (SIM114)useless-else-on-loop (PLW0120)unnecessary-literal-union (PYI030)unnecessary-spread (PIE800)error-instead-of-exception (TRY400)redefined-while-unused (F811)duplicate-value (B033)multiple-imports-on-one-line (E401)non-pep585-annotation (UP006)Fixes for the following rules have been promoted from unsafe to safe:
unaliased-collections-abc-set-import (PYI025)The following behaviors have been stabilized:
module-import-not-at-top-of-file (E402) allows sys.path modifications between importsreimplemented-container-builtin (PIE807) includes lambdas that can be replaced with dictunnecessary-placeholder (PIE790) applies to unnecessary ellipses (...)if-else-block-instead-of-dict-get (SIM401) applies to if-else expressionsrefurb] Implement metaclass_abcmeta (FURB180) (#9658)blank_line_after_nested_stub_class preview style (#9155)and-or-ternary (PLR1706) was removedflake8-async] Take pathlib.Path into account when analyzing async functions (#9703)flake8-return] - fix indentation syntax error (RET505) (#9705)RUF022, RUF023: never add two trailing commas to the end of a sequence (#9698)RUF023: Don't sort __match_args__, only __slots__ (#9724)flake8-simplify] - Fix syntax error in autofix (SIM114) (#9704)pylint] Show verbatim constant in magic-value-comparison (PLR2004) (#9694)IfExp with dual string arms in invalid-envvar-default (#9734)pylint] Add __mro_entries__ to known dunder methods (PLW3201) (#9706)This release includes support for range formatting (i.e., the ability to format specific lines within a source file).
__get__ and __set__ from unnecessary-dunder-call (#9791)Protocol in ellipsis removal (#9841)C408 (#9822)C400, C401, C410, and C418 (#9819)AhoCorasick to speed up quote match (#9773)C405 and C409 (#9821)zero-sleep-call (#9766)C403 (#9818)max-pos-args example to max-positional-args (#9797)weak_cryptographic_key.rs (#9774)ANN rules in changelog (#9771)max-positional-args (#9838)Highlights include:
--preview).--config argument (e.g., --config "lint.isort.combine-as-imports=false").pycodestyle] Add blank line(s) rules (E301, E302, E303, E304, E305, E306) (#9266)refurb] Implement readlines_in_for (FURB129) (#9880)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)indent-style=tabs (#9915)preserve mode (#9922)show-settings filters directory-agnostic (#9866)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)memchr for string lexing (#9888)memchr for tab-indentation detection (#9853)Result<Tok, LexicalError> size by using Box<str> instead of String (#9885)Expr from 80 to 64 bytes (#9900)