Metadata-Version: 2.2
Name: daggerml
Version: 0.1.1
Summary: DaggerML
Author-Email: DaggerML <engineering@daggerml.com>
License: MIT
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: PyPy
Project-URL: Homepage, https://daggerml.com
Project-URL: Documentation, https://daggerml.com
Project-URL: Issues, https://github.com/daggerml/python-lib/issues
Project-URL: Source, https://github.com/daggerml/python-lib
Project-URL: License, https://github.com/daggerml/python-lib/blob/master/LICENSE
Requires-Python: >=3.11
Requires-Dist: boto3
Provides-Extra: terminal
Requires-Dist: rich; extra == "terminal"
Provides-Extra: dashboard
Requires-Dist: fastapi<1,>=0.115; extra == "dashboard"
Requires-Dist: uvicorn<1,>=0.32; extra == "dashboard"
Description-Content-Type: text/markdown

# daggerml [![PyPI - Version](https://img.shields.io/pypi/v/daggerml.svg)](https://pypi.org/project/daggerml) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/daggerml.svg)](https://pypi.org/project/daggerml)

DaggerML makes research computations durable, inspectable, cacheable DAGs. It records the inputs, functions, results, execution boundaries, and provenance behind a research result.

## Installation

Install [`daggerml`](https://github.com/daggerml/python-lib) in whichever [virtual environment](https://docs.python.org/3/tutorial/venv.html) you prefer.

```bash
pip install daggerml
```

Install terminal rendering support:

```bash
pip install "daggerml[terminal]"
```

## Start a project

```bash
mkdir research-demo && cd research-demo
dml init
```

Then author a DAG in Python:

```python
import daggerml as dml

with dml.new("first-result") as dag:
    result = dag.put(42, name="answer")
    dag.commit(result)
```

## Docs

- [Why DaggerML?](docs/why-daggerml.md)
- [Get started](docs/getting-started.md)
- [Use DaggerML](docs/use/README.md)
- [Extend DaggerML](docs/extend/README.md)
- [Develop DaggerML](docs/develop/README.md)

## Contributing

If you want to contribute, please check out the [contributing guide](CONTRIBUTING.md).

## License

`daggerml` is distributed under the terms of the [MIT](LICENSE) license.
