The Decelium Graph Processor
Project description
🧠 Why This Graph Processing Library?
This library provides a type-safe, schema-enforced, and extensible graph processing engine built around declarative node definitions and runtime-validated data structures.
Unlike traditional graph systems that prioritize general-purpose DAG execution (e.g. Dask, Graphtik, Airflow), this system is optimized for modular, strongly typed dataflow composition with built-in validation, introspection, and configuration hygiene.
✅ Key Benefits
1. Schema-Enforced Nodes (via BaseData)
Each node, port, dependency, and graph is defined using BaseData — a typed dictionary-like class that:
- Enforces required and optional fields
- Validates type correctness (recursively)
- Applies transformation, coercion, and field defaults
- Allows structured, safe nesting (e.g.,
PortDependency → PortGroup → PortRef)
This enables full introspection, serialization, and editor tooling — without hand-written validation.
2. Readable, Declarative Graph Definitions
Graph definitions are concise and explicit:
ProcessingNode({
"name": "MovingAverage",
"type": SomeProcessor,
"settings": {"window": 5},
"dependencies": PortDependency({
"input": PortGroup({
"point": PortRef({"ref": ["__ref", "PointBuffer", "data"]})
})
})
})
This creates a clear mental model:
ProcessingNode= processor with inputsPortRef= symbolic dependency resolution- Graphs can be composed from plain dicts, JSON, or programmatically
3. No Global Side Effects or Magic
- No decorators
- No monkey-patching
- No global state
- No string-based function binding
This makes the system easy to trace, debug, and control — even at runtime or in test environments.
4. Runtime Safety Without Compile-Time Rigidness
Graph topology is validated at runtime using explicit dependency resolution (e.g. topological sort).
- Detects missing inputs
- Detects cycles
- Validates node structure
This preserves Python’s flexibility while giving you structural guarantees you'd expect from static languages.
5. Modular, Replaceable Execution Engine
Execution happens through a simple, readable ProcessingNetwork:
- Processes node-by-node in topological order
- Resolves input dependencies dynamically
- Returns a merged output with all node results
You can replace it with:
- An async version
- A multiprocessing scheduler
- An external engine (e.g. Graphtik) if flat execution is preferred
🆚 How It Compares
| Feature | This Library | Graphtik / Dask | Airflow / Luigi |
|---|---|---|---|
| Declarative Input Schema | ✅ Full (BaseData) |
❌ (free-form kwargs) | ❌ (task-level only) |
| Recursive Field Validation | ✅ | ❌ | ❌ |
| Dynamic Input Resolution | ✅ PortRef / PortGroup | ❌ Flat only | ❌ Static |
| Built-in Topological Sort | ✅ | ✅ | ✅ |
| Extensible Node Format | ✅ | ✅ | ❌ |
| Designed for Runtime Graphs | ✅ | ❌ Mostly static | ❌ Batch Only |
💡 Ideal Use Cases
- Game logic graphs (AI, ability chains, simulations)
- Modular feature extraction / preprocessing
- Dynamic pipelines with user-defined graphs
- Low-overhead knowledge graphs or agent graphs
- Typed orchestration of modular Python components
🧩 TL;DR
This library is a minimalist, type-safe, and declarative graph execution engine — made for senior engineers who need:
- Runtime graph safety
- Structured validation
- Pluggable execution models
- Editor- and test-friendly data layouts
It’s not trying to replace general DAG runners — it’s for when you want typed, programmatic, embeddable graph logic inside a real system.
License:
- Today, free for personal use only
- Can not be included as part of any paid service
- Free licence can be revoked
- Experimental
- All rights reserved
- Use at own risk
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 processing_graph-0.1.0.tar.gz.
File metadata
- Download URL: processing_graph-0.1.0.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f0cdfc884c591ae5e3bc94ee353a732c619b7fd364058d3101e84c3e30284b0
|
|
| MD5 |
80888a120f263c9d000247f2a0b0fbf5
|
|
| BLAKE2b-256 |
5ece73b4ec5a5a0e16c1f7f3ede58306bbc877f12067b3335dbe8f7fe7d3d440
|
Provenance
The following attestation bundles were made for processing_graph-0.1.0.tar.gz:
Publisher:
python-package.yml on JustinGirard/processing_graph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
processing_graph-0.1.0.tar.gz -
Subject digest:
0f0cdfc884c591ae5e3bc94ee353a732c619b7fd364058d3101e84c3e30284b0 - Sigstore transparency entry: 1155516551
- Sigstore integration time:
-
Permalink:
JustinGirard/processing_graph@5d5f1e40cd053f1a7d7f7c249aaa9ee061b7b763 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/JustinGirard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@5d5f1e40cd053f1a7d7f7c249aaa9ee061b7b763 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file processing_graph-0.1.0-py3-none-any.whl.
File metadata
- Download URL: processing_graph-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.3 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 |
4c5ac9c6ac5ea939b789e4cc7e4449b43a423e7e51c2c89d49a9e60214b9636b
|
|
| MD5 |
486d113edfaef7813a8f93bd12c1e1b9
|
|
| BLAKE2b-256 |
c60418355f74a520231c3da8df245b5247bdfdb3e8b612d39c379b6dd8096520
|
Provenance
The following attestation bundles were made for processing_graph-0.1.0-py3-none-any.whl:
Publisher:
python-package.yml on JustinGirard/processing_graph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
processing_graph-0.1.0-py3-none-any.whl -
Subject digest:
4c5ac9c6ac5ea939b789e4cc7e4449b43a423e7e51c2c89d49a9e60214b9636b - Sigstore transparency entry: 1155516555
- Sigstore integration time:
-
Permalink:
JustinGirard/processing_graph@5d5f1e40cd053f1a7d7f7c249aaa9ee061b7b763 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/JustinGirard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@5d5f1e40cd053f1a7d7f7c249aaa9ee061b7b763 -
Trigger Event:
workflow_dispatch
-
Statement type: