Skip to main content

hypergumbo-lang-scip-python

SCIP-backed Python analyzer for hypergumbo, driven by scip-python (pyright).

This optional package is the second opt-in fidelity backend (after hypergumbo-lang-rust-analyzer) and the first that executes nothing from the analysed repository: pyright performs static inference only. It runs beside the ast-based python analyzer, never instead of it — the two producers' records for one declaration are folded into one node by the ADR-0057 merge pass, and every disagreement stays visible in the provenance slot.

What it adds, measured

On hypergumbo-core's own 179 source files (2026-09-19, scip-python 0.6.6): the syntax arm left 4,133 method-call receivers untyped (obj.method() with obj of unknown module); scip-python typed 3,973 of them (96.1%) — 3,840 to the stdlib (builtins.str, dict, list, pathlib.Path, re.Pattern, …), 96 in-repo, 37 third-party. That module is what hypergumbo verify-claims's I/O-boundary and taint verdicts key on. The Rust backend measured zero receivers typed.

Enabling it

npm install -g @sourcegraph/scip-python@0.6.6     # the producer (node + npm)
pipx install 'hypergumbo[scip-python]'            # this wrapper
hypergumbo survey . --backend scip-python         # one run

Durably, as a preference in either ADR-0045 config tier (allowed because the backend executes nothing):

# $XDG_CONFIG_HOME/hypergumbo/config.toml  or  <repo>/.hypergumbo.toml
[backends]
scip_python = true

HYPERGUMBO_SCIP_PYTHON=1 is the environment spelling; --backend tree-sitter turns every opt-in backend off for one run. Precedence: flag > environment > project config > user config.

When enabled but the binary or this package is missing, the CLI exits 2 with the install line rather than silently falling through.

What the translation does with scip-python's output

  • Global definitions become Symbols through the shared importer (hypergumbo_core.scip); scip-python declares no Document.language and no SymbolInformation.kind, so the importer reads the file extension and the SCIP descriptor grammar instead.
  • Parameter symbols and the per-module __init__: declaration are dropped: the syntax arm models neither, and a node nothing can pair with is noise.
  • References to in-repo definitions become calls / references edges.
  • References to external callables (stdlib, third-party) become external call edges carrying the receiver's module — python:pathlib.Path:0-0:glob:unresolved with a structured dst_ref — the same shape the syntax arm mints when it knows the module, so the two arms are comparable at every call site.

Recorded fixture

recorded/sample_project/ is a three-file package and the index.scip scip-python 0.6.6 emitted for it (metadata.project_root normalised). Every cross-backend test reads that recording, never anything derived from the syntax arm's own output (ADR-0057 §12).

Release files for hypergumbo-lang-scip-python 8.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hypergumbo-lang-scip-python 8.1.0
File Size Uploaded
hypergumbo_lang_scip_python-8.1.0.tar.gz 23.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hypergumbo-lang-scip-python 8.1.0
File Interpreter ABI Platform
hypergumbo_lang_scip_python-8.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 35.7 kB

Release files / hypergumbo_lang_scip_python-8.1.0.tar.gz

Download URL hypergumbo_lang_scip_python-8.1.0.tar.gz
Size 23.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9318a7069ef37f6ed77b8ba49baf724081c520abb2f7a9528bcedebf587bd4c3
BLAKE2b-256 checksum
How to use checksums
7b24ec90ff5ffa8cafebf799593ebf928dca550c1a9d8e91ddd2b62322c11a3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / hypergumbo_lang_scip_python-8.1.0-py3-none-any.whl

Download URL hypergumbo_lang_scip_python-8.1.0-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7bb69812237909bf424a598181818166148462f493c5b3e98597162e499c003e
BLAKE2b-256 checksum
How to use checksums
bef76679ac3f1befe2797eda56d3893108e6207af777b5caf412d1a8f49d06a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

8.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page