loomweave-plugin-python 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- loomweave_plugin_python/__init__.py +3 -0
- loomweave_plugin_python/__main__.py +15 -0
- loomweave_plugin_python/call_resolver.py +65 -0
- loomweave_plugin_python/entity_id.py +75 -0
- loomweave_plugin_python/extractor.py +1312 -0
- loomweave_plugin_python/py.typed +0 -0
- loomweave_plugin_python/pyright_session.py +1655 -0
- loomweave_plugin_python/qualname.py +48 -0
- loomweave_plugin_python/reference_resolver.py +70 -0
- loomweave_plugin_python/server.py +310 -0
- loomweave_plugin_python/stdout_guard.py +62 -0
- loomweave_plugin_python/wardline_descriptor.py +197 -0
- loomweave_plugin_python-1.0.0.data/data/share/loomweave/plugins/python/plugin.toml +71 -0
- loomweave_plugin_python-1.0.0.dist-info/METADATA +73 -0
- loomweave_plugin_python-1.0.0.dist-info/RECORD +17 -0
- loomweave_plugin_python-1.0.0.dist-info/WHEEL +4 -0
- loomweave_plugin_python-1.0.0.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
[plugin]
|
|
2
|
+
name = "loomweave-plugin-python"
|
|
3
|
+
plugin_id = "python"
|
|
4
|
+
version = "1.0.0"
|
|
5
|
+
protocol_version = "1.0"
|
|
6
|
+
# Bare basename per ADR-021 §Layer 1 + WP2 scrub commit eb0a41d — the host
|
|
7
|
+
# refuses manifests whose `executable` carries any path component.
|
|
8
|
+
executable = "loomweave-plugin-python"
|
|
9
|
+
language = "python"
|
|
10
|
+
extensions = ["py"]
|
|
11
|
+
|
|
12
|
+
[capabilities.runtime]
|
|
13
|
+
# Plugin's declared RSS envelope (MiB). Effective prlimit is
|
|
14
|
+
# min(this, core default 2 GiB). Pyright's Node-based language server
|
|
15
|
+
# inherits this limit from the plugin process, so B.4* declares the core
|
|
16
|
+
# ceiling rather than the Sprint-1 CPython-only working set.
|
|
17
|
+
expected_max_rss_mb = 2048
|
|
18
|
+
# Triggers LMWV-INFRA-PLUGIN-ENTITY-OVERRUN-WARNING well before the 500k
|
|
19
|
+
# core cap (warning emission itself is deferred to Tier B — Sprint 1
|
|
20
|
+
# only lands the declaration).
|
|
21
|
+
expected_entities_per_file = 5000
|
|
22
|
+
# Wardline semantic extraction reads the NG-25 vocabulary descriptor without
|
|
23
|
+
# importing Wardline, then emits source-observed decorator metadata on entities.
|
|
24
|
+
wardline_aware = true
|
|
25
|
+
# v0.1 rejects `true` at initialize with LMWV-INFRA-MANIFEST-UNSUPPORTED-CAPABILITY.
|
|
26
|
+
reads_outside_project_root = false
|
|
27
|
+
|
|
28
|
+
[capabilities.runtime.pyright]
|
|
29
|
+
pin = "1.1.409"
|
|
30
|
+
|
|
31
|
+
[ontology]
|
|
32
|
+
# Sprint 2 B.2: classes + modules join the kind set. B.3 (ADR-026) adds
|
|
33
|
+
# the first edge kind, `contains`. B.4* adds scan-time `calls` edges.
|
|
34
|
+
# B.5* adds scan-time `references` edges. Phase 3 Task 3 adds scan-time
|
|
35
|
+
# `imports` candidate edges.
|
|
36
|
+
entity_kinds = ["function", "class", "module"]
|
|
37
|
+
edge_kinds = ["contains", "calls", "references", "imports"]
|
|
38
|
+
# Per ADR-022: uppercase `LMWV-{PLUGIN_ID_UPPER}-`. Reserved at parse
|
|
39
|
+
# against the LMWV-INFRA-* and LMWV-FACT-* namespaces.
|
|
40
|
+
rule_id_prefix = "LMWV-PY-"
|
|
41
|
+
# Bumps per ADR-027 when the entity/edge/rule set shifts. Phase 3 Task 3 is a
|
|
42
|
+
# MINOR bump (additive `imports` edge kind). NOTE: ADR-007's summary-cache key
|
|
43
|
+
# is the 5-tuple (entity_id, content_hash, prompt_template_id, model_tier,
|
|
44
|
+
# guidance_fingerprint) — ontology_version is handshake-validation, NOT a
|
|
45
|
+
# cache-key component. New edge rows miss the cache by component-1 of
|
|
46
|
+
# the 5-tuple organically (no edges live in the 5-tuple yet anyway).
|
|
47
|
+
ontology_version = "0.7.0"
|
|
48
|
+
|
|
49
|
+
[integrations.wardline]
|
|
50
|
+
expected_descriptor_version = "wardline-generic-2"
|
|
51
|
+
|
|
52
|
+
[ontology.roles]
|
|
53
|
+
file_scope = ["module"]
|
|
54
|
+
callable = ["function"]
|
|
55
|
+
syntax_degraded_module = ["module"]
|
|
56
|
+
|
|
57
|
+
# SEI signature declaration (ADR-038 REQ-C-01 / Wave 1). The plugin emits a
|
|
58
|
+
# versioned `signature` object per function/class entity, stored verbatim by the
|
|
59
|
+
# core and compared by string equality as the matcher's move-case input. Modules
|
|
60
|
+
# and packages declare no signature (the move case abstains for them — fail
|
|
61
|
+
# closed). A `schema_version` bump voids cached signature equality.
|
|
62
|
+
[signature]
|
|
63
|
+
schema_version = 1
|
|
64
|
+
|
|
65
|
+
[signature.schemas.function]
|
|
66
|
+
v = 1
|
|
67
|
+
fields = ["params", "return_ann"]
|
|
68
|
+
|
|
69
|
+
[signature.schemas.class]
|
|
70
|
+
v = 1
|
|
71
|
+
fields = ["bases"]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: loomweave-plugin-python
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Loomweave Python language plugin — v1.0 release
|
|
5
|
+
Author-email: John Morrissey <qacona@gmail.com>
|
|
6
|
+
Classifier: Development Status :: 4 - Beta
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
+
Requires-Python: >=3.11
|
|
11
|
+
Requires-Dist: packaging>=24
|
|
12
|
+
Requires-Dist: pyright==1.1.409
|
|
13
|
+
Requires-Dist: pyyaml>=6.0
|
|
14
|
+
Provides-Extra: dev
|
|
15
|
+
Requires-Dist: build>=1.2; extra == 'dev'
|
|
16
|
+
Requires-Dist: mypy>=1.11; extra == 'dev'
|
|
17
|
+
Requires-Dist: pip-audit>=2.9; extra == 'dev'
|
|
18
|
+
Requires-Dist: pre-commit>=3.8; extra == 'dev'
|
|
19
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
|
|
20
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
21
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
22
|
+
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# loomweave-plugin-python
|
|
26
|
+
|
|
27
|
+
The Python language plugin for [Loomweave](../../README.md). Extracts Python
|
|
28
|
+
entities from source files and serves them to the Loomweave core over the
|
|
29
|
+
JSON-RPC protocol defined in [WP2 L4](../../docs/implementation/sprint-1/wp2-plugin-host.md#l4--json-rpc-method-set--content-length-framing).
|
|
30
|
+
|
|
31
|
+
**Status**: Python structural extractor. It emits modules, classes, functions,
|
|
32
|
+
`contains`, `calls`, `references`, `imports`, and versioned entity signatures
|
|
33
|
+
for Stable Entity Identity (SEI) matching. It also reads Wardline's NG-25
|
|
34
|
+
trust-vocabulary descriptor without importing Wardline and emits source-observed
|
|
35
|
+
Wardline decorator metadata/tags on decorated entities when a descriptor is
|
|
36
|
+
available.
|
|
37
|
+
|
|
38
|
+
## Install (development)
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
python -m venv .venv
|
|
42
|
+
source .venv/bin/activate
|
|
43
|
+
pip install -e '.[dev]'
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
This places `loomweave-plugin-python` on your `$PATH` and installs the
|
|
47
|
+
dev-time toolchain (`ruff`, `mypy`, `pytest`, `pytest-cov`, `pre-commit`).
|
|
48
|
+
|
|
49
|
+
## ADR-023 tooling gates
|
|
50
|
+
|
|
51
|
+
Every commit must pass all four:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
ruff check plugins/python
|
|
55
|
+
ruff format --check plugins/python
|
|
56
|
+
mypy --strict plugins/python
|
|
57
|
+
pytest plugins/python
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
CI runs the same four gates in the `python-plugin` job.
|
|
61
|
+
|
|
62
|
+
## Design references
|
|
63
|
+
|
|
64
|
+
- [WP3 plan](../../docs/implementation/sprint-1/wp3-python-plugin.md) — task
|
|
65
|
+
ledger, lock-ins, and UQ resolutions.
|
|
66
|
+
- [ADR-003](../../docs/loomweave/adr/ADR-003-entity-id-scheme.md) — 3-segment
|
|
67
|
+
`EntityId` format this plugin produces.
|
|
68
|
+
- [ADR-018](../../docs/loomweave/adr/ADR-018-identity-reconciliation.md) —
|
|
69
|
+
cross-product identity join with Wardline.
|
|
70
|
+
- [ADR-022](../../docs/loomweave/adr/ADR-022-core-plugin-ontology.md) —
|
|
71
|
+
manifest schema and ontology-boundary enforcement.
|
|
72
|
+
- [ADR-023](../../docs/loomweave/adr/ADR-023-tooling-baseline.md) — the four
|
|
73
|
+
Python gates and the `pre-commit` setup.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
loomweave_plugin_python/__init__.py,sha256=wmv6wivp3tnzIGHWWG9eO2JiGwxYZW9uqvggUibOLlA,95
|
|
2
|
+
loomweave_plugin_python/__main__.py,sha256=oy1S1Ru7WdX6jcAVhsqNI25LxAbQq3jHBlETBt20fyM,376
|
|
3
|
+
loomweave_plugin_python/call_resolver.py,sha256=V6w5AEmWgjkKuWdgUPJTXStOavmmbyvjP0PQOeT3xkU,1692
|
|
4
|
+
loomweave_plugin_python/entity_id.py,sha256=l7_5yyh6WVH9xIzrQVCDb2GmBMhovOVmuQezcZIVf8k,2691
|
|
5
|
+
loomweave_plugin_python/extractor.py,sha256=niapsUWBbHlQXI17eYY6teJoQB4XxF-Nh2fcqa7dvro,48316
|
|
6
|
+
loomweave_plugin_python/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
loomweave_plugin_python/pyright_session.py,sha256=0qXZFTzprefLYEaM7wMP6DjylR_ej9XqDbngQKIkvS4,60871
|
|
8
|
+
loomweave_plugin_python/qualname.py,sha256=7JVETZnQkgU1FxPbyTmzSVZDBm_2SrXGZlqUOjB51W0,2090
|
|
9
|
+
loomweave_plugin_python/reference_resolver.py,sha256=7r2QsM9tRWeYHeRD62-jBvByGkdLC-0AWYhhgKNBgV4,1871
|
|
10
|
+
loomweave_plugin_python/server.py,sha256=UARexfFun59sOpFSMWP7t6baLcOoi98Thbc_Gq6JQ3Q,12329
|
|
11
|
+
loomweave_plugin_python/stdout_guard.py,sha256=tUzcXyvXuy3-dXB81_xCNk8KWE3mqtsWSge81KPDhKg,2007
|
|
12
|
+
loomweave_plugin_python/wardline_descriptor.py,sha256=49yYtIUdUfv4FGKyINql5yEZ2JTOUkl8sJXF3J6fPF8,7197
|
|
13
|
+
loomweave_plugin_python-1.0.0.data/data/share/loomweave/plugins/python/plugin.toml,sha256=0H-_lBqflTkXsm_sqySmS6j0s7pGDQdDntkf1TcCRz0,2908
|
|
14
|
+
loomweave_plugin_python-1.0.0.dist-info/METADATA,sha256=UzoJmnhdF1IOPaIuIBRvwAVxlfkg37zoss3xUBCYem0,2751
|
|
15
|
+
loomweave_plugin_python-1.0.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
16
|
+
loomweave_plugin_python-1.0.0.dist-info/entry_points.txt,sha256=X1DQOYU5o1z2lBOJoh9JgQR5pg9fd_Yd8KozTHdfZqA,82
|
|
17
|
+
loomweave_plugin_python-1.0.0.dist-info/RECORD,,
|