--- id: schedula version: "1.6.15" license: EUPL 1.1+ license_treatment: copyleft maintenance: active --- # schedula — Produce a plan that dispatches calls based on a graph of functions, satisfying data dependencies. License: copyleft · Maintenance: active · Downloads: 3.3M/mo ## 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 above — 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 pip install schedula uv add schedula poetry add schedula ## Installing 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: unspecified - Install friction: low - Maintenance: active - Downloads: 3.3M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags dataflow programming, dag execution scheduler, flow-based programming python, automatic dependency resolution, functional pipeline dispatcher, asynchronous task scheduling, data dependency graph, dataflow-execution, dag-scheduler, functional-programming [View on SkillFed](https://skillfed.io/packages/schedula) · [View on PyPI](https://pypi.org/project/schedula/)