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.8.tar.gz (5.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.8-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_graph-0.1.8.tar.gz
Algorithm Hash digest
SHA256 d098664049f44e9a824d37e6f7ae6de6c8b87101d20ef6866edaab1767ed4ce0
MD5 fb537ab0b56061bf7fc3e36a705813c6
BLAKE2b-256 6144bf432f8dfd01712169182726ccdd66b8d3f38801bbd8dcc988d15153b912

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_graph-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 202b9e372f75f6345ff17d255e37981ef1fb9c9449adc10c1ae38dcc5b329d7d
MD5 549519c04b84e296039926cc00130174
BLAKE2b-256 a96ef602ab41c32014882164b40e0dda9f38e890b3361d6e2176710f4e2a25f9

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