pycode-kg 0.20.0__tar.gz → 0.21.0__tar.gz
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.
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/PKG-INFO +10 -11
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/README.md +4 -3
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/pyproject.toml +40 -18
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/__init__.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/analysis/__init__.py +6 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/analysis/bridge.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/analysis/centrality.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/analysis/framework_detector.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/app.py +94 -366
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_hooks.py +11 -27
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_viz.py +107 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/explain.py +2 -8
- pycode_kg-0.21.0/src/pycode_kg/graph_html.py +131 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/layout3d.py +6 -16
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/mcp_server.py +12 -19
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/pycodekg.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/pycodekg_thorough_analysis.py +3 -3
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/snapshots.py +1 -1
- pycode_kg-0.21.0/src/pycode_kg/theme.py +188 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/viz3d.py +93 -34
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/LICENSE +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/.DS_Store +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/__main__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/analysis/hybrid_rank.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/architecture.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/build_pycodekg_sqlite.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/__init__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_analyze.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_architecture.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_bridges.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_build.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_build_full.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_centrality.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_explain.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_framework_nodes.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_init.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_mcp.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_model.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_query.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/cmd_snapshot.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/main.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/cli/options.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/config.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/graph.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/index.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/kg.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/module/__init__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/module/base.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/module/extractor.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/module/types.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/pycodekg_query.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/pycodekg_snippet_packer.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/pycodekg_viz.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/pycodekg_viz3d.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/ranking/__init__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/ranking/cli_rank.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/ranking/coderank.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/sql/004_add_centrality_table.sql +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/store.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/utils.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/visitor.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.0}/src/pycode_kg/viz3d_timeline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycode-kg
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.21.0
|
|
4
4
|
Summary: A tool to build a searchable knowledge graph from Python repositories
|
|
5
5
|
License-Expression: Elastic-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -17,7 +17,6 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
18
|
Provides-Extra: all
|
|
19
19
|
Provides-Extra: dev
|
|
20
|
-
Provides-Extra: kgdeps
|
|
21
20
|
Provides-Extra: viz
|
|
22
21
|
Provides-Extra: viz3d
|
|
23
22
|
Requires-Dist: PyQt5 (>=5.15.0) ; extra == "all"
|
|
@@ -25,12 +24,11 @@ Requires-Dist: PyQt5 (>=5.15.0) ; extra == "viz3d"
|
|
|
25
24
|
Requires-Dist: click (>=8.1.0,<9)
|
|
26
25
|
Requires-Dist: detect-secrets (>=1.5.0) ; extra == "all"
|
|
27
26
|
Requires-Dist: detect-secrets (>=1.5.0) ; extra == "dev"
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist: doc-kg (>=0.18.1) ; extra == "kgdeps"
|
|
30
|
-
Requires-Dist: kgmodule-utils[semantic,sqlite-vec] (>=0.6.2)
|
|
27
|
+
Requires-Dist: kgmodule-utils[semantic,sqlite-vec,viz] (>=0.9.0)
|
|
31
28
|
Requires-Dist: markdown (>=3.6) ; extra == "all"
|
|
32
29
|
Requires-Dist: markdown (>=3.6) ; extra == "viz3d"
|
|
33
30
|
Requires-Dist: mcp (>=1.0.0)
|
|
31
|
+
Requires-Dist: networkx (>=3.0)
|
|
34
32
|
Requires-Dist: numpy (>=1.24.0)
|
|
35
33
|
Requires-Dist: pandas (>=2.0.0)
|
|
36
34
|
Requires-Dist: param (>=2.0.0) ; extra == "all"
|
|
@@ -56,12 +54,12 @@ Requires-Dist: ruff (>=0.4.0) ; extra == "all"
|
|
|
56
54
|
Requires-Dist: ruff (>=0.4.0) ; extra == "dev"
|
|
57
55
|
Requires-Dist: safetensors (>=0.5.0)
|
|
58
56
|
Requires-Dist: sentence-transformers (>=5.4.1)
|
|
59
|
-
Requires-Dist: streamlit (>=1.
|
|
60
|
-
Requires-Dist: streamlit (>=1.
|
|
57
|
+
Requires-Dist: streamlit (>=1.56.0) ; extra == "all"
|
|
58
|
+
Requires-Dist: streamlit (>=1.56.0) ; extra == "viz"
|
|
61
59
|
Requires-Dist: torch (>=2.5.1)
|
|
62
60
|
Requires-Dist: trame-vtk (>=2.0.0) ; extra == "all"
|
|
63
61
|
Requires-Dist: trame-vtk (>=2.0.0) ; extra == "viz3d"
|
|
64
|
-
Requires-Dist: transformers (>=
|
|
62
|
+
Requires-Dist: transformers (>=5.5.0,<6)
|
|
65
63
|
Requires-Dist: ty (>=0.0.41) ; extra == "all"
|
|
66
64
|
Requires-Dist: ty (>=0.0.41) ; extra == "dev"
|
|
67
65
|
Project-URL: Homepage, https://github.com/Flux-Frontiers/pycode_kg
|
|
@@ -75,7 +73,7 @@ Description-Content-Type: text/markdown
|
|
|
75
73
|
|
|
76
74
|
[](https://www.python.org/)
|
|
77
75
|
[](https://www.elastic.co/licensing/elastic-license)
|
|
78
|
-
[](https://github.com/Flux-Frontiers/pycode_kg/releases)
|
|
79
77
|
[](https://github.com/Flux-Frontiers/pycode_kg/actions/workflows/ci.yml)
|
|
80
78
|
[](https://python-poetry.org/)
|
|
81
79
|
[](https://zenodo.org/badge/latestdoi/1202379010)
|
|
@@ -215,6 +213,7 @@ The graph is built around four node kinds (module, class, function, method) and
|
|
|
215
213
|
| **Pull source-grounded context for an LLM** | `pycodekg pack "..." --format md` | [docs/CHEATSHEET.md](docs/CHEATSHEET.md) |
|
|
216
214
|
| **Run a hybrid semantic + structural query** | `pycodekg query "..."` | [docs/CHEATSHEET.md](docs/CHEATSHEET.md) |
|
|
217
215
|
| **Browse the graph interactively** | `pycodekg viz` (Streamlit) | [docs/INSTALLATION.md](docs/INSTALLATION.md) |
|
|
216
|
+
| **Share a graph as one file** | `pycodekg viz-export -o graph.html` | opens from `file://`, no server |
|
|
218
217
|
| **See call graphs in 3-D** *(active development — functional but rough)* | `pycodekg viz3d --layout funnel` | [docs/VIZ3D.md](docs/VIZ3D.md) |
|
|
219
218
|
| **Wire it into Claude / Copilot / Cline** | `pycodekg mcp` | [docs/MCP.md](docs/MCP.md) |
|
|
220
219
|
|
|
@@ -271,13 +270,13 @@ If you use PyCodeKG in your research or project, please cite it:
|
|
|
271
270
|
|
|
272
271
|
[](https://zenodo.org/badge/latestdoi/1202379010)
|
|
273
272
|
|
|
274
|
-
> Suchanek, E. G. (2026). *PyCodeKG: A Knowledge Graph for Python Codebases* (Version 0.
|
|
273
|
+
> Suchanek, E. G. (2026). *PyCodeKG: A Knowledge Graph for Python Codebases* (Version 0.21.0) [Software]. Flux-Frontiers. https://doi.org/10.5281/zenodo.19834777
|
|
275
274
|
|
|
276
275
|
```bibtex
|
|
277
276
|
@software{suchanek_pycode_kg,
|
|
278
277
|
author = {Suchanek, Eric G.},
|
|
279
278
|
title = {{PyCodeKG}: A Knowledge Graph for Python Codebases},
|
|
280
|
-
version = {0.
|
|
279
|
+
version = {0.21.0},
|
|
281
280
|
year = {2026},
|
|
282
281
|
publisher = {Flux-Frontiers},
|
|
283
282
|
url = {https://github.com/Flux-Frontiers/pycode_kg},
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
[](https://www.python.org/)
|
|
7
7
|
[](https://www.elastic.co/licensing/elastic-license)
|
|
8
|
-
[](https://github.com/Flux-Frontiers/pycode_kg/releases)
|
|
9
9
|
[](https://github.com/Flux-Frontiers/pycode_kg/actions/workflows/ci.yml)
|
|
10
10
|
[](https://python-poetry.org/)
|
|
11
11
|
[](https://zenodo.org/badge/latestdoi/1202379010)
|
|
@@ -145,6 +145,7 @@ The graph is built around four node kinds (module, class, function, method) and
|
|
|
145
145
|
| **Pull source-grounded context for an LLM** | `pycodekg pack "..." --format md` | [docs/CHEATSHEET.md](docs/CHEATSHEET.md) |
|
|
146
146
|
| **Run a hybrid semantic + structural query** | `pycodekg query "..."` | [docs/CHEATSHEET.md](docs/CHEATSHEET.md) |
|
|
147
147
|
| **Browse the graph interactively** | `pycodekg viz` (Streamlit) | [docs/INSTALLATION.md](docs/INSTALLATION.md) |
|
|
148
|
+
| **Share a graph as one file** | `pycodekg viz-export -o graph.html` | opens from `file://`, no server |
|
|
148
149
|
| **See call graphs in 3-D** *(active development — functional but rough)* | `pycodekg viz3d --layout funnel` | [docs/VIZ3D.md](docs/VIZ3D.md) |
|
|
149
150
|
| **Wire it into Claude / Copilot / Cline** | `pycodekg mcp` | [docs/MCP.md](docs/MCP.md) |
|
|
150
151
|
|
|
@@ -201,13 +202,13 @@ If you use PyCodeKG in your research or project, please cite it:
|
|
|
201
202
|
|
|
202
203
|
[](https://zenodo.org/badge/latestdoi/1202379010)
|
|
203
204
|
|
|
204
|
-
> Suchanek, E. G. (2026). *PyCodeKG: A Knowledge Graph for Python Codebases* (Version 0.
|
|
205
|
+
> Suchanek, E. G. (2026). *PyCodeKG: A Knowledge Graph for Python Codebases* (Version 0.21.0) [Software]. Flux-Frontiers. https://doi.org/10.5281/zenodo.19834777
|
|
205
206
|
|
|
206
207
|
```bibtex
|
|
207
208
|
@software{suchanek_pycode_kg,
|
|
208
209
|
author = {Suchanek, Eric G.},
|
|
209
210
|
title = {{PyCodeKG}: A Knowledge Graph for Python Codebases},
|
|
210
|
-
version = {0.
|
|
211
|
+
version = {0.21.0},
|
|
211
212
|
year = {2026},
|
|
212
213
|
publisher = {Flux-Frontiers},
|
|
213
214
|
url = {https://github.com/Flux-Frontiers/pycode_kg},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# pyproject.toml — PyCodeKG package configuration (PEP 621)
|
|
2
2
|
#
|
|
3
3
|
# Author: Eric G. Suchanek, PhD
|
|
4
|
-
# Last Revision: 2026-07-
|
|
4
|
+
# Last Revision: 2026-07-28
|
|
5
5
|
#
|
|
6
6
|
# Build system : Poetry 2.x with PEP 621 [project] table
|
|
7
7
|
#
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
# pip install -e ".[dev]" core + dev tools (pytest, ruff, ty, etc.)
|
|
11
11
|
# pip install -e ".[viz]" core + Streamlit/Plotly/PyVis visualizer
|
|
12
12
|
# pip install -e ".[viz3d]" core + PyVista 3D visualizer
|
|
13
|
-
# pip install -e ".[kgdeps]" core + KG integrations (doc-kg, agent-kg)
|
|
14
13
|
# pip install -e ".[all]" everything above
|
|
15
14
|
# pip install -e "." core runtime only
|
|
16
15
|
#
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
# poetry install --extras "dev" core + dev tools only
|
|
21
20
|
# poetry install --extras "viz" core + Streamlit/Plotly visualizer only
|
|
22
21
|
# poetry install --extras "viz3d" core + 3D visualizer only
|
|
23
|
-
# poetry install --extras "kgdeps" core + KG integrations only
|
|
24
22
|
# poetry install core runtime only
|
|
25
23
|
#
|
|
26
24
|
# First-time setup
|
|
@@ -46,12 +44,33 @@ build-backend = "poetry.core.masonry.api"
|
|
|
46
44
|
[tool.poetry]
|
|
47
45
|
packages = [{ include = "pycode_kg", from = "src" }]
|
|
48
46
|
|
|
47
|
+
# CPU-only torch on Linux: dev/CI here has no GPU, but the default PyPI linux
|
|
48
|
+
# wheel bundles the full CUDA runtime (~2.7G of nvidia-* packages, ~700M of
|
|
49
|
+
# triton) regardless. "explicit" priority means only packages naming this
|
|
50
|
+
# source use it — nothing else is redirected off PyPI. This affects local/CI
|
|
51
|
+
# installs only; it is not part of published wheel metadata, so `pip install
|
|
52
|
+
# pycode-kg` for a GPU user still resolves torch normally.
|
|
53
|
+
#
|
|
54
|
+
# Linux only: macOS/Windows torch builds are already CPU/MPS, and this index
|
|
55
|
+
# publishes the macOS ones without the "+cpu" local version label, so locking
|
|
56
|
+
# it globally leaves those platforms with no installable candidate.
|
|
57
|
+
[[tool.poetry.source]]
|
|
58
|
+
name = "pytorch-cpu"
|
|
59
|
+
url = "https://download.pytorch.org/whl/cpu"
|
|
60
|
+
priority = "explicit"
|
|
61
|
+
|
|
62
|
+
[tool.poetry.dependencies]
|
|
63
|
+
torch = [
|
|
64
|
+
{ markers = "sys_platform == 'linux'", source = "pytorch-cpu" },
|
|
65
|
+
{ markers = "sys_platform != 'linux'" },
|
|
66
|
+
]
|
|
67
|
+
|
|
49
68
|
# ---------------------------------------------------------------------------
|
|
50
69
|
# PEP 621 project metadata
|
|
51
70
|
# ---------------------------------------------------------------------------
|
|
52
71
|
[project]
|
|
53
72
|
name = "pycode-kg"
|
|
54
|
-
version = "0.
|
|
73
|
+
version = "0.21.0"
|
|
55
74
|
description = "A tool to build a searchable knowledge graph from Python repositories"
|
|
56
75
|
readme = "README.md"
|
|
57
76
|
license = "Elastic-2.0"
|
|
@@ -72,14 +91,15 @@ requires-python = ">=3.12,<3.14"
|
|
|
72
91
|
dependencies = [
|
|
73
92
|
"click>=8.1.0,<9",
|
|
74
93
|
"mcp>=1.0.0",
|
|
94
|
+
"networkx>=3.0",
|
|
75
95
|
"numpy>=1.24.0",
|
|
76
96
|
"pandas>=2.0.0",
|
|
77
97
|
"rich>=14.3.3,<15",
|
|
78
98
|
"safetensors>=0.5.0",
|
|
79
99
|
"sentence-transformers>=5.4.1",
|
|
80
100
|
"torch>=2.5.1",
|
|
81
|
-
"transformers>=
|
|
82
|
-
"kgmodule-utils[semantic,sqlite-vec]>=0.
|
|
101
|
+
"transformers>=5.5.0,<6",
|
|
102
|
+
"kgmodule-utils[semantic,sqlite-vec,viz]>=0.9.0",
|
|
83
103
|
]
|
|
84
104
|
|
|
85
105
|
[project.optional-dependencies]
|
|
@@ -91,13 +111,11 @@ dev = [
|
|
|
91
111
|
"pytest>=8.0.0",
|
|
92
112
|
"pytest-cov>=5.0.0",
|
|
93
113
|
"ruff>=0.4.0",
|
|
94
|
-
"doc-kg>=0.18.1",
|
|
95
|
-
# agent-kg not yet on PyPI — install manually: pip install git+https://github.com/Flux-Frontiers/agent_kg.git
|
|
96
114
|
]
|
|
97
115
|
viz = [
|
|
98
116
|
"plotly>=5.14.0",
|
|
99
117
|
"pyvis>=0.3.2",
|
|
100
|
-
"streamlit>=1.
|
|
118
|
+
"streamlit>=1.56.0",
|
|
101
119
|
]
|
|
102
120
|
viz3d = [
|
|
103
121
|
"markdown>=3.6",
|
|
@@ -108,10 +126,14 @@ viz3d = [
|
|
|
108
126
|
"trame-vtk>=2.0.0",
|
|
109
127
|
]
|
|
110
128
|
|
|
111
|
-
#
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
129
|
+
# Cross-KG sibling packages (doc-kg, pycode-kg, agent-kg, kg-rag) are NOT
|
|
130
|
+
# declared here. They are never imported by this package, and listing them
|
|
131
|
+
# forces poetry's universal resolution to reconcile the transformers pin of
|
|
132
|
+
# every *published* sibling against this project's own -- a deadlock, since
|
|
133
|
+
# doc-kg and pycode-kg each depend on the other. Install them by hand:
|
|
134
|
+
# pip install doc-kg pycode-kg # both on PyPI
|
|
135
|
+
# pip install 'kg-rag @ git+https://github.com/Flux-Frontiers/KGRAG.git'
|
|
136
|
+
# pip install 'agent-kg @ git+https://github.com/Flux-Frontiers/agent_kg.git'
|
|
115
137
|
all = [
|
|
116
138
|
"detect-secrets>=1.5.0",
|
|
117
139
|
"markdown>=3.6",
|
|
@@ -126,7 +148,7 @@ all = [
|
|
|
126
148
|
"pyvistaqt>=0.11.0",
|
|
127
149
|
"pyvis>=0.3.2",
|
|
128
150
|
"ruff>=0.4.0",
|
|
129
|
-
"streamlit>=1.
|
|
151
|
+
"streamlit>=1.56.0",
|
|
130
152
|
"trame-vtk>=2.0.0",
|
|
131
153
|
"ty>=0.0.41",
|
|
132
154
|
]
|
|
@@ -160,10 +182,10 @@ pycodekg-viz3d = "pycode_kg.cli.cmd_viz:viz3d"
|
|
|
160
182
|
[tool.ruff]
|
|
161
183
|
line-length = 100
|
|
162
184
|
target-version = "py312"
|
|
163
|
-
# Vendored Claude Code skills — not project code.
|
|
164
|
-
# exclude can't cover these (it runs with
|
|
165
|
-
# exclusion must live here.
|
|
166
|
-
extend-exclude = [".claude"]
|
|
185
|
+
# Vendored agent scratch dirs (Claude Code skills, Codex) — not project code.
|
|
186
|
+
# The pre-commit hook's exclude can't cover these (it runs with
|
|
187
|
+
# pass_filenames: false), so the exclusion must live here.
|
|
188
|
+
extend-exclude = [".claude", ".agents", ".codex"]
|
|
167
189
|
|
|
168
190
|
[tool.ruff.lint]
|
|
169
191
|
# B023, BLE001, PLC0415 replace the retired pylint hook's cell-var-from-loop,
|
|
@@ -32,7 +32,7 @@ KGModule SDK (build new domain KGs)::
|
|
|
32
32
|
from pycode_kg import KGModule, KGExtractor, PyCodeKGExtractor, NodeSpec, EdgeSpec
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
|
-
__version__ = "0.
|
|
35
|
+
__version__ = "0.21.0"
|
|
36
36
|
__author__ = "Eric G. Suchanek, PhD"
|
|
37
37
|
|
|
38
38
|
# Low-level primitives (locked v0 contract)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""Analysis primitives for PyCodeKG."""
|
|
2
2
|
|
|
3
|
+
from kg_utils.analysis.scores import MetricRef, ScoreSet, available_metrics, load_scores
|
|
4
|
+
|
|
3
5
|
from .centrality import (
|
|
4
6
|
CentralityConfig,
|
|
5
7
|
CentralityRecord,
|
|
@@ -10,6 +12,10 @@ from .centrality import (
|
|
|
10
12
|
__all__ = [
|
|
11
13
|
"CentralityConfig",
|
|
12
14
|
"CentralityRecord",
|
|
15
|
+
"MetricRef",
|
|
16
|
+
"ScoreSet",
|
|
13
17
|
"StructuralImportanceRanker",
|
|
14
18
|
"aggregate_module_scores",
|
|
19
|
+
"available_metrics",
|
|
20
|
+
"load_scores",
|
|
15
21
|
]
|
|
@@ -4,7 +4,7 @@ Measures module interaction complexity: how many unique modules each module call
|
|
|
4
4
|
For well-modularized codebases, identifies orchestrator and hub modules.
|
|
5
5
|
|
|
6
6
|
Author: Eric G. Suchanek, PhD
|
|
7
|
-
Last Revision: 2026-
|
|
7
|
+
Last Revision: 2026-04-27 23:29:23
|
|
8
8
|
License: Elastic 2.0
|
|
9
9
|
"""
|
|
10
10
|
|