ruff 0.17.1
- Source
- https://github.com/astral-sh/ruff
- Artifact scanned
ruff-0.17.1.tar.gz- Compared with
ruff-0.17.0.tar.gz(1 signals introduced since)- Files
- 3421 scanned, 1694 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 105 info
- Scan time
- 22.1 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 17 of 17 warn and critical signals; 17 demoted to info.
- Disclude version
- 4.3.0
- Scanned (UTC)
- 2026-10-23 03:57
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
# For a specific version. |likely benign Documented pinned-version curl-to-sh and PowerShell install commands for ruff.Reasoning
The pinned-version installer command is the same documented pattern, with an explicit version in the URL. The PowerShell line is also a documented Windows installer.
-
# On macOS and Linux. | # On Windows.likely benign Documented curl-to-sh install command for the ruff tool.Reasoning
This is the documented one-line installer for ruff in a README, served over HTTPS from the project's own domain. Piping an install script to sh is a common, openly documented pattern, not hidden execution.
-
warn_user_once!; } -
-
info
whitespace-anomalycrates/ruff_annotate_snippets/tests/color/multiline_removal_suggestion.rs:2:1use ; -
| ___________^ 4 | | 5 | | ] | |_^ annotation -
| ___________^ 4 | | 5 | | ] | |_^ annotation -
│ ┏━━━━━━━━━━━┛ 4 │ ┃ 5 │ ┃ ] ╰╴┗━┛ annotation -
│ ┏━━━━━━━━━━━┛ 4 │ ┃ 5 │ ┃ ] ╰╴┗━┛ annotation -
��|�\u!5�cc\u\u�Ӻi��WWj�ȥ�'�}�\u�J�ȉ��W�\uO�@����\uw�V���LO����\u -
| 1 | �|�␂!5�cc␕␂�Ӻi��WWj�ȥ�'�}�␒�J�ȉ��W�␞O�@����␜w�V���LO����␔ -
│ 1 │ �|�␂!5�cc␕␂�Ӻi��WWj�ȥ�'�}�␒�J�ȉ��W�␞O�@����␜w�V���LO����␔ -
-
info
warn→ info by reviewwhitespace-anomalycrates/ruff_annotate_snippets/tests/rustc_tests.rs:4533:3let s = c"foo\ ⟨U+00A0⟩ bar "; //~^^^ WARNING whitespace symbol '\u{a0}' is not skippedlikely benign Non-breaking space in a Rust test fixture for whitespace handling.Reasoning
The no-break space appears inside a test string that deliberately exercises how whitespace symbols are handled, as the adjacent comment indicates. It is test data, not an attack.
-
Args: ⟨U+00A0⟩ ⟨U+00A0⟩ Returns: """ "#;likely benign Non-breaking space in indentation of a docstring example.Reasoning
A non-breaking space in the indentation of a docstring inside a raw string literal in a linter source file. This is most likely a copy-paste artifact in documentation text, with no execution impact.
-
-
/// /// let locator = Locator::new("α"); /// /// assert_eq!( -
&LinterSettings -
unresolved_target_version: PY313.into, allowed_confusables: from_iter, ..for_rules -
unresolved_target_version: PY314.into, allowed_confusables: from_iter, ..for_rules -
preview: Enabled, allowed_confusables: from_iter, ..for_rules -
/// ```python /// print("Ηello, world!") # "Η" is the Greek eta (`U+0397`). /// ``` /// -
info
unicode-mixed-scriptcrates/ruff_linter/src/rules/ruff/rules/ambiguous_unicode_character.rs:37:12/// ```python /// print("Ηello, world!") # "Η" is the Greek eta (`U+0397`). /// ``` /// -
/// ```python /// print("Ηello, world!") # "Η" is the Greek eta (`U+0397`). /// ``` /// -
info
unicode-homoglyphcrates/ruff_linter/src/rules/ruff/rules/ambiguous_unicode_character.rs:145:14/// ```python /// foo() # nоqa # "о" is Cyrillic (`U+043E`) /// ``` /// -
info
unicode-mixed-scriptcrates/ruff_linter/src/rules/ruff/rules/ambiguous_unicode_character.rs:145:14/// ```python /// foo() # nоqa # "о" is Cyrillic (`U+043E`) /// ``` /// -
info
unicode-homoglyphcrates/ruff_linter/src/rules/ruff/rules/ambiguous_unicode_character.rs:145:24/// ```python /// foo() # nоqa # "о" is Cyrillic (`U+043E`) /// ``` /// -
-
use -
-
x =likely benign Non-breaking space in a codegen test string containing Python source.Reasoning
The non-breaking space sits in test source text used to check indentation detection in the stylist. The fixture is expected to contain odd whitespace.
-
⟨U+00A0⟩1, ⟨U+00A0⟩2, ⟨U+00A0⟩3, )likely benign Non-breaking space in a codegen test string containing Python source.Reasoning
Same pattern as the adjacent finding: a whitespace-edge-case fixture within a test of Python code style detection.
-
⟨U+00A0⟩2, ⟨U+00A0⟩3, ) ";likely benign Non-breaking space in a codegen test string containing Python source.Reasoning
Same test fixture with whitespace edge cases for indentation and line-ending detection. No malicious effect.
-
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/black/cases/docstring.py:2:1""" Multiline class docstring """ -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/black/cases/generics_wrapping.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/black/cases/import_comments.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/black/cases/pep_570.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/black/cases/pep_572_py310.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/black/cases/pep_646.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/black/cases/percent_precedence.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/black/cases/power_op_spacing_long.py:1:1 -
info
warn→ info by reviewnarrow-file-charsetcrates/ruff_python_formatter/resources/test/fixtures/black/cases/power_op_spacing_long.py:1:1= 1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1 = 1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1 = 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1 ** 1likely benign Repeated power-operator arithmetic in a formatter test fixture.Reasoning
The file is a Black formatter test fixture for power-operator spacing, made of repeated 1**1 expressions. A small character set comes from the content, not from encoded or constrained obfuscation, and it does not execute anything.
-
info
high-complexitycrates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings.py:311:12 -
info
warn→ info by reviewhigh-complexitycrates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings__east_asian_width.py:5:10= =dismissed Multilingual string literals used to test East Asian width handling.Reasoning
Plain Chinese, Korean and Japanese string literals in a formatter test that checks line width for East Asian characters. The compression ratio flag is a false positive on natural text.
-
info
critical→ info by reviewdynamic-executioncrates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings__regression.py:20:9likely benign os.system call with a formatted literal string in a formatter test fixture.Reasoning
This is a formatter regression fixture. The os.system argument is a literal string with a .format call, used only to test line-breaking. The critical severity comes from the non-literal heuristic and does not reflect any real command injection.
-
info
high-complexitycrates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings__regression.py:235:17= f = f -
info
warn→ info by reviewunicode-invisiblecrates/ruff_python_formatter/resources/test/fixtures/black/cases/tricky_unicode_symbols.py:4:2= 3 x⟨U+E0100⟩ = 4 មុ = 1 Q̇_per_meter = 4likely benign Identifier containing an invisible variation selector in a Unicode-handling test fixture.Reasoning
The file is named tricky_unicode_symbols and tests how the formatter handles unusual Unicode identifiers. The variation selector supplement inside an identifier is an invisible character that could hide content, but in a test fixture it is deliberate input for parser coverage. The residual doubt keeps this from being higher.
-
""" content\ """ return -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/docstring_code_examples.py:12:1""" Do cool stuff. -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/docstring_tab_indentation.py:7:1""" Arguments: arg1: super duper arg with 2 tabs in front -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/ruff/expression/attribute.py:1:1 -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/expression/lambda.py:27:1# Trailing -
info
warn→ info by reviewdynamic-executioncrates/ruff_python_formatter/resources/test/fixtures/ruff/expression/lambda.py:845:5likely benign subprocess.check_call with shell=True and an f-string command in a formatter test fixture.Reasoning
This is a formatter fixture testing lambda formatting inside an f-string. The shell=True call with an rm -rf command is only illustrative code that is never run, and the f-string interpolates computed paths. The pattern is unsafe in general, but it is not hidden or malicious here.
-
info
warn→ info by reviewdynamic-executioncrates/ruff_python_formatter/resources/test/fixtures/ruff/expression/lambda.py:858:5# Regression test for https://github.com/astral-sh/ruff/issues/25397likely benign subprocess.check_call with shell=True in a lambda-formatting regression fixture.Reasoning
Same formatter fixture testing lambda layout inside a shell command string, with the regression issue cited in a comment. The code is test input for the formatter and is not executed.
-
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/ruff/expression/nested_string_quote_style.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/ruff/expression/tstring.py:1:1 -
= -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/expression/unary.py:2:1pass = True -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/mixed_space_and_tab.py:2:1# fmt: off -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/off_on_off_on.py:1:1 -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_skip/compound_one_liners.py:15:1# fmt: skip # Multiple statements in body (should not apply - multiline) -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/ruff/parentheses/nested.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_formatter/resources/test/fixtures/ruff/statement/delete.py:1:1 -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/statement/match.py:3:1: # dangling match comment : pass -
info
whitespace-anomalycrates/ruff_python_formatter/resources/test/fixtures/ruff/statement/type_alias.py:42:1\ = \ = -
info
identifier-low-lengthcrates/ruff_python_parser/resources/inline/err/different_match_pattern_bindings.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_parser/resources/inline/err/duplicate_type_parameter_names.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_parser/resources/inline/err/invalid_annotation_function.py:1:1 -
info
unicode-mixed-scriptcrates/ruff_python_parser/resources/inline/err/invalid_byte_literal.py:1:6b rb b -
info
unicode-mixed-scriptcrates/ruff_python_parser/resources/inline/err/invalid_byte_literal.py:2:4b rb b -
info
unicode-mixed-scriptcrates/ruff_python_parser/resources/inline/err/invalid_byte_literal.py:3:8rb b -
info
identifier-low-lengthcrates/ruff_python_parser/resources/inline/ok/ambiguous_lpar_with_items_binary_expr.py:1:1 -
info
identifier-low-lengthcrates/ruff_python_parser/resources/inline/ok/non_duplicate_type_parameter_names.py:1:1 -
\ = \ = -
-
// test_err invalid_byte_literal // b'123a𝐁c' // rb"a𝐁c123" // b"""123a𝐁c""" -
// b'123a𝐁c' // rb"a𝐁c123" // b"""123a𝐁c""" Bytes -
// rb"a𝐁c123" // b"""123a𝐁c""" Bytes -
\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\likely benign A Rust test table of byte escape sequences covering all byte values, inside the ruff Python parser's string handling code.Reasoning
The snippet is a sequence of byte escapes enumerating all byte values 0x00 through 0x7f in order, which is the typical shape of a test fixture for a Python string/byte-literal parser (checking escape handling and non-ASCII bytes). The Rust file is a parser implementation in the ruff project, a well-known linter; raw-pass escape-hex heuristics fire on test tables like this, and there is no execution or payload behavior.
-
NOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xlikely benign Continuation of a sequential byte-escape test table in the ruff Python parser's string module.Reasoning
This is the continuation of the same sequential byte table (0x80 through 0xc1 and beyond). It is a systematic enumeration of byte values used for parser test coverage of the ruff project, not an encoded payload; the raw-pass escape-soup signal is a known false positive for such fixtures.
-
\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\likely benign A second Rust test table enumerating byte escape values in the ruff Python parser's string tests.Reasoning
Same sequential byte-escape enumeration as the earlier finding at line 939, repeated in a second test case with a quoted double-quote variant. This is a legitimate parser test fixture covering all byte values, with no decoding or execution behavior.
-
NOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xlikely benign Continuation of the second sequential byte-escape test table in the ruff parser's string module.Reasoning
Continuation of the systematic byte-value table in the same test fixture. Its structure (ordered 0x80 onward) and location in a parser test module point to legitimate test data, not obfuscated malicious content.
-
-
assert!; assert!; assert!; assert!; -
/// assert!(is_lowercase("_")); /// assert!(is_lowercase("αbc")); /// assert!(!is_lowercase("αBC")); /// assert!(!is_lowercase("Ωbc")); -
/// assert!(is_lowercase("_")); /// assert!(is_lowercase("αbc")); /// assert!(!is_lowercase("αBC")); /// assert!(!is_lowercase("Ωbc")); -
/// assert!(is_lowercase("αbc")); /// assert!(!is_lowercase("αBC")); /// assert!(!is_lowercase("Ωbc")); /// ``` -
/// assert!(is_lowercase("αbc")); /// assert!(!is_lowercase("αBC")); /// assert!(!is_lowercase("Ωbc")); /// ``` -
/// assert!(!is_lowercase("αBC")); /// assert!(!is_lowercase("Ωbc")); /// ``` -
/// assert!(is_uppercase("_")); /// assert!(is_uppercase("ΩBC")); /// assert!(!is_uppercase("Ωbc")); /// assert!(!is_uppercase("αBC")); -
/// assert!(is_uppercase("ΩBC")); /// assert!(!is_uppercase("Ωbc")); /// assert!(!is_uppercase("αBC")); /// ``` -
/// assert!(!is_uppercase("Ωbc")); /// assert!(!is_uppercase("αBC")); /// ``` -
/// assert!(!is_uppercase("Ωbc")); /// assert!(!is_uppercase("αBC")); /// ``` -
# which could be confused for "-", "p", and "*", respectively. allowed-confusables = "# )]
Reproduce This Scan
Run disclude locally to verify. These commands scan the published file; the "new in this release" marks come from comparing it with the previous release's file, which they don't repeat. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
|
&&