Declarative and composable DAG framework for Python with persistent asset management
Project description
Stardag
Declarative and composable DAGs for Python.
Stardag provides a clean Python API for representing persistently stored assets, the code that produces them, and their dependencies as a declarative Directed Acyclic Graph (DAG). It is a spiritual—but highly modernized—descendant of Luigi, designed for iterative data and ML workflows.
Built on Pydantic, Stardag uses expressive type annotations to reduce boilerplate and make task I/O contracts explicit—enabling composable tasks and pipelines while maintaining a fully declarative specification of every produced asset.
Quick Example
import stardag as sd
@sd.task
def get_range(limit: int) -> list[int]:
return list(range(limit))
@sd.task
def get_sum(integers: sd.Depends[list[int]]) -> int:
return sum(integers)
# Declarative DAG specification - no computation yet
sum_task = get_sum(integers=get_range(limit=4))
# Materialize all tasks' targets
sd.build(sum_task)
# Load results
assert sum_task.load() == 6
assert sum_task.integers.load() == [0, 1, 2, 3]
Installation
pip install stardag
Or with uv:
uv add stardag
Optional extras:
pip install stardag[s3] # S3 storage support
pip install stardag[prefect] # Prefect integration
pip install stardag[modal] # Modal integration
Documentation
Read the docs for tutorials, guides, and API reference.
- Getting Started — Installation and first steps
- Core Concepts — Tasks, targets, dependencies
- How-To Guides — Integrations with Prefect, Modal
- Configuration — Profiles, CLI reference
Stardag Cloud
Stardag Cloud provides optional services for team collaboration and monitoring:
- Web UI — Dashboard for build monitoring and task inspection
- API Service — Task tracking and coordination across distributed builds
The SDK works fully standalone—the platform adds value for teams needing shared visibility and coordination.
Why Stardag?
- Composability — Task instances as first-class parameters enable loose coupling and reusability
- Declarative — Full DAG specification before execution; inspect, serialize, and reason about pipelines
- Deterministic — Parameter hashing gives each task a unique, reproducible ID and output path
- Pydantic-native — Tasks are Pydantic models with full validation and serialization support
- Framework-agnostic — Integrate with Prefect, Modal, or run standalone
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stardag-0.5.6.tar.gz.
File metadata
- Download URL: stardag-0.5.6.tar.gz
- Upload date:
- Size: 451.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c2678a7a2427f883227aad045747d5d6ae9f3296538db67c651e00f01e12d19
|
|
| MD5 |
ce61d9efcff1bd8811afb365240d6613
|
|
| BLAKE2b-256 |
1df09b6c22426799452daa0854bf1a146ab7f65556d293d6c2d80b8b38eed20b
|
Provenance
The following attestation bundles were made for stardag-0.5.6.tar.gz:
Publisher:
publish.yml on stardag-dev/stardag
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stardag-0.5.6.tar.gz -
Subject digest:
6c2678a7a2427f883227aad045747d5d6ae9f3296538db67c651e00f01e12d19 - Sigstore transparency entry: 1340437448
- Sigstore integration time:
-
Permalink:
stardag-dev/stardag@c32512f0619b90585f5bb14ebe3515e9593070a3 -
Branch / Tag:
refs/tags/v0.5.6 - Owner: https://github.com/stardag-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c32512f0619b90585f5bb14ebe3515e9593070a3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file stardag-0.5.6-py3-none-any.whl.
File metadata
- Download URL: stardag-0.5.6-py3-none-any.whl
- Upload date:
- Size: 165.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14dab974510b0749c284b2280077cc3bb2cfe835e6f7fc61ef4256d53db81824
|
|
| MD5 |
c1fcc8a0295fbca4001e6acd31f5fd3e
|
|
| BLAKE2b-256 |
e73c3f08abf829b8aa8e0e0170da092cf93e4957d6924959a181af3e7f5a18aa
|
Provenance
The following attestation bundles were made for stardag-0.5.6-py3-none-any.whl:
Publisher:
publish.yml on stardag-dev/stardag
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stardag-0.5.6-py3-none-any.whl -
Subject digest:
14dab974510b0749c284b2280077cc3bb2cfe835e6f7fc61ef4256d53db81824 - Sigstore transparency entry: 1340437473
- Sigstore integration time:
-
Permalink:
stardag-dev/stardag@c32512f0619b90585f5bb14ebe3515e9593070a3 -
Branch / Tag:
refs/tags/v0.5.6 - Owner: https://github.com/stardag-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c32512f0619b90585f5bb14ebe3515e9593070a3 -
Trigger Event:
push
-
Statement type: