Skip to main content

Lightweight task dependency engine with topological execution

Project description

philiprehberger-task-graph

Tests PyPI version License

Lightweight task dependency engine with topological execution.

Installation

pip install philiprehberger-task-graph

Usage

from philiprehberger_task_graph import TaskGraph

graph = TaskGraph()

@graph.task()
def fetch_data():
    return download()

@graph.task(depends_on=["fetch_data"])
def process_data():
    return transform()

@graph.task(depends_on=["process_data"])
def save_results():
    return store()

# Run tasks in dependency order
results = graph.run()

# Or run with parallelism
results = graph.run_parallel(max_workers=4)

Programmatic API

graph = TaskGraph()
graph.add_task("fetch", fetch_fn)
graph.add_task("process", process_fn, depends_on=["fetch"])
graph.add_task("save", save_fn, depends_on=["process"])

# Preview execution order
order = graph.dry_run()
# ["fetch", "process", "save"]

Cycle Detection

from philiprehberger_task_graph import CycleError

# Raises CycleError if dependencies form a cycle
graph.run()

API

Function / Class Description
TaskGraph() Create a new task graph
@graph.task(depends_on=None) Decorator to register a task
graph.add_task(name, fn, depends_on=None) Add a task programmatically
graph.run() Execute tasks in topological order
graph.run_parallel(max_workers=4) Execute with thread parallelism
graph.dry_run() Return execution order without running

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

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

philiprehberger_task_graph-0.1.7.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

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

philiprehberger_task_graph-0.1.7-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_task_graph-0.1.7.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_task_graph-0.1.7.tar.gz
Algorithm Hash digest
SHA256 d6596fc2dd44cd6fe62c7b518054207bce86457c6d683026d723fdfe929b5d64
MD5 31997e263162b16febf823e68bacb182
BLAKE2b-256 7afa2e68d86ddb6cba300a14f3a29e1d96ada4626484fd69ec3a640cc055be72

See more details on using hashes here.

File details

Details for the file philiprehberger_task_graph-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_task_graph-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 f8260217c6d6efe92ced8398be39b3a4112339a1d13ba87ec43601044fdf70a7
MD5 9bb84beb0cbb1f5f691e70060c11ce53
BLAKE2b-256 b84ceecf12ca28b4e38bde6e297f8c575f614d0d0d03cda299188d4a8f8fc9a8

See more details on using hashes here.

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