X-ray your Python project: import graph + stub maturity metrics + Graphviz viz + CLI
Project description
CodeClinic (codeclinic)
Diagnose your Python project: import dependencies → maturity metrics (stub ratio) → Graphviz visualization.
Install
pip install codeclinic
# or, from source (dev):
pip install -e .
Note: Rendering SVG/PNG requires the Graphviz system tool (
dot) in your PATH. macOS:brew install graphviz; Ubuntu:sudo apt-get install graphviz.
Quick start
codeclinic --path ./src --out results
This prints a summary + adjacency list and writes:
results/analysis.json(project analysis data)results/stub_report.json(detailed stub function report)results/dependency_graph.dot(DOT source)results/dependency_graph.svg(rendered visualization)
Marking stubs
from codeclinic import stub
@stub
def todo_api():
pass
@stub will (1) mark the function for static counting and (2) emit a warnings.warn when it’s actually called.
Config
You can keep settings in pyproject.toml under [tool.codeclinic] or in a codeclinic.toml file:
[tool.codeclinic]
paths = ["src"]
include = ["**/*.py"]
exclude = ["**/tests/**", "**/.venv/**"]
aggregate = "package" # "module" | "package"
format = "svg" # svg | png | pdf | dot
output = "build/cc_graph"
count_private = false
CLI flags override config.
Output Formats
All-in-One (Default)
codeclinic --path ./src --out results
Generates complete analysis with all output files in a single directory.
JSON Data Only
codeclinic --path ./src --out results --format json
Generates only JSON files (analysis + stub report) without visualization.
Specific Visualization Formats
codeclinic --path ./src --out results --format svg # SVG visualization
codeclinic --path ./src --out results --format png # PNG visualization
codeclinic --path ./src --out results --format pdf # PDF visualization
Stub Function Reports
The stub_report.json file contains detailed information about all @stub decorated functions:
{
"metadata": {
"total_stub_functions": 5,
"modules_with_stubs": 3,
"function_stubs": 3,
"method_stubs": 2
},
"stub_functions": [
{
"module_name": "myproject.utils",
"file_path": "/path/to/utils.py",
"function_name": "incomplete_feature",
"full_name": "incomplete_feature",
"docstring": "This feature is not yet implemented.",
"is_method": false,
"class_name": null,
"graph_depth": 2
}
]
}
Each stub function includes:
- File location and module information
- Function/method name with full qualified name (e.g.,
ClassName.method_name) - Docstring extracted from the function
- Graph depth - dependency level for implementation prioritization
- Method classification - whether it's a standalone function or class method
CLI
codeclinic --path PATH [--out OUTPUT_DIR] [--format svg|png|pdf|dot|json] [--aggregate module|package]
How it works
- Parses your code with
ast(no import-time side effects). - Builds an internal import graph (absolute & relative imports resolved).
- Counts public functions/methods and
@stub-decorated ones to compute a stub ratio per node. - Renders a Graphviz graph with node colors by ratio (green→yellow→red).
Roadmap
- Smell detectors (circulars, forbidden deps, god packages, layer rules).
- HTML/PDF report with dashboards.
- Plugin entry points:
codeclinic.detector.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file codeclinic-0.1.2.tar.gz.
File metadata
- Download URL: codeclinic-0.1.2.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14bdd166f65404e6e61bfce8a6a432c950fbe68dc32b7b4239f3babf4cef7f30
|
|
| MD5 |
a1774872111976818aebe4fcdb8f4d20
|
|
| BLAKE2b-256 |
9133354b91711ef3bab562946f79c523690339aba940e4383c0df284cd2c9e7b
|
File details
Details for the file codeclinic-0.1.2-py3-none-any.whl.
File metadata
- Download URL: codeclinic-0.1.2-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbec64c78b5af3caf2aa380442c52c91a8bf384428fbdb977d15c55f49233413
|
|
| MD5 |
5278e938b9ebb5e5e53e17b66028f32f
|
|
| BLAKE2b-256 |
c3e4f01f7fb38008ab7add13cc4bc15e14fdbc1fa7a15b39cddacc383c75b992
|