PyPI / rich / 15.0.0

rich 15.0.0

Source
https://github.com/Textualize/rich
Artifact scanned
rich-15.0.0-py3-none-any.whl (wheel · 303.4 KB · SHA-256 33bd4ef74232…)
Compared with
rich-14.3.4-py3-none-any.whl (0 signals introduced since)
Files
100 scanned, 5 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 3 info
Scan time
5.3 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 3 of 3 warn and critical signals; 3 demoted to info.
Disclude version
4.3.0
Scanned (UTC)
2026-10-23 01:36

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info warn → info by review frame-introspection rich/console.py:1932:21

    `inspect.currentframe` — call-stack frame introspection (ast pass, confidence 0.70)

    
                frame = inspect.currentframe()
            else:
                frame = currentframe()
    likely benign LLM, confidence 0.93 Rich's Console obtains the current stack frame via inspect.currentframe, a routine call for caller introspection.
    Reasoning

    This is `inspect.currentframe()` with a fallback to `currentframe()`, a common pattern in rich's Console for finding the caller's frame, for example to report the calling module or line in logging and log_locals. Frame introspection alone is not malicious, and the snippet shows no exec, network or process activity.

  2. info critical → info by review builtins-write rich/pretty.py:204:13

    `builtins._ = ...` — patches a built-in for every importer of this module (ast pass, confidence 0.95)

                assert console is not None
                builtins._ = None  # type: ignore[attr-defined]
                console.print(
                    (
    likely benign LLM, confidence 0.93 Rich's pretty printer sets builtins._ around console output to mimic the interactive REPL's last-value convention.
    Reasoning

    In rich's pretty printing, the `_` builtin is temporarily set to None and then to the last printed value. This mirrors the REPL's sys.displayhook convention so that `_` refers to the last result in interactive sessions. It is a documented, intentional behavior of the library, not a supply-chain implant, though it does touch a global builtin.

  3. info critical → info by review builtins-write rich/pretty.py:221:13

    `builtins._ = ...` — patches a built-in for every importer of this module (ast pass, confidence 0.95)

                )
                builtins._ = value  # type: ignore[attr-defined]
    
        try:
    likely benign LLM, confidence 0.93 Rich's pretty printer assigns the printed value to builtins._, matching REPL displayhook behavior.
    Reasoning

    This is the second half of the same `builtins._` save-and-restore logic in rich's pretty printer, assigning the printed value back to `_` as the REPL displayhook does. It is consistent with the library's documented interactive-display behavior and contains no payload or unexpected execution.

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.

cargo install disclude --version 4.3.0
curl -fsSL -o rich-15.0.0-py3-none-any.whl https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl
printf '%s  %s\n' 33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb rich-15.0.0-py3-none-any.whl | shasum -a 256 -c -
unzip -q rich-15.0.0-py3-none-any.whl -d pkg
disclude scan --untrusted --severity info pkg