Skip to main content

Lightweight task dependency engine with topological execution

Project description

philiprehberger-task-graph

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

  • 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

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.0.tar.gz (4.0 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.0-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_graph-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9bb13e8e05efb2013cd97824cef27a144595f517bf8c58b98996e6ff4d73ba4b
MD5 278393fedbac5293e04d4b9840b9d371
BLAKE2b-256 73261db265db0cf9b9981882af298e398307f94d7c800c0a005c07a7fda5118d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_graph-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 03840181e2ff7876e7f2b8c6635a31833c0fa67299852707496b64bffce526d7
MD5 65318fca64adb16b2ce08252ff190d15
BLAKE2b-256 4b4c66a6f098a050ac1450db5a4af52eb20b66c694722a08d8788fe7fc750440

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