schedula
Produce a plan that dispatches calls based on a graph of functions, satisfying data dependencies.
What it is and what it does
Schedula is a dynamic flow-based programming environment that automatically manages program control flow by representing computations as a directed acyclic graph (DAG) where nodes are functions and edges represent data dependencies. Given any set of inputs, it determines the optimal execution path using a modified Dijkstra algorithm and executes only the necessary functions to compute requested outputs.
The library originated from a need to automatically populate missing database values using interdependent physical formulas, and was developed to support the CO2MPAS vehicle simulator. It handles multiple input/output combinations without requiring separate control flow graphs for each case. Schedula supports asynchronous and parallel execution, interactive visualization of workflows, and can convert models into web API services through optional extras.
Use it for:
- Build scientific simulation models with interdependent formulas where input combinations vary and execution paths must be determined dynamically.
- Create data processing pipelines that automatically resolve missing intermediate values by computing them from available inputs.
- Develop web services that expose computational models as APIs, automatically handling different input/output combinations.
- Debug and optimize complex workflows by visualizing the actual execution DAG and identifying which functions were called.
- Implement parallel or asynchronous computation models where function dependencies are automatically managed.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Schedula is a flow-based programming library that automatically manages control flow by building a directed acyclic graph (DAG) of functions and their data dependencies, then selects and executes the optimal path to compute requested outputs from given inputs.
Yes, with conditions. Schedula is production-stable, actively maintained, and has no known vulnerabilities. Install it if you need automatic dataflow scheduling and can accept EUPL 1.1+ copyleft obligations. The zero runtime dependencies and pure-Python distribution make installation friction minimal. Avoid if your project requires proprietary licensing.
Install
schedula on PyPI
pip
pip install schedulauv
uv add schedulapoetry
poetry add schedulaInstalling schedula
Before you install
Installation is straightforward with no runtime dependencies, distributed as a pure Python wheel. The package is actively maintained with recent commits and has been in production use since 2017.
License in practice
Licensed under EUPL 1.1+ (copyleft). Users must comply with copyleft obligations when distributing derivative works; proprietary projects should review compatibility before adoption.
Quickstart
pip install schedula
import schedula as sh
dsp = sh.Dispatcher(name='example')
@sh.add_function(dsp, outputs=['result'])
def add(a, b):
return a + b
output = dsp(inputs={'a': 1, 'b': 2})
Verify before relying
- Whether the modified Dijkstra algorithm for DAG path selection is documented with complexity guarantees.
- Specific performance characteristics when handling models with many nodes.
- Whether optional extras (plot, web, parallel) are production-ready or experimental.
Package facts
| License | EUPL 1.1+ (copyleft) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 163 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,313,636/month — #2,664 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: schedula-1.6.15-py2.py3-none-any.whl
Keywords: flow-based programming, dataflow, parallel, asynchronous, async, scheduling, dispatch, functional programming, dataflow programming
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
apache-airflow-coreApache Airflow's core runtime that schedules,…
permissive · top 5,000 on PyPI
simpleflowSimpleflow provides a Python library for…
permissive · top 5,000 on PyPI
adagioAdagio provides a directed acyclic graph (DAG)…
permissive · top 5,000 on PyPI
daskDask is a parallel computing library that…
permissive · top 1,000 on PyPI
APSchedulerAPScheduler lets you schedule Python code to…
permissive · top 1,000 on PyPI
apache-hamiltonApache Hamilton is a Python library for…
permissive · top 15,000 on PyPI
jobflowJobflow is a Python library for defining and…
permissive · top 15,000 on PyPI
distributedDistributed provides a scheduler and runtime…
permissive · top 5,000 on PyPI
google-cloud-dataflow-clientProvides a Python client library to manage…
permissive · top 1,000 on PyPI