Skip to main content

Define sophisticated data pipelines with Python and run them on different distributed systems (such as Argo Workflows).

Project description

Dagger

Define sophisticated data pipelines and run them on different distributed systems (such as Argo Workflows).

Python Versions Supported Latest PyPI version Test Coverage (Codecov) Continuous Integration


Features

  • Define tasks and DAGs, and compose them together seamlessly.
  • Create dynamic for loops and map-reduce operations.
  • Run your DAGs locally or using a distributed workflow orchestrator (such as Argo Workflows).
  • Take advantage of advanced runtime features (e.g. Retry strategies, Kubernetes scheduling directives, etc.)
  • ... All with a simple Pythonic DSL that feels just like coding regular Python functions.

Other nice features of Dagger are: Zero dependencies, 100% test coverage, great documentation and plenty of examples to get you started.

Installation

Dagger is published to the Python Package Index (PyPI) under the name py-dagger. To install it, you can simply run:

pip install py-dagger

Looking for Tutorials and Examples?

Check our Documentation Portal!

Architecture Overview

Dagger is built around 3 components:

  • A set of core data structures that represent the intended behavior of a DAG.
  • A domain-specific language (DSL) that uses metaprogramming to capture how a DAG should behave, and represents it using the core data structures.
  • Multiple runtimes that inspect the core data structures to run the corresponding DAG, or prepare the DAG to run in a specific pipeline executor.

components

How to contribute

Do you have some feedback about the library? Have you implemented a Serializer or a Runtime that may be useful for the community? Do you think a tutorial or example could be improved?

Every contribution to Dagger is greatly appreciated.

Please read our Contribution Guidelines for more details.

Local development

We use Poetry to manage the dependencies of this library. In the codebase, you will find a Makefile with some useful commands to run and test your contributions. Namely:

  • make install - Install the project's dependencies
  • make test - Run tests and report test coverage. It will fail if coverage is too low.
  • make ci - Run all the quality checks we run for each commit/PR. This includes type hint checking, linting, formatting and documentation.
  • make build - Build the project.
  • make docker-build - Package the project in a Docker image
  • make docs-build - Build the documentation portal.
  • make docs-serve - Serve the documentation portal.
  • make k3d-set-up - Create a k3d cluster and image registry for the project.
  • make k3d-docker-push - Build and push the project's Docker image to the local k3d registry.
  • make k3d-install-argo - Install Argo on k3d, for local testing of Argo Workflows.
  • make k3d-tear-down - Destroy the k3d cluster and registry.

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

py-dagger-0.4.2.tar.gz (43.9 kB view details)

Uploaded Source

Built Distribution

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

py_dagger-0.4.2-py3-none-any.whl (67.6 kB view details)

Uploaded Python 3

File details

Details for the file py-dagger-0.4.2.tar.gz.

File metadata

  • Download URL: py-dagger-0.4.2.tar.gz
  • Upload date:
  • Size: 43.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.9.6 Linux/5.8.0-1042-azure

File hashes

Hashes for py-dagger-0.4.2.tar.gz
Algorithm Hash digest
SHA256 414b74a3917edfa7cfa044b96e1e272d6e80e33c94f23eb458bf1239e1ba0aef
MD5 64df90bf20696c345c5a1233c82c6250
BLAKE2b-256 437cad899ca7f8551184be3c476e58f482e856e86907b3c689e3d03828685e29

See more details on using hashes here.

File details

Details for the file py_dagger-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: py_dagger-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 67.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.9.6 Linux/5.8.0-1042-azure

File hashes

Hashes for py_dagger-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8f92e5f9efb9d2ba8c609206dc1ec36f5e0b89f043740f0674cee62a5df6eb3e
MD5 cd0e97f4fcef0976ad9a1ecbea146e38
BLAKE2b-256 9c739f3debb5f4df339b242c11d3be2aa78bee13f1a24bb29e7eaee231aa7579

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