pycode-kg 0.20.0__tar.gz → 0.21.1__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.1}/PKG-INFO +12 -13
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/README.md +5 -4
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/pyproject.toml +46 -19
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/__init__.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/analysis/__init__.py +6 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/analysis/bridge.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/analysis/centrality.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/analysis/framework_detector.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/app.py +94 -366
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_hooks.py +11 -27
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_viz.py +107 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/explain.py +2 -8
- pycode_kg-0.21.1/src/pycode_kg/graph_html.py +131 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/layout3d.py +6 -16
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/mcp_server.py +12 -19
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/pycodekg.py +1 -1
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/pycodekg_thorough_analysis.py +3 -3
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/snapshots.py +1 -1
- pycode_kg-0.21.1/src/pycode_kg/theme.py +188 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/viz3d.py +93 -34
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/LICENSE +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/.DS_Store +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/__main__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/analysis/hybrid_rank.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/architecture.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/build_pycodekg_sqlite.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/__init__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_analyze.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_architecture.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_bridges.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_build.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_build_full.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_centrality.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_explain.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_framework_nodes.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_init.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_mcp.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_model.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_query.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/cmd_snapshot.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/main.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/cli/options.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/config.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/graph.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/index.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/kg.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/module/__init__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/module/base.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/module/extractor.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/module/types.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/pycodekg_query.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/pycodekg_snippet_packer.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/pycodekg_viz.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/pycodekg_viz3d.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/ranking/__init__.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/ranking/cli_rank.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/ranking/coderank.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/sql/004_add_centrality_table.sql +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/store.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/utils.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/src/pycode_kg/visitor.py +0 -0
- {pycode_kg-0.20.0 → pycode_kg-0.21.1}/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.1
|
|
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
|
-
Requires-Dist: mcp (>=1.0.0)
|
|
30
|
+
Requires-Dist: mcp (>=1.0.0,<2)
|
|
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.1) [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.1},
|
|
281
280
|
year = {2026},
|
|
282
281
|
publisher = {Flux-Frontiers},
|
|
283
282
|
url = {https://github.com/Flux-Frontiers/pycode_kg},
|
|
@@ -301,5 +300,5 @@ If you use PyCodeKG in your research or project, please cite it:
|
|
|
301
300
|
|
|
302
301
|
---
|
|
303
302
|
|
|
304
|
-
*Built for Python developers and AI agents that work alongside them — egs · Last updated
|
|
303
|
+
*Built for Python developers and AI agents that work alongside them — egs · Last updated July 2026*
|
|
305
304
|
|
|
@@ -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.1) [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.1},
|
|
211
212
|
year = {2026},
|
|
212
213
|
publisher = {Flux-Frontiers},
|
|
213
214
|
url = {https://github.com/Flux-Frontiers/pycode_kg},
|
|
@@ -231,4 +232,4 @@ If you use PyCodeKG in your research or project, please cite it:
|
|
|
231
232
|
|
|
232
233
|
---
|
|
233
234
|
|
|
234
|
-
*Built for Python developers and AI agents that work alongside them — egs · Last updated
|
|
235
|
+
*Built for Python developers and AI agents that work alongside them — egs · Last updated July 2026*
|
|
@@ -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-29
|
|
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.1"
|
|
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"
|
|
@@ -71,15 +90,22 @@ classifiers = [
|
|
|
71
90
|
requires-python = ">=3.12,<3.14"
|
|
72
91
|
dependencies = [
|
|
73
92
|
"click>=8.1.0,<9",
|
|
74
|
-
|
|
93
|
+
# Upper-bounded: mcp 2.0 removed the bundled `mcp.server.fastmcp` module
|
|
94
|
+
# (FastMCP was split out into the standalone `fastmcp` package) and rebuilt
|
|
95
|
+
# mcp.server around new submodules. src/pycode_kg/mcp_server.py imports
|
|
96
|
+
# FastMCP from mcp, so an unbounded floor lets a clean install pull 2.x and
|
|
97
|
+
# break `pycodekg-mcp` at import time. Lift this only alongside a port to
|
|
98
|
+
# the standalone fastmcp package.
|
|
99
|
+
"mcp>=1.0.0,<2",
|
|
100
|
+
"networkx>=3.0",
|
|
75
101
|
"numpy>=1.24.0",
|
|
76
102
|
"pandas>=2.0.0",
|
|
77
103
|
"rich>=14.3.3,<15",
|
|
78
104
|
"safetensors>=0.5.0",
|
|
79
105
|
"sentence-transformers>=5.4.1",
|
|
80
106
|
"torch>=2.5.1",
|
|
81
|
-
"transformers>=
|
|
82
|
-
"kgmodule-utils[semantic,sqlite-vec]>=0.
|
|
107
|
+
"transformers>=5.5.0,<6",
|
|
108
|
+
"kgmodule-utils[semantic,sqlite-vec,viz]>=0.9.0",
|
|
83
109
|
]
|
|
84
110
|
|
|
85
111
|
[project.optional-dependencies]
|
|
@@ -91,13 +117,11 @@ dev = [
|
|
|
91
117
|
"pytest>=8.0.0",
|
|
92
118
|
"pytest-cov>=5.0.0",
|
|
93
119
|
"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
120
|
]
|
|
97
121
|
viz = [
|
|
98
122
|
"plotly>=5.14.0",
|
|
99
123
|
"pyvis>=0.3.2",
|
|
100
|
-
"streamlit>=1.
|
|
124
|
+
"streamlit>=1.56.0",
|
|
101
125
|
]
|
|
102
126
|
viz3d = [
|
|
103
127
|
"markdown>=3.6",
|
|
@@ -108,10 +132,13 @@ viz3d = [
|
|
|
108
132
|
"trame-vtk>=2.0.0",
|
|
109
133
|
]
|
|
110
134
|
|
|
111
|
-
#
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
135
|
+
# Cross-KG sibling packages (doc-kg, pycode-kg, agent-kg, kg-rag) are NOT
|
|
136
|
+
# declared here. They are never imported by this package, and listing them
|
|
137
|
+
# forces poetry's universal resolution to reconcile the transformers pin of
|
|
138
|
+
# every *published* sibling against this project's own -- a deadlock, since
|
|
139
|
+
# doc-kg and pycode-kg each depend on the other. Install them by hand:
|
|
140
|
+
# pip install doc-kg pycode-kg # both on PyPI
|
|
141
|
+
# pip install agent-kg kg-rag # both on PyPI as of 2026-07-29
|
|
115
142
|
all = [
|
|
116
143
|
"detect-secrets>=1.5.0",
|
|
117
144
|
"markdown>=3.6",
|
|
@@ -126,7 +153,7 @@ all = [
|
|
|
126
153
|
"pyvistaqt>=0.11.0",
|
|
127
154
|
"pyvis>=0.3.2",
|
|
128
155
|
"ruff>=0.4.0",
|
|
129
|
-
"streamlit>=1.
|
|
156
|
+
"streamlit>=1.56.0",
|
|
130
157
|
"trame-vtk>=2.0.0",
|
|
131
158
|
"ty>=0.0.41",
|
|
132
159
|
]
|
|
@@ -160,10 +187,10 @@ pycodekg-viz3d = "pycode_kg.cli.cmd_viz:viz3d"
|
|
|
160
187
|
[tool.ruff]
|
|
161
188
|
line-length = 100
|
|
162
189
|
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"]
|
|
190
|
+
# Vendored agent scratch dirs (Claude Code skills, Codex) — not project code.
|
|
191
|
+
# The pre-commit hook's exclude can't cover these (it runs with
|
|
192
|
+
# pass_filenames: false), so the exclusion must live here.
|
|
193
|
+
extend-exclude = [".claude", ".agents", ".codex"]
|
|
167
194
|
|
|
168
195
|
[tool.ruff.lint]
|
|
169
196
|
# 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.1"
|
|
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
|
|