rich 15.0.0
- Source
- https://github.com/Textualize/rich
- Tag scanned
v15.0.0- Compared with
v14.3.4(0 signals introduced since)- Files
- 319 scanned, 217 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 24 info
- Scan time
- 18.9 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 19 of 19 warn and critical signals; 19 demoted to info.
- Disclude version
- 4.1.0
- Scanned (UTC)
- 2026-10-21 22:38
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
likely benign ZWNJ in Persian prose in a translated README.
Reasoning
U+200C ZERO WIDTH NON-JOINER is a normal orthographic character in Persian text and appears throughout this Persian translation of the README in ordinary words. Raw-pass unicode findings are high false-positive, and this is not hidden content.
-
likely benign ZWNJ in Persian prose in a translated README.
Reasoning
Same as the other Persian ZWNJ findings: the character is required in Persian orthography (for example in می⟨U+200C⟩کند) and the context is ordinary documentation prose.
-
likely benign ZWNJ in Persian prose in a translated README.
Reasoning
ZWNJ between Persian word parts in normal documentation text. No code, no hidden instructions, no concealed payload.
-
likely benign ZWNJ in Persian prose in a translated README.
Reasoning
ZWNJ in a Persian sentence describing a downloader example. Normal Persian orthography.
-
likely benign ZWNJ in Persian prose in a translated README.
Reasoning
ZWNJ in a Persian sentence about a spinner demo. Normal orthography in documentation prose.
-
dismissed Japanese link text in a README mixing Latin, kana, and kanji.
Reasoning
A Japanese link label mixing Latin, Hiragana, and Han is standard Japanese typography. It is markdown prose in a README heading, not an identifier in executable code.
-
likely benign Russian README heading with a stray Latin character.
Reasoning
The heading 'Cовместимость' has a Latin С at the start with Cyrillic letters after it. This looks like an accidental keyboard-layout typo in documentation. It has no effect on code, and the mixed-script heading is not a spoofed identifier in executable code.
-
likely benign Russian README heading mixing Latin and Cyrillic letters.
Reasoning
Same heading as the homoglyph finding. The mixed script comes from one stray Latin letter in a Russian README heading, which is most plausibly a typo.
-
likely benign Russian README text with a Cyrillic С in the class name Console.
Reasoning
'Сonsole' in Russian prose uses a Cyrillic С where the class name is Console. This is a documentation typo; it does not occur in code that runs, and it does not hide a payload.
-
likely benign Russian README text mixing Cyrillic and Latin in the class name.
Reasoning
Same class-name typo in prose, mixed script from the Cyrillic С. Low impact documentation error, not a functional identifier.
-
likely benign Russian README prose with a Cyrillic С in Console.
Reasoning
Another occurrence of the Cyrillic С in 'Сonsole' in Russian prose. Consistent with an accidental typo repeated in documentation.
-
likely benign Russian README prose mixing Cyrillic and Latin in Console.
Reasoning
Same as the other Сonsole mixed-script finding: a documentation typo in prose, not executable code.
-
## 互換性 -
-
= =dismissed Rich's console uses frame introspection to locate the caller for log output.Reasoning
Rich's Console.log uses inspect.currentframe to find the caller's file and line number so it can show them in the log output. This is a documented, intended feature of a terminal formatting library, and the code only reads frame metadata.
-
assert is not None = None # type: ignore[attr-defined]likely benign Pretty-printer temporarily sets builtins._ to mirror interactive REPL behaviour.Reasoning
The module writes builtins._ to None just before printing, which mirrors how the interactive interpreter's displayhook manages the `_` name. This is a deliberate, documented-style behaviour of a pretty-printing library, not hidden malicious tampering, though writing a builtin is still a global side effect worth noting.
-
) = # type: ignore[attr-defined]likely benign Pretty-printer assigns the last displayed value to builtins._ in REPL fashion.Reasoning
The same pattern appears after printing, assigning the displayed value to builtins._ so the REPL-style `_` variable reflects the last result. It is the companion of the earlier assignment and fits the library's purpose of emulating the interactive display hook.
-
= -
= -
= assert == -
likely benign Test executes a hardcoded division-by-zero snippet to exercise traceback rendering.
Reasoning
The exec call runs a fixed literal string, "1/0", compiled with a filename, inside a test that deliberately raises ZeroDivisionError to check traceback printing. The flagged non-literal is only the compile() result, and there is no external input.
-
likely benign Test executes a constant 1/0 snippet to generate a traceback for assertion.
Reasoning
This is the same deliberate test pattern: a constant code string compiled and executed to produce a traceback for the console.print_exception test. No untrusted data reaches exec.
-
likely benign Developer script runs black on a path via shell=True with an f-string.
Reasoning
The shell=True call interpolates a path into a black command in a developer tool script. Injection risk exists only if the path comes from an untrusted source, and this is a maintainer utility, so it is a minor hygiene issue rather than evidence of malice.
-
likely benign Table generator invokes black through shell=True with an interpolated path.
Reasoning
This is a repeated invocation of the same formatting command in the table generator tool. Like the earlier call, it is a build-time helper with no sign of obfuscation or hidden behaviour; only the shell=True style is worth tightening.
Reproduce This Scan
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
&&