mirror of https://github.com/astral-sh/ruff
68 KiB
68 KiB
Changelog 0.1.x
0.1.0
This is the first release which uses the CHANGELOG file. See GitHub Releases for prior changelog entries.
Read Ruff's new versioning policy.
Breaking changes
- Unsafe fixes are no longer displayed or applied without opt-in (#7769)
- Drop formatting specific rules from the default set (#7900)
- The deprecated
formatsetting has been removed (#7984)- The
formatsetting cannot be used to configure the output format, useoutput-formatinstead - The
RUFF_FORMATenvironment variable is ignored, useRUFF_OUTPUT_FORMATinstead - The
--formatoption has been removed fromruff check, use--output-formatinstead
- The
Rule changes
- Extend
reimplemented-starmap(FURB140) to catch calls with a single and starred argument (#7768) - Improve cases covered by
RUF015(#7848) - Update
SIM15to allowopenfollowed byclose(#7916) - Respect
msgspec.Structdefault-copy semantics inRUF012(#7786) - Add
sqlalchemymethods to `flake8-boolean-trap`` exclusion list (#7874) - Add fix for
PLR1714(#7910) - Add fix for
PIE804(#7884) - Add fix for
PLC0208(#7887) - Add fix for
PYI055(#7886) - Update
non-pep695-type-aliasto require--unsafe-fixesoutside of stub files (#7836) - Improve fix message for
UP018(#7913) - Update
PLW3201to supportEnumsunder names (#7987)
Preview features
- Only show warnings for empty preview selectors when enabling rules (#7842)
- Add
unnecessary-key-checkto simplifykey in dct and dct[key]todct.get(key)(#7895) - Add
assignment-in-assertto prevent walrus expressions in assert statements (#7856) -
`refurb` -
`pylint`
New rules are added in preview.
Configuration
- Add
unsafe-fixessetting (#7769) - Add
extend-safe-fixesandextend-unsafe-fixesfor promoting and demoting fixes (#7841)
CLI
- Added
--unsafe-fixesoption for opt-in to display and apply unsafe fixes (#7769) - Fix use of deprecated
--formatoption in warning (#7837) - Show changed files when running under
--check(#7788) - Write summary messages to stderr when fixing via stdin instead of omitting them (#7838)
- Update fix summary message in
check --diffto include unsafe fix hints (#7790) - Add notebook
cellfield to JSON output format (#7664) - Rename applicability levels to
Safe,Unsafe, andDisplay(#7843)
Bug fixes
- Fix bug where f-strings were allowed in match pattern literal (#7857)
- Fix
SIM110with a yield in the condition (#7801) - Preserve trailing comments in
C414fixes (#7775) - Check sequence type before triggering
unnecessary-enumeratelensuggestion (#7781) - Use correct start location for class/function clause header (#7802)
- Fix incorrect fixes for
SIM101(#7798) - Format comment before parameter default correctly (#7870)
- Fix
E251false positive inside f-strings (#7894) - Allow bindings to be created and referenced within annotations (#7885)
- Show per-cell diffs when analyzing notebooks over
stdin(#7789) - Avoid curly brace escape in f-string format spec (#7780)
- Fix lexing single-quoted f-string with multi-line format spec (#7787)
- Consider nursery rules to be in-preview for
ruff rule(#7812) - Report precise location for invalid conversion flag (#7809)
- Visit pattern match guard as a boolean test (#7911)
- Respect
--unfixableinISCrules (#7917) - Fix edge case with
PIE804(#7922) - Show custom message in
PTH118forPath.joinpathwith starred arguments (#7852) - Fix false negative in
outdated-version-blockwhen using greater than comparisons (#7920) - Avoid converting f-strings within Django
gettextcalls (#7898) - Fix false positive in
PLR6301(#7933) - Treat type aliases as typing-only expressions e.g. resolves false positive in
TCH004(#7968) - Resolve
cache-dirrelative to project root (#7962) - Respect subscripted base classes in type-checking rules e.g. resolves false positive in
TCH003(#7954) - Fix JSON schema limit for
line-length(#7883) - Fix commented-out
coalescekeyword (#7876)
Documentation
- Document
reimplemented-starmapperformance effects (#7846) - Default to following the system dark/light mode (#7888)
- Add documentation for fixes (#7901)
- Fix typo in docs of
PLR6301(#7831) - Update
UP038docs to note that it results in slower code (#7872) - crlf -> cr-lf (#7766)
- Add an example of an unsafe fix (#7924)
- Fix documented examples for
unnecessary-subscript-reversal(#7774) - Correct error in tuple example in ruff formatter docs (#7822)
- Add versioning policy to documentation (#7923)
- Fix invalid code in
FURB177example (#7832)
Formatter
- Less scary
ruff formatmessage (#7867) - Remove spaces from import statements (#7859)
- Formatter quoting for f-strings with triple quotes (#7826)
- Update
ruff_python_formattergenerate.py comment (#7850) - Document one-call chaining deviation (#7767)
- Allow f-string modifications in line-shrinking cases (#7818)
- Add trailing comment deviation to README (#7827)
- Add trailing zero between dot and exponential (#7956)
- Force parentheses for power operations in unary expressions (#7955)
Playground
- Fix playground
Quick Fixaction (#7824)
0.1.1
Rule changes
- Add unsafe fix for
escape-sequence-in-docstring(D301) (#7970)
Configuration
- Respect
#(deprecated)attribute in configuration options (#8035) - Add
[format|lint].excludeoptions (#8000) - Respect
tab-sizesetting in formatter (#8006) - Add
lint.preview(#8002)
Preview features
-
`pylint` -
`pylint` -
`pylint` -
`pylint` -
`pylint` - Add fix for
triple-single-quotes(D300) (#7967)
Formatter
- New code style badge for
ruff format(#7878) - Fix comments outside expression parentheses (#7873)
- Add
--target-versiontoruff format(#8055) - Skip over parentheses when detecting
inkeyword (#8054) - Add
--diffoption toruff format(#7937) - Insert newline after nested function or class statements (#7946)
- Use
passover ellipsis in non-function/class contexts (#8049)
Bug fixes
- Lazily evaluate all PEP 695 type alias values (#8033)
- Avoid failed assertion when showing fixes from stdin (#8029)
- Avoid flagging HTTP and HTTPS literals in urllib-open (#8046)
- Avoid flagging
bad-dunder-method-namefor_(#8015) - Remove Python 2-only methods from
URLOpenaudit (#8047) - Use set bracket replacement for
iteration-over-setto preserve whitespace and comments (#8001)
Documentation
- Update tutorial to match revised Ruff defaults (#8066)
- Update rule
B005docs (#8028) - Update GitHub actions example in docs to use
--output-format(#8014) - Document
lint.previewandformat.preview(#8032) - Clarify that new rules should be added to
RuleGroup::Preview. (#7989)
0.1.2
This release includes the Beta version of the Ruff formatter — an extremely fast, Black-compatible Python formatter.
Try it today with ruff format! Check out the blog post and read the docs.
Preview features
-
`pylint` -
`pylint` -
`pylint` -
`refurb` - Add fix for
E223,E224, andE242(#8143) - Add fix for
E225,E226,E227, andE228(#8136) - Add fix for
E252(#8142) - Add fix for
E261(#8114) - Add fix for
E273andE274(#8144) - Add fix for
E275(#8133) - Update
SIM401to catch ternary operations (#7415) - Update
E721to allowisandisnot for direct type comparisons (#7905)
Rule changes
- Add
backports.strenumtodeprecated-imports(#8113) - Update
SIM112to ignorehttps_proxy,http_proxy, andno_proxy(#8140) - Update fix for
literal-membership(PLR6201) to be unsafe (#8097) - Update fix for
mutable-argument-defaults(B006) to be unsafe (#8108)
Formatter
- Change
line-endingdefault toauto(#8057) - Respect parenthesized generators in
has_own_parentheses(#8100) - Add caching to formatter (#8089)
- Remove
--line-lengthoption fromformatcommand (#8131) - Add formatter to
line-lengthdocumentation (#8150) - Warn about incompatible formatter options (#8088)
- Fix range of unparenthesized tuple subject in match statement (#8101)
- Remove experimental formatter warning (#8148)
- Don't move type param opening parenthesis comment (#8163)
- Update versions in format benchmark script (#8110)
- Avoid loading files for cached format results (#8134)
CLI
- Show the
ruff formatcommand in help menus (#8167) - Add
ruff versioncommand with long version display (#8034)
Configuration
- New
pycodestyle.max-line-lengthoption (#8039)
Bug fixes
- Detect
sys.version_infoslices inoutdated-version-block(#8112) - Avoid if-else simplification for
TYPE_CHECKINGblocks (#8072) - Avoid false-positive print separator diagnostic with starred argument (#8079)
Documentation
- Fix message for
too-many-argumentslint (#8092) - Fix
extend-unsafe-fixesandextend-safe-fixesexample (#8139) - Add links to
flake8-import-conventionsoptions (#8115) - Rework the documentation to incorporate the Ruff formatter (#7732)
- Fix
OptionsJSON schema description (#8081) - Fix typo (
pytext->pytest) (#8117) - Improve
magic-value-comparisonexample in docs (#8111)
0.1.3
This release includes a variety of improvements to the Ruff formatter, removing several known and unintentional deviations from Black.
Formatter
- Avoid space around pow for
None,TrueandFalse(#8189) - Avoid sorting all paths in the format command (#8181)
- Insert necessary blank line between class and leading comments (#8224)
- Avoid introducing new parentheses in annotated assignments (#8233)
- Refine the warnings about incompatible linter options (#8196)
- Add test and basic implementation for formatter preview mode (#8044)
- Refine warning about incompatible
isortsettings (#8192) - Only omit optional parentheses for starting or ending with parentheses (#8238)
- Use source type to determine parser mode for formatting (#8205)
- Don't warn about magic trailing comma when
isort.force-single-lineis true (#8244) - Use
SourceKind::difffor formatter (#8240) - Fix
fmt:offwith trailing child comment (#8234) - Formatter parentheses support for
IpyEscapeCommand(#8207)
Linter
-
`pylint` - Match rule prefixes from
externalcodes setting inunused-noqa(#8177) - Use
line-lengthsetting for isort in lieu ofpycodestyle.max-line-length(#8235) - Update fix for
unnecessary-paren-on-raise-exceptionto unsafe for unknown types (#8231) - Correct quick fix message for
W605(#8255)
Documentation
- Fix typo in max-doc-length documentation (#8201)
- Improve documentation around linter-formatter conflicts (#8257)
- Fix link to error suppression documentation in
unused-noqa(#8172) - Add
externaloption tounused-noqadocumentation (#8171) - Add title attribute to icons (#8060)
- Clarify unsafe case in RSE102 (#8256)
- Fix skipping formatting examples (#8210)
- docs: fix name of
magic-trailing-commaoption in README (#8200) - Add note about scope of rule changing in versioning policy (#8169)
- Document: Fix default lint rules (#8218)
- Fix a wrong setting in configuration.md (#8186)
- Fix misspelled TOML headers in the tutorial (#8209)
0.1.4
Preview features
-
`flake8-trio` -
`numpy` -
`pylint` -
`pylint` -
`pylint` -
`pyupgrade` -
`refurb` - Detect confusable Unicode-to-Unicode units in
RUF001,RUF002, andRUF003(#4430) - Add newline after module docstrings in preview style (#8283)
Formatter
- Add a note on line-too-long to the formatter docs (#8314)
- Preserve trailing statement semicolons when using
fmt: skip(#8273) - Preserve trailing semicolons when using
fmt: off(#8275) - Avoid duplicating linter-formatter compatibility warnings (#8292)
- Avoid inserting a newline after function docstrings (#8375)
- Insert newline between docstring and following own line comment (#8216)
- Split tuples in return positions by comma first (#8280)
- Avoid treating byte strings as docstrings (#8350)
- Add
--line-lengthoption toformatcommand (#8363) - Avoid parenthesizing unsplittable because of comments (#8431)
CLI
- Add
--output-formattoruff ruleandruff linter(#8203)
Bug fixes
- Respect
--force-excludeinlint.excludeandformat.exclude(#8393) - Respect
--extend-per-file-ignoreson the CLI (#8329) - Extend
bad-dunder-method-nameto permit__index__(#8300) - Fix panic with 8 in octal escape (#8356)
- Avoid raising
D300when both triple quote styles are present (#8462) - Consider unterminated f-strings in
FStringRanges(#8154) - Avoid including literal
shell=Truefor truthy, non-Truediagnostics (#8359) - Avoid triggering single-element test for starred expressions (#8433)
- Detect and ignore Jupyter automagics (#8398)
- Fix invalid E231 error with f-strings (#8369)
- Avoid triggering
NamedTuplerewrite with starred annotation (#8434) - Avoid un-setting bracket flag in logical lines (#8380)
- Place 'r' prefix before 'f' for raw format strings (#8464)
- Remove trailing periods from NumPy 2.0 code actions (#8475)
- Fix bug where
PLE1307was raised when formatting%cwith characters (#8407) - Remove unicode flag from comparable (#8440)
- Improve B015 message (#8295)
- Use
fixedOverflowWidgetsfor playground popover (#8458) - Mark
byte_boundsas a non-backwards-compatible NumPy 2.0 change (#8474)
Internals
- Add a dedicated cache directory per Ruff version (#8333)
- Allow selective caching for
--fixand--diff(#8316) - Improve performance of comment parsing (#8193)
- Improve performance of string parsing (#8227)
- Use a dedicated sort key for isort import sorting (#7963)
0.1.5
Preview features
-
`flake8-bandit` -
`flake8-trio` -
`flake8-trio` -
`flake8-trio` -
`flake8-trio` -
`refurb` - Flag all comparisons against builtin types in
E721(#8491) - Make
SIM118fix as safe when the expression is a known dictionary (#8525)
Formatter
- Fix multiline lambda expression statement formatting (#8466)
CLI
- Add hidden
--extensionto override inference of source type from file extension (#8373)
Configuration
- Account for selector specificity when merging
extend_unsafe_fixesandoverride extend_safe_fixes(#8444) - Add support for disabling cache with
RUFF_NO_CACHEenvironment variable (#8538)
Bug fixes
-
`E721` - Allow collapsed-ellipsis bodies in other statements (#8499)
- Avoid
D301autofix foruprefixed strings (#8495) - Only flag
flake8-triorules whentrioimport is present (#8550) - Reject more syntactically invalid Python programs (#8524)
- Avoid raising
TRIO115violations fortrio.sleep(...)calls with non-number values (#8532) - Fix
F841false 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-pythonovertarget-version(#8513) - Add singleton escape hatch to
B008documentation (#8501) - Fix tab configuration docs (#8502)
0.1.6
Preview features
-
`flake8-boolean-trap` -
`flake8-pie` -
`flake8-pie` -
`flake8-pie` -
`flake8-quotes` -
`pycodestyle` -
`pycodestyle` -
`pyflakes` -
`pylint` -
`pylint` -
`refurb` -
`refurb`
Rule changes
-
`flake8-annotations` -
`flake8-future-annotations` -
`flake8-implicit-namespace-package` -
`pydocstyle` -
`pyupgrade`
Formatter
- Fix instability in
awaitformatting 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` -
`pep8-naming` -
`pydocstyle`
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
EMfixes (#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_CHECKINGblocks imported fromtyping_extensionsor_typeshed(#8429) - Treat display as a builtin in IPython (#8707)
- Avoid
FURB113autofix 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)
0.1.7
Preview features
- Implement multiline dictionary and list hugging for preview style (#8293)
- Implement the
fix_power_op_line_lengthpreview style (#8947) - Use Python version to determine typing rewrite safety (#8919)
-
`flake8-annotations` -
`flake8-bandit` -
`flake8-bandit` -
`flake8-pyi` -
`flake8-simplify` -
`pylint` -
`pylint` -
`pylint` -
`pylint` -
`pylint` -
`refurb`
Rule changes
-
`flake8-boolean-trap` -
`flake8-bugbear` -
`flake8-pie` -
`flake8-pyi` -
`flake8-pyi` -
`flake8-simplify` -
`pep8-naming` -
`pycodestyle` -
`pycodestyle` -
`pydocstyle` -
`pylint`
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 checkandruff formatto default to the current directory (#8791) - Stop at the first resolved parent configuration (#8864)
Configuration
-
`pylint` -
`pylint` -
`isort` -
`isort`
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_modelmatching (#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
@overloadand@overridemethods for too-many-arguments checks (#8954) - Lexer start of line is false only for
Mode::Expression(#8880) - Mark
pydantic_settings.BaseSettingsas having default copy semantics (#8793) - Respect dictionary unpacking in
NamedTupleassignments (#8810) - Respect local subclasses in
flake8-type-checking(#8768) - Support type alias statements in simple statement positions (#8916)
-
`flake8-annotations` -
`flake8-pie` -
`flake8-pyi` -
`flake8-trio` -
`flake8-trio` -
`isort` -
`pep8-naming` -
`perflint` -
`pycodestyle` -
`pydocstyle` -
`pydocstyle` -
`pylint` -
`tryceratops`
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` -
`flake8-pyi`
0.1.8
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_assignmentspreview style (#8943) -
`pycodestyle` -
`pycodestyle` -
`pycodestyle` -
`refurb`
Rule changes
- Allow
flake8-type-checkingrules to automatically quote runtime-evaluated references (#6001) - Allow transparent cell magics in Jupyter Notebooks (#8911)
-
`flake8-annotations` -
`flake8-self` -
`pep8-naming` -
`pycodestyle` -
`pyflakes` -
`pylint`
Formatter
- Add
docstring-code-formatknob 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` -
`flake8-pie` -
`flake8-pie` -
`flake8-raise` -
`isort` -
`isort` -
`pycodestyle` -
`pylint` -
`pyupgrade` -
`refurb` -
`refurb` -
`ruff`
0.1.9
Breaking changes
- Add site-packages to default exclusions (#9188)
Preview features
- Fix: Avoid parenthesizing subscript targets and values (#9209)
-
`pylint` - Implement
reimplemented_operator(FURB118) (#9171) - Add a rule to detect string members in runtime-evaluated unions (#9143)
- Implement
no_blank_line_before_class_docstringpreview style (#9154)
Rule changes
CONSTANT_CASEvariables are improperly flagged for yoda violation (SIM300) (#9164)-
`flake8-pyi` -
`flake8-bugbear` - Add fix to automatically remove
printandpprintstatements (T201,T203) (#9208) - Prefer
NevertoNoReturnin auto-typing in Python >= 3.11 (ANN201) (#9213)
Formatter
can_omit_optional_parentheses: Exit early for unparenthesized expressions (#9125)- Fix
dynamicmode with doctests so that it doesn't exceed configured line width (#9129) - Fix
can_omit_optional_parenthesesfor expressions with a right most fstring (#9124) - Add
target_versionto formatter options (#9220)
CLI
- Update
ruff format --checkto 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
D208with multibyte indent (#9147) - Add support for
NoReturnin auto-return-typing (#9206) - Allow removal of
typingfromexempt-modules(#9214) - Avoid
mutable-class-defaultviolations for Pydantic subclasses (#9187) - Fix dropped union expressions for piped non-types in
PYI055autofix (#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-taskviolations 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)
0.1.10
Preview features
- Improve
dummy_implementationspreview 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
withstatements (#9222) -
`flake8-pyi` -
`pylint` -
`refurb` -
`ruff`
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-taskfor 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-noqaviaper-file-ignores(#9300) - Respect attribute chains when resolving builtin call paths (#9309)
- Treat all
typing_extensionsmembers as typing aliases (#9335) - Use
Displayfor formatter parse errors (#9316) - Wrap subscripted dicts in parens for f-string conversion (#9238)
-
`flake8-annotations` -
`flake8-annotations` -
`flake8-bandit` -
`pylint` -
`pylint` -
`refurb`
Documentation
- Expand target name for better rule documentation (#9302)
- Fix typos found by codespell (#9346)
-
`perflint` -
`pyupgrade`
0.1.11
Preview features
-
`pylint`
Bug fixes
- Check path string properly in
python -m ruffinvocations (#9367)
Documentation
0.1.12
Preview features
- Formatter: Hug multiline-strings in preview style (#9243)
-
`flake8-bandit` -
`flake8-bandit` -
`flake8-bandit` -
`flake8-bandit` -
`flake8-simplify` -
`pyflakes` -
`pylint` -
`ruff`
Rule changes
-
`flake8-boolean-trap` -
`flake8-builtins` -
`flake8-pyi` -
`pyflakes` -
`pyupgrade` -
`ruff` -
`ruff` -
`ruff`
Formatter
- Generate deterministic IDs when formatting notebooks (#9359)
- Allow
# fmt: skipwith 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.
Nonecomparisons (#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
DisplayParseErrorfor stdin parser errors (#9409) - Use
comment_rangesfor isort directive extraction (#9414) - Use transformed source code for diagnostic locations (#9408)
-
`flake8-pyi` -
`flake8-pyi` -
`pydocstyle` -
`pylint` -
`ruff`
Documentation
0.1.13
Bug fixes
- Include base pyproject when initializing cache settings (#9480)
-
`flake8-simplify` -
`pylint` -
`pylint`
0.1.14
Preview features
-
`flake8-bugbear` -
`flake8-simplify` -
`pygrep_hooks` -
`pylint` -
`refurb` -
`ruff` -
`tryceratops`
Rule changes
-
`flake8-pyi` -
`flake8-pyi` -
`pylint`
CLI
--show-settingsdisplays active settings in a far more readable format (#9464)- Add
--extensionsupport to the formatter (#9483)
Configuration
- Ignore preview status for fixable and unfixable selectors (#9538)
-
`pycodestyle`
Bug fixes
- Recursively visit deferred AST nodes (#9541)
- Visit deferred lambdas before type definitions (#9540)
-
`flake8-simplify` -
`pandas-vet` -
`pylint` -
`pylint` -
`refurb` -
`ruff`
Documentation
- Add instructions on using
noqawith 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`
0.1.15
Preview features
- Error when
NURSERYselector is used with--preview(#9682) - Preserve indentation around multiline strings in formatter (#9637)
-
`flake8-return` -
`flake8-simplify` -
`pycodestyle` -
`pylint` -
`pylint` -
`pylint` -
`pylint` -
`pylint` -
`ruff` -
`ruff` -
`ruff` -
`ruff`
CLI
- Enable auto-wrapping of
--helpoutput (#9633)
Bug fixes
- Avoid rendering display-only rules as fixable (#9649)
- Detect automagic-like assignments in notebooks (#9653)
- Generate custom JSON schema for dynamic setting (#9632)
-
`flake8-no-pep420` -
`flake8-pie` -
`flake8-return` -
`flake8-return` -
`flake8-return` -
`flake8-simplify` -
`flake8-type-checking` -
`flake8-type-checking` -
`pycodestyle` -
`pydocstyle`
Documentation
-
`flake8-pytest-style` -
`pylint` -
`isort`