loomweave-plugin-python
The Python language plugin for Loomweave. Extracts Python entities from source files and serves them to the Loomweave core over the JSON-RPC protocol defined in WP2 L4.
Status: Python structural extractor. It emits modules, classes, functions,
contains, calls, references, imports, and versioned entity signatures
for Stable Entity Identity (SEI) matching. It also reads Wardline's NG-25
trust-vocabulary descriptor without importing Wardline and emits source-observed
Wardline decorator metadata/tags on decorated entities when a descriptor is
available.
Install (development)
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
This places loomweave-plugin-python on your $PATH and installs the
dev-time toolchain (ruff, mypy, pytest, pytest-cov, pre-commit).
ADR-023 tooling gates
Every commit must pass all four:
ruff check plugins/python
ruff format --check plugins/python
mypy --strict plugins/python
pytest plugins/python
CI runs the same four gates in the python-plugin job.
Interpreter discovery
pyright-langserver type-checks against whatever python it finds — the
plugin points it at the project's own interpreter deterministically, rather
than trusting whatever happened to be first on the launching process's
PATH (clarion-5cf9643de9). discover_project_interpreter
(src/loomweave_plugin_python/interpreter.py) walks a fixed order and stops
at the first usable candidate — a regular file (Path.is_file()) that
passes os.access(path, os.X_OK):
| Rung | Source | Pinned? |
|---|---|---|
| 1 | LOOMWEAVE_PYTHON_INTERPRETER env var names an executable file |
yes |
| 2 | <project_root>/.venv/bin/python |
yes |
| 3 | $VIRTUAL_ENV/bin/python |
yes |
| 4 | $CONDA_PREFIX/bin/python |
yes |
| 5 | first python / python3 on PATH |
no |
| 6 | nothing found | no |
An empty env value counts as unset at every rung. The returned path is
absolute and lexically normalised but never symlink-resolved — a venv's
bin/python is typically a symlink to the base interpreter, and pyright
needs the symlink path to stay inside the venv's site-packages.
This order is a cross-language contract shared with the Rust host
(crates/loomweave-core/src/plugin/interpreter.rs); the host runs the same
discovery and, for a [capabilities.runtime.pyright] plugin, exports its
pinned answer to the child as LOOMWEAVE_PYTHON_INTERPRETER (unless the
operator already set it). The plugin's own discovery therefore sees the
host's choice at rung 1 whenever the host found one.
When discovery lands on rung 5 or 6 (no project-owned interpreter), an
otherwise-complete calls/references facet is honestly demoted to
degraded with reason interpreter_unpinned — cross-module call/reference
targets may be missing because pyright resolved against a guessed
interpreter, even though nothing else went wrong. Fix it by creating
.venv in the project root or setting LOOMWEAVE_PYTHON_INTERPRETER to the
project's interpreter. See
ADR-058
for the full design and the interpreter_unpinned coverage semantics.
Design references
Metadata
Release files for loomweave-plugin-python 1.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| loomweave_plugin_python-1.6.1.tar.gz | 222.0 kB | With provenance | Details for loomweave_plugin_python-1.6.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| loomweave_plugin_python-1.6.1-py3-none-any.whl | Python 3 | none | any | Details for loomweave_plugin_python-1.6.1-py3-none-any.whl |
Total release size: 308.3 kB
Release files / loomweave_plugin_python-1.6.1.tar.gz
| Download URL | loomweave_plugin_python-1.6.1.tar.gz |
|---|---|
| Size | 222.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5704284de6ce698d9c9331245dd06d94fc877b73738557101374fa49eb8d0e75
|
|
BLAKE2b-256 checksum How to use checksums |
8b459e8d8be0436c3165ef1f6cac8be18df5fb49198f715cd890b681c07bc228
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.
Transparency logRelease files / loomweave_plugin_python-1.6.1-py3-none-any.whl
| Download URL | loomweave_plugin_python-1.6.1-py3-none-any.whl |
|---|---|
| Size | 86.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b42657987ff4d0ac17a4c2eb133740d17b3d73af29449e65a6228ab704ff5e6
|
|
BLAKE2b-256 checksum How to use checksums |
fd01ba6522d57078c9bd86481c132b9c26e184ca2173fddba661c81bc20ee8cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.
Transparency logSecurity for loomweave-plugin-python 1.6.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for loomweave_plugin_python-1.6.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.