A lightweight, type-safe library for building, managing, and visualizing dependency graphs.
Project description
graphable
graphable is a lightweight, type-safe Python library for building, managing, and visualizing dependency graphs. It provides a simple API for defining nodes and their relationships, performing topological sorts, and exporting graphs to various formats like Mermaid and ASCII text trees.
Features
- Type-Safe: Built with modern Python generics and type hints.
- Topological Sorting: Easily get nodes in dependency order.
- Filtering & Tagging: Create subgraphs based on custom predicates or tags.
- Visualizations:
- Mermaid: Generate flowchart definitions or export directly to SVG.
- Text Tree: Generate beautiful ASCII tree representations.
- Modern Tooling: Managed with
uvandjust.
Installation
uv add graphable
# or
pip install graphable
Quick Start
from graphable.graph import Graph
from graphable.graphable import Graphable
from graphable.views.texttree import create_topology_tree_txt
# 1. Define your nodes
a = Graphable("Database")
b = Graphable("API Service")
c = Graphable("Web Frontend")
# 2. Build the graph
g = Graph()
g.add_edge(a, b) # API Service depends on Database
g.add_edge(b, c) # Web Frontend depends on API Service
# 3. Get topological order
for node in g.topological_order():
print(node.reference)
# Output: Database, API Service, Web Frontend
# 4. Visualize as a text tree
print(create_topology_tree_txt(g))
# Output:
# Web Frontend
# └─ API Service
# └─ Database
Visualizing with Mermaid
from graphable.views.mermaid import create_topology_mermaid_mmd
mmd = create_topology_mermaid_mmd(g)
print(mmd)
# Output:
# flowchart TD
# Database --> API Service
# API Service --> Web Frontend
Documentation
Full documentation is available in the docs/ directory. You can build it locally:
just docs-view
Development
This project uses uv for dependency management and just as a command runner.
just install # Install dependencies
just check # Run linting, type checking, and tests
just coverage # Run tests with coverage report
License
This project is licensed under the MIT License - see the LICENSE file for details.
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 graphable-0.2.0.tar.gz.
File metadata
- Download URL: graphable-0.2.0.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c832afa3d1ea408a99c7985edcd517fc914d1754bd0554cf294bba081ef64974
|
|
| MD5 |
572b4b4c73466561ef70d0c54ecf2277
|
|
| BLAKE2b-256 |
5a8f2dbadc471b4278e4373b26c35cd8387dd488d57f95146513419c858293d7
|
Provenance
The following attestation bundles were made for graphable-0.2.0.tar.gz:
Publisher:
publish.yml on TheTrueSCU/graphable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
graphable-0.2.0.tar.gz -
Subject digest:
c832afa3d1ea408a99c7985edcd517fc914d1754bd0554cf294bba081ef64974 - Sigstore transparency entry: 922063513
- Sigstore integration time:
-
Permalink:
TheTrueSCU/graphable@15fe5ccfa0042e6362357fbf584ee4bc94f2c9b3 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/TheTrueSCU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15fe5ccfa0042e6362357fbf584ee4bc94f2c9b3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file graphable-0.2.0-py3-none-any.whl.
File metadata
- Download URL: graphable-0.2.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b400a4023052ab588c0dc0345971ff3ae340c1a1f5c7a99f8c99125c8e9cffb
|
|
| MD5 |
6768ff66d517e67a1f48eedfbb275eca
|
|
| BLAKE2b-256 |
b4d28b68a32d3201b9b7d01dd34199fcf65b3cd9300a837f82b1353d2dfc7747
|
Provenance
The following attestation bundles were made for graphable-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on TheTrueSCU/graphable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
graphable-0.2.0-py3-none-any.whl -
Subject digest:
5b400a4023052ab588c0dc0345971ff3ae340c1a1f5c7a99f8c99125c8e9cffb - Sigstore transparency entry: 922063549
- Sigstore integration time:
-
Permalink:
TheTrueSCU/graphable@15fe5ccfa0042e6362357fbf584ee4bc94f2c9b3 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/TheTrueSCU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15fe5ccfa0042e6362357fbf584ee4bc94f2c9b3 -
Trigger Event:
release
-
Statement type: