Skip to main content

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 inputs
  • PortRef = 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

processing_graph-0.1.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

processing_graph-0.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

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

Hashes for processing_graph-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0f0cdfc884c591ae5e3bc94ee353a732c619b7fd364058d3101e84c3e30284b0
MD5 80888a120f263c9d000247f2a0b0fbf5
BLAKE2b-256 5ece73b4ec5a5a0e16c1f7f3ede58306bbc877f12067b3335dbe8f7fe7d3d440

See more details on using hashes here.

Provenance

The following attestation bundles were made for processing_graph-0.1.0.tar.gz:

Publisher: python-package.yml on JustinGirard/processing_graph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file processing_graph-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for processing_graph-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c5ac9c6ac5ea939b789e4cc7e4449b43a423e7e51c2c89d49a9e60214b9636b
MD5 486d113edfaef7813a8f93bd12c1e1b9
BLAKE2b-256 c60418355f74a520231c3da8df245b5247bdfdb3e8b612d39c379b6dd8096520

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page