ty 0.0.90
- Source
- https://github.com/astral-sh/ty
- Artifact scanned
ty-0.0.90.tar.gz- Compared with
ty-0.0.89.tar.gz(0 signals introduced since)- Files
- 3404 scanned, 1845 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 357 info
- Scan time
- 47.8 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 30 of 30 warn and critical signals; 30 demoted to info.
- Disclude version
- 4.3.0
- Scanned (UTC)
- 2026-10-23 12:33
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
likely benign IPA phonetic character tiː in a README pronunciation note.
Reasoning
The mixed-script flag fires on IPA phonetic symbols in a markdown pronunciation guide, a legitimate use of Unicode.
-
likely benign IPA phonetic character waɪ in a README pronunciation note.
Reasoning
IPA character waɪ in a README pronunciation guide is legitimate Unicode text, not an identifier hiding anything.
-
err.to_string, "Unknown HTML comment `snpshotttt-digggggnosstic` -- possibly a typo? \ (Add to `HTML_COMMENT_ALLOWLIST` if this is a false positive)", ); -
info
whitespace-anomalyruff/crates/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-anomalyruff/crates/ruff_annotate_snippets/tests/rustc_tests.rs:4533:3let s = c"foo\ ⟨U+00A0⟩ bar "; //~^^^ WARNING whitespace symbol '\u{a0}' is not skippedlikely benign Test case deliberately containing a non-breaking space to check whitespace handling.Reasoning
The U+00A0 is inside a test fixture that deliberately tests how non-breaking spaces are handled; the comment states this intent.
-
-
use -
-
x =likely benign Test string with non-breaking spaces used to check indentation detection.Reasoning
Non-breaking spaces within a Rust test string for indentation detection; this is a stylist test fixture, not a payload.
-
⟨U+00A0⟩1, ⟨U+00A0⟩2, ⟨U+00A0⟩3, )likely benign Test string with non-breaking spaces used to check indentation detection.Reasoning
Same stylist test fixture with non-breaking space indentation; a deliberate edge-case test.
-
⟨U+00A0⟩2, ⟨U+00A0⟩3, ) ";likely benign Test string with non-breaking spaces used to check indentation detection.Reasoning
Same stylist test fixture; the non-breaking spaces are deliberate test input.
-
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/docstring.py:2:1""" Multiline class docstring """ -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/generics_wrapping.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/import_comments.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/pep_570.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/pep_572_py310.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/pep_646.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/percent_precedence.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/power_op_spacing_long.py:1:1 -
info
warn→ info by reviewnarrow-file-charsetruff/crates/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 Formatter test fixture of repeated ** power expressions.Reasoning
A formatter fixture that repeats exponent expressions to test power-operator spacing; the narrow charset is just digits and operators in Python code, not a hidden payload.
-
info
high-complexityruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings.py:311:12 -
info
warn→ info by reviewhigh-complexityruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings__east_asian_width.py:5:10= =likely benign Long CJK string literals used in a width-handling formatter test.Reasoning
Ordinary Korean and Chinese string literals in a formatter test about east-asian width; the compression ratio is an artifact of the heuristic on natural text.
-
info
critical→ info by reviewdynamic-executionruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings__regression.py:20:9likely benign Formatter regression fixture calling os.system with a formatted string.Reasoning
This is formatter test input containing a string-format call inside os.system; the command is a fixed literal template with format arguments in a test fixture, never executed.
-
info
high-complexityruff/crates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_long_strings__regression.py:235:17= f = f -
info
warn→ info by reviewunicode-invisibleruff/crates/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 Test fixture containing a variation selector in an identifier for formatter edge-case testing.Reasoning
A formatter fixture named tricky_unicode_symbols deliberately includes variation selectors to test parsing and formatting of unusual identifiers.
-
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/docstring.py:2:1""" content\ """ return -
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/docstring_code_examples.py:12:1""" Do cool stuff. -
info
whitespace-anomalyruff/crates/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-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/attribute.py:1:1 -
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/lambda.py:27:1# Trailing -
info
warn→ info by reviewdynamic-executionruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/lambda.py:845:5likely benign Formatter fixture containing a subprocess shell=True call that is never executed.Reasoning
This is formatter test input; the rm -rf command is inside a function that is only parsed, never run, and the snippet is formatting-specific syntax.
-
info
warn→ info by reviewdynamic-executionruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/lambda.py:858:5# Regression test for https://github.com/astral-sh/ruff/issues/25397likely benign Formatter fixture containing a subprocess shell=True call that is never executed.Reasoning
Same formatter lambda fixture; the shell call is syntax input for the formatter, not executed code.
-
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/nested_string_quote_style.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/tstring.py:1:1 -
info
long-lineruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/tuple.py:15:1= -
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/unary.py:2:1pass = True -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/fluent.py:1:1 -
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/mixed_space_and_tab.py:2:1# fmt: off -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/off_on_off_on.py:1:1 -
info
whitespace-anomalyruff/crates/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-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/parentheses/nested.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/delete.py:1:1 -
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/match.py:3:1: # dangling match comment : pass -
info
whitespace-anomalyruff/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/type_alias.py:42:1\ = \ = -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/inline/err/different_match_pattern_bindings.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/inline/err/duplicate_type_parameter_names.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/inline/err/invalid_annotation_function.py:1:1 -
info
unicode-mixed-scriptruff/crates/ruff_python_parser/resources/inline/err/invalid_byte_literal.py:1:6b rb b -
info
unicode-mixed-scriptruff/crates/ruff_python_parser/resources/inline/err/invalid_byte_literal.py:2:4b rb b -
info
unicode-mixed-scriptruff/crates/ruff_python_parser/resources/inline/err/invalid_byte_literal.py:3:8rb b -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/inline/ok/ambiguous_lpar_with_items_binary_expr.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/inline/ok/non_duplicate_type_parameter_names.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/valid/expressions/bool_op.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/valid/expressions/compare.py:1:1 -
info
identifier-low-lengthruff/crates/ruff_python_parser/resources/valid/expressions/t_string.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 Parser test string enumerating hex escape sequences.Reasoning
A Rust parser test string listing all byte escapes as a deliberate test of escape handling, which is expected in a parser's test suite.
-
info
warn→ info by reviewencoding-escape-soupruff/crates/ruff_python_parser/src/string.rs:939:247NOPQRSTUVWXYZ^_`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 Byte-range escape test data in Ruff's Python string parser.Reasoning
The snippet is a run of \xNN escapes covering the full byte range, which is typical of parser test data exercising string escape handling in a Rust compiler front end. The pass is raw, which has a higher false-positive rate, and nothing suggests a payload.
-
\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 Hex escape table of all byte values in Ruff's string parser.Reasoning
This is the same kind of full-byte-range escape table in a parser source file. It is test or reference data for escape decoding, not executable obfuscation.
-
info
warn→ info by reviewencoding-escape-soupruff/crates/ruff_python_parser/src/string.rs:947:247NOPQRSTUVWXYZ^_`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 byte-escape test table in Ruff's string parser.Reasoning
Continuation of the same escape table in the Rust parser's string handling. It is a legitimate coding pattern for exercising byte escapes.
-
-
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")); /// ``` -
r#" b"123a𝐁<CURSOR>c" "#, ) -
1 | / 2 | | b"123a𝐁c" | |__________^ -
| 2 | b"123a𝐁c" | ^^^^^^^^^ "#); -
info
warn→ info by reviewlong-lineruff/crates/ty_python_semantic/resources/corpus/03_dict_unpack_huge.py:1:1likely benign Generated stress-test line of dict unpacking in a type checker corpus.Reasoning
The file lives in a type-checker corpus and is a generated stress input of repeated dict unpacking. The long line is an artifact of that generation, not concealment.
-
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/corpus/06_funcall_many_args.py:1:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/corpus/06_funcall_varargs_kwargs_mixed.py:1:1 -
info
critical→ info by reviewbuiltins-writeruff/crates/ty_python_semantic/resources/corpus/98_ann_assign_annotation_future_annotations.py:5:1: =likely benign Corpus fixture that assigns builtins.__import__ to test annotation handling.Reasoning
This is a numbered type-checker corpus fixture testing annotated assignment to a builtin attribute with future annotations. Assigning builtins.__import__ in a test input does not run in a shipped package, though the pattern is what a real attack would use, so the verdict is not certain.
-
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/annotations/intersection_types.md:195:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/annotations/invalid.md:415:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/annotations/new_types.md:525:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/annotations/string.md:254:1 -
info
critical→ info by reviewdynamic-importruff/crates/ty_python_semantic/resources/mdtest/call/dunder_import.md:33:17# revealed: Literal["sys", "os"] # revealed: ModuleTypelikely benign Mdtest checking the inferred type of __import__ called on a variable.Reasoning
This is a markdown test for the type checker, with reveal_type annotations showing the expected inferred type of __import__ on a non-literal argument. The dynamic import is the subject of the test, not an attack.
-
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/call/functools_partial.md:385:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/call/functools_partial.md:977:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/call/functools_partial.md:1691:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/instances/rich_comparison.md:236:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/instances/rich_comparison.md:500:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/tuples.md:16:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/tuples.md:37:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/tuples.md:61:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/tuples.md:234:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/tuples.md:274:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/tuples.md:311:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/comparison/tuples.md:500:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/diagnostics/semantic_syntax_errors.md:565:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/diagnostics/semantic_syntax_errors.md:637:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/diagnostics/unknown_argument.md:23:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/directives/assert_type.md:161:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/directives/assert_type.md:246:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/exhaustiveness_checking.md:516:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/function/parameters.md:56:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/function/return_type.md:312:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/callables.md:965:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/functions.md:1534:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/functions.md:1729:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/functions.md:2047:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/variables.md:312:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/variables.md:1458:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/variance.md:25:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/variance.md:107:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/legacy/variance.md:220:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/aliases.md:734:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/callables.md:1299:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/classes.md:112:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/classes.md:1032:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/functions.md:1670:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/functions.md:1829:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/functions.md:1969:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/functions.md:2152:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/functions.md:2766:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/paramspec.md:46:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/paramspec.md:524:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/paramspec.md:1010:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:232:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:468:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:572:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:587:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:608:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:619:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:1088:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:1442:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variables.md:1532:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:32:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:111:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:219:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:295:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:624:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:647:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:834:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:865:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:1262:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:1783:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/pep695/variance.md:2322:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/scoping.md:354:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/scoping.md:433:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/generics/scoping.md:532:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/implicit_type_aliases.md:798:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/implicit_type_aliases.md:2554:1 -
info
critical→ info by reviewbuiltins-writeruff/crates/ty_python_semantic/resources/mdtest/import/builtins.md:329:1= 123 = 456 # error: [unresolved-attribute] = 789 # error: [invalid-assignment]likely benign Mdtest assignment to builtins.foo with expected type error annotations.Reasoning
The embedded Python sits in a type-checker mdtest with inline error expectations such as '# error: [unresolved-attribute]'. The assignments exercise diagnostics for builtins writes and are never run as malware.
-
info
critical→ info by reviewbuiltins-writeruff/crates/ty_python_semantic/resources/mdtest/import/builtins.md:330:1= 123 = 456 # error: [unresolved-attribute] = 789 # error: [invalid-assignment] = # error: [invalid-assignment]likely benign Mdtest assignment to builtins.bar with an expected diagnostic.Reasoning
Same mdtest block with expected-error comments. The line asserts diagnostics for builtin attribute assignment rather than performing a real patch.
-
info
critical→ info by reviewbuiltins-writeruff/crates/ty_python_semantic/resources/mdtest/import/builtins.md:331:1= 456 # error: [unresolved-attribute] = 789 # error: [invalid-assignment] = # error: [invalid-assignment] = 10likely benign Mdtest assignment to builtins.baz checking invalid-assignment diagnostics.Reasoning
Part of the same type-checker test that verifies invalid-assignment diagnostics for builtins. It is a test expectation, not a live patch.
-
info
critical→ info by reviewbuiltins-writeruff/crates/ty_python_semantic/resources/mdtest/import/builtins.md:332:1= 789 # error: [invalid-assignment] = # error: [invalid-assignment] = 10likely benign Mdtest assignment to builtins.chr with expected invalid-assignment error.Reasoning
Same mdtest, exercising diagnostics for overriding builtins.chr. The error comments confirm the purpose is checking the type checker's behavior.
-
info
critical→ info by reviewbuiltins-writeruff/crates/ty_python_semantic/resources/mdtest/import/builtins.md:333:1= # error: [invalid-assignment] = 10likely benign Second builtins.chr assignment in the mdtest fixture.Reasoning
Repeated builtins.chr assignment inside the same type-checker test, serving as a diagnostics fixture.
-
info
warn→ info by reviewunicode-mixed-scriptruff/crates/ty_python_semantic/resources/mdtest/import/star.md:1023:1= ```likely benign Mdtest using a letterlike-symbol identifier that normalizes to __all__ in a star-import test.Reasoning
The identifier __aℓℓ__ mixes Latin with a letterlike symbol that NFKC-normalizes to __all__. In a star-import mdtest this looks like a deliberate test of how the checker handles normalized __all__ names, which is a legitimate subject. Some doubt remains because the homoglyph could be a crafted evasion.
-
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/intersection_types.md:136:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/intersection_types.md:185:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/aliased_conditions.md:168:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/assignment.md:105:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/assignment.md:451:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/complex_target.md:131:1 -
info
unicode-zero-widthruff/crates/ty_python_semantic/resources/mdtest/narrow/complex_target.md:146:32# In this case, it may seem like we can narrow it down to `int`, # but different values ⟨U+200B⟩⟨U+200B⟩may be reassigned to `x` and `y` in another place. # revealed: int | None -
info
unicode-zero-widthruff/crates/ty_python_semantic/resources/mdtest/narrow/complex_target.md:146:35# In this case, it may seem like we can narrow it down to `int`, # but different values ⟨U+200B⟩⟨U+200B⟩may be reassigned to `x` and `y` in another place. # revealed: int | None -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/conditionals/eq.md:586:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/conditionals/nested.md:77:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/conditionals/nested.md:122:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/conditionals/nested.md:310:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/narrow/type_guards.md:491:1 -
info
critical→ info by reviewdynamic-executionruff/crates/ty_python_semantic/resources/mdtest/pep613_type_aliases.md:867:28# typing conformance cases: : = # error: [invalid-type-form] : = # error: [invalid-type-form] : = # error: [invalid-type-form]likely benign An embedded-Python test case in a type-checker markdown spec evaluates a string spelling 'int' to build an intentionally invalid type alias.Reasoning
The eval call sits in a markdown test fixture for type-checker conformance cases. Its argument is built from chr codes 105, 110, 116, which spell 'int', and the line carries an expected-error annotation. It is an intentionally obscure invalid type alias meant to trigger [invalid-type-form], not a payload. The pattern is unusual but matches a deliberate test case, not an attack.
-
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/pep695_type_aliases.md:390:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/type_properties/constraints.md:1090:1 -
info
warn→ info by reviewunicode-mixed-scriptruff/crates/ty_python_semantic/resources/mdtest/type_properties/quantification.md:19:20likely benign A subscripted set name in a math table of quantifier cases, flagged for mixed Latin and modifier-letter script.Reasoning
The identifier Dᵧ is a Latin D followed by a modifier-letter subscript gamma. Subscripts like this are standard mathematical notation in a documentation table about quantifiers. The raw-pass script-mixing flag is a false positive from the subscript glyph.
-
info
warn→ info by reviewunicode-mixed-scriptruff/crates/ty_python_semantic/resources/mdtest/type_properties/quantification.md:19:35likely benign A subscripted set name in the same quantifier table, flagged for mixed scripts due to a subscript glyph.Reasoning
Dₓ is a Latin D with a modifier-letter subscript x, the same kind of mathematical subscript notation as the neighbouring Dᵧ in the same table row. The mixed-script flag comes from the subscript glyph, not from homoglyph spoofing or hidden code.
-
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/type_qualifiers/classvar.md:12:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/type_qualifiers/classvar.md:145:1 -
info
identifier-low-lengthruff/crates/ty_python_semantic/resources/mdtest/type_qualifiers/classvar.md:289:1 -
info
warn→ info by reviewunicode-zero-widthruff/crates/ty_python_semantic/resources/mdtest/typed_dict.md:368:23likely benign A stray zero-width space in a prose sentence of a TypedDict markdown test doc.Reasoning
A zero-width space appears inside prose in a markdown documentation file, between words, not in executable code. It is most likely a copy-paste or editor artifact. It has no effect on the rendered text or on any code that runs, though it is a minor invisible-character anomaly.
-
info
warn→ info by reviewunicode-zero-widthruff/crates/ty_python_semantic/resources/mdtest/typed_dict.md:368:26likely benign A second stray zero-width space in the same prose sentence of the TypedDict doc.Reasoning
This is a second zero-width space adjacent to the first in the same prose sentence of a markdown doc. It is most likely the same editor or copy-paste artifact. Invisible characters in prose carry no execution risk and only lightly suggest sloppy editing.
-
/// You must provide the `inherited_generic_context` that we should use for the `__new__` or /// `__init__` member. This is inherited from the containing class -⟨U+00AD⟩but importantly, from the /// class that the lookup is being performed on, and not the class containing the (possibly /// inherited) member. -
) -
) -
// Given constraints `α ≤ T` and `T ≤ β`, `α ≤ β` must also hold. If those bounds contain // other typevars, we can infer additional constraints. (α and U won't be bare typevars, // since those will be modeled by `TypeVarRange` bounds.) // -
// To handle all of these cases, we perform a constraint set assignability check to see // when `α ≤ β`. This gives us a constraint set, which should be the rhs of the sequent // implication. (That is, this check directly encodes `(α ≤ T) ∧ (T ≤ β) → (α ≤ β)` as an -
// when `α ≤ β`. This gives us a constraint set, which should be the rhs of the sequent // implication. (That is, this check directly encodes `(α ≤ T) ∧ (T ≤ β) → (α ≤ β)` as an // implication.) -
// when `α ≤ β`. This gives us a constraint set, which should be the rhs of the sequent // implication. (That is, this check directly encodes `(α ≤ T) ∧ (T ≤ β) → (α ≤ β)` as an // implication.) -
) -
) -
) -
) -
) -
) -
) -
) -
// Given `α ≤ T` and `U ≤ β`, if α contains U contravariantly, substitute β for U: // // (Contra[U] ≤ T) ∧ (U ≤ β) ⇒ (Contra[β] ≤ T) -
// Given `α ≤ T` and `U ≤ β`, if α contains U contravariantly, substitute β for U: // // (Contra[U] ≤ T) ∧ (U ≤ β) ⇒ (Contra[β] ≤ T) -
// If β contains T contravariantly, substitute α for T: // // (α ≤ T) ∧ (U ≤ Contra[T]) ⇒ (U ≤ Contra[α]) -
// // (α ≤ T) ∧ (U ≤ Contra[T]) ⇒ (U ≤ Contra[α]) if upper .bound -
// // (α ≤ T) ∧ (U ≤ Contra[T]) ⇒ (U ≤ Contra[α]) if upper .bound -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
) -
// (β ≤ α) ⇒ ((α ≤ T) ⇒ (β ≤ T)) if other_lower.is_constraint_set_subtype_of -
// (β ≤ α) ⇒ ((α ≤ T) ⇒ (β ≤ T)) if other_lower.is_constraint_set_subtype_of -
// (α ≤ β) ⇒ ((β ≤ T) ⇒ (α ≤ T)) if lower.is_constraint_set_subtype_of -
// (α ≤ β) ⇒ ((β ≤ T) ⇒ (α ≤ T)) if lower.is_constraint_set_subtype_of -
// `(α ≤ T) ∧ (β ≤ T)` is equivalent to `(α | β) ≤ T`. We do not create lower bounds that // are unions, so only add sequents when the union simplifies away. let combined = possibly_reversed_union; -
// `(α ≤ T) ∧ (β ≤ T)` is equivalent to `(α | β) ≤ T`. We do not create lower bounds that // are unions, so only add sequents when the union simplifies away. let combined = possibly_reversed_union; -
) -
) -
// `(α ≤ T) ∧ (T ≤ β)` simplifies to `T = α` when `α = β`. For ordinary typevars, only // simplify when the materialized bounds are the same `Type`; checking semantic equivalence // can recursively expand protocol members. ParamSpec bounds still need the semantic check -
// `(α ≤ T) ∧ (T ≤ β)` simplifies to `T = α` when `α = β`. For ordinary typevars, only // simplify when the materialized bounds are the same `Type`; checking semantic equivalence // can recursively expand protocol members. ParamSpec bounds still need the semantic check -
// `(α ≤ T) ∧ (T ≤ β)` simplifies to `T = α` when `α = β`. For ordinary typevars, only // simplify when the materialized bounds are the same `Type`; checking semantic equivalence // can recursively expand protocol members. ParamSpec bounds still need the semantic check -
// because callable types with different return types can represent the same parameter list. // (We don't need to add the projection implication `(T = α) ⇒ (α ≤ T)`, since anything we // can derive from `α ≤ T` we can also derive from `T = α`.) -
// because callable types with different return types can represent the same parameter list. // (We don't need to add the projection implication `(T = α) ⇒ (α ≤ T)`, since anything we // can derive from `α ≤ T` we can also derive from `T = α`.) -
// (We don't need to add the projection implication `(T = α) ⇒ (α ≤ T)`, since anything we // can derive from `α ≤ T` we can also derive from `T = α`.) let lower = self.bound.bottom_materialization; let upper = other.bound.top_materialization; -
// (We don't need to add the projection implication `(T = α) ⇒ (α ≤ T)`, since anything we // can derive from `α ≤ T` we can also derive from `T = α`.) let lower = self.bound.bottom_materialization; let upper = other.bound.top_materialization; -
) -
) -
// (α ≤ β) ⇒ ((T = β) ⇒ (α ≤ T)) if self .bound -
// (α ≤ β) ⇒ ((T = β) ⇒ (α ≤ T)) if self .bound -
// Given constraints `α ≤ T` and `T = β`, `α ≤ β` must also hold. If those bounds contain // other typevars, we can infer additional constraints. add_sequents_for_range; -
// Given constraints `α ≤ T` and `T = β`, `α ≤ β` must also hold. If those bounds contain // other typevars, we can infer additional constraints. add_sequents_for_range; -
) -
) -
// We can infer sequents from `α ≤ T` and `S ≤ U` if α _contains_ U. add_covariant_lower_weakened_sequent; add_contravariant_lower_weakened_sequent; -
// We can infer sequents from `α ≤ T` and `S ≤ U` if α _contains_ U. add_covariant_lower_weakened_sequent; add_contravariant_lower_weakened_sequent; -
) -
) -
// We can infer sequents from `α ≤ T` and `S ≤ U` if α _contains_ U. map.add_grouped_sequents -
// We can infer sequents from `α ≤ T` and `S ≤ U` if α _contains_ U. map.add_grouped_sequents -
) -
) -
// (α ≤ β) ⇒ ((T ≤ α) ⇒ (T ≤ β)) if upper.is_constraint_set_subtype_of -
// (α ≤ β) ⇒ ((T ≤ α) ⇒ (T ≤ β)) if upper.is_constraint_set_subtype_of -
// (β ≤ α) ⇒ ((T ≤ β) ⇒ (T ≤ α)) if other_upper.is_constraint_set_subtype_of -
// (β ≤ α) ⇒ ((T ≤ β) ⇒ (T ≤ α)) if other_upper.is_constraint_set_subtype_of -
// `(T ≤ α) ∧ (T ≤ β)` is equivalent to `T ≤ (α & β)`. We do not create upper bounds that // are intersections, so only add sequents when the intersection simplifies away. let combined = possibly_reversed_intersection; -
// `(T ≤ α) ∧ (T ≤ β)` is equivalent to `T ≤ (α & β)`. We do not create upper bounds that // are intersections, so only add sequents when the intersection simplifies away. let combined = possibly_reversed_intersection; -
) -
) -
// (β ≤ α) ⇒ ((T = β) ⇒ (T ≤ α)) if other .bound -
// (β ≤ α) ⇒ ((T = β) ⇒ (T ≤ α)) if other .bound -
// Given constraints `T ≤ α` and `T = β`, `α ≤ β` must also hold. If those bounds contain // other typevars, we can infer additional constraints. add_sequents_for_range; -
// Given constraints `T ≤ α` and `T = β`, `α ≤ β` must also hold. If those bounds contain // other typevars, we can infer additional constraints. add_sequents_for_range; -
) -
) -
// We can infer sequents from `T ≤ α` and `S ≤ U` if α _contains_ S. add_covariant_upper_weakened_sequent; add_contravariant_upper_weakened_sequent; -
// We can infer sequents from `T ≤ α` and `S ≤ U` if α _contains_ S. add_covariant_upper_weakened_sequent; add_contravariant_upper_weakened_sequent; -
) -
) -
// We can infer sequents from `T ≤ α` and `S = U` if α _contains_ S. map.add_grouped_sequents -
// We can infer sequents from `T ≤ α` and `S = U` if α _contains_ S. map.add_grouped_sequents -
) -
) -
) -
// Given `T = α` and `T = β`, if α and β are equivalent (but not _identical_), we can infer // either from the other. if self.bound == other.bound -
// Given `T = α` and `T = β`, if α and β are equivalent (but not _identical_), we can infer // either from the other. if self.bound == other.bound -
// Given constraints `T = α` and `T = β`, `α = β` must also hold. If those bounds contain // other typevars, we can infer additional constraints. add_sequents_for_equivalence; -
// Given constraints `T = α` and `T = β`, `α = β` must also hold. If those bounds contain // other typevars, we can infer additional constraints. add_sequents_for_equivalence; -
) -
) -
// Given constraints `T = α` and `U ≤ T`, `U ≤ α` must also hold. // The retained equality likewise makes this an equivalent replacement for `U ≤ T`. if self.typevar.is_same_typevar_as -
// Given constraints `T = α` and `U ≤ T`, `U ≤ α` must also hold. // The retained equality likewise makes this an equivalent replacement for `U ≤ T`. if self.typevar.is_same_typevar_as -
// We can infer sequents from `T = α` and `S ≤ U` if α _contains_ S or U. add_covariant_lower_weakened_sequent; add_covariant_upper_weakened_sequent; -
// We can infer sequents from `T = α` and `S ≤ U` if α _contains_ S or U. add_covariant_lower_weakened_sequent; add_covariant_upper_weakened_sequent; -
) -
) -
// We can infer sequents from `T = α` and `S = U` if α _contains_ U. map.add_grouped_sequents -
// We can infer sequents from `T = α` and `S = U` if α _contains_ U. map.add_grouped_sequents -
// // (α | β) ≤ T ⇔ (α ≤ T) ∧ (β ≤ T) match bound -
// // (α | β) ≤ T ⇔ (α ≤ T) ∧ (β ≤ T) match bound -
// // T ≤ (α & β) ⇔ (T ≤ α) ∧ (T ≤ β) // T ≤ (¬α & ¬β) ⇔ (T ≤ ¬α) ∧ (T ≤ ¬β) match bound -
// // T ≤ (α & β) ⇔ (T ≤ α) ∧ (T ≤ β) // T ≤ (¬α & ¬β) ⇔ (T ≤ ¬α) ∧ (T ≤ ¬β) match bound -
// T ≤ (α & β) ⇔ (T ≤ α) ∧ (T ≤ β) // T ≤ (¬α & ¬β) ⇔ (T ≤ ¬α) ∧ (T ≤ ¬β) match bound -
// T ≤ (α & β) ⇔ (T ≤ α) ∧ (T ≤ β) // T ≤ (¬α & ¬β) ⇔ (T ≤ ¬α) ∧ (T ≤ ¬β) match bound -
//! ```text //! μF. λT. tuple[T, F[list[T]] | None] //! ``` //! -
//! //! Here `μF` binds the recursive constructor, and `λT` binds its type parameter. //! The occurrence `F[list[T]]` is stored as `RecursiveVar` with the constructor's //! `RecursiveCycle` and unspecialized arguments `[list[T]]`. -
//! ```text //! unfold((μF. λT. tuple[T, F[list[T]] | None])[int]) //! = tuple[int, (μF. λT. tuple[T, F[list[T]] | None])[list[int]] | None] //! = tuple[int, Tree[list[int]] | None] -
//! unfold((μF. λT. tuple[T, F[list[T]] | None])[int]) //! = tuple[int, (μF. λT. tuple[T, F[list[T]] | None])[list[int]] | None] //! = tuple[int, Tree[list[int]] | None] //! ``` -
/// If the value ⟨U+200B⟩⟨U+200B⟩is defined recursively, widening is performed from fewer literal elements, /// resulting in faster convergence of the fixed-point iteration. const MAX_RECURSIVE_UNION_LITERALS: usize = 5; -
/// If the value ⟨U+200B⟩⟨U+200B⟩is defined recursively, widening is performed from fewer literal elements, /// resulting in faster convergence of the fixed-point iteration. const MAX_RECURSIVE_UNION_LITERALS: usize = 5; -
const MAX_RECURSIVE_UNION_LITERALS: usize = 5; /// If the value ⟨U+200B⟩⟨U+200B⟩is defined non-recursively, the fixed-point iteration will converge in one go, /// so in principle we can have as many literal elements as we want. /// We set a large limit for union and enum literals. -
const MAX_RECURSIVE_UNION_LITERALS: usize = 5; /// If the value ⟨U+200B⟩⟨U+200B⟩is defined non-recursively, the fixed-point iteration will converge in one go, /// so in principle we can have as many literal elements as we want. /// We set a large limit for union and enum literals.
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.
|
&&