Skip to main content

A lightweight DAG system for data analysis dev ops

Project description

dagdog

Lightweight DAGs for data analysis dev ops. By the time you finish a project with this lil puppy, you'll never want to use a Jupyter notebook again because

  • you will have wasted less time waiting for your notebook to rerun, by iterating rapidly on modular components instead of rerunning your entire analysis after every code update.
  • your code will already be closer to production-ready, as well as more understandable and reliable.

Note that this is NOT a replacement for tools like dagster or prefect. Those tools emphasize production and monitoring, while dagdog is strictly a dev-ops tool, allowing a user to rapidly sketch out an analysis pipeline without worrying about production considerations. This allows proofs-of-concept to grow faster (and fail faster).

Getting started

See the demo. In brief, here's how to work with dagdog:

  • Structure your data analysis pipeline as a collection of python modules, with each module defining exactly one task.
  • Within each module, implement the task using a method named __run__, with no arguments. (You might choose to call __run__ from under if __name__ == "main":, but dagdog does not care about that and will access __run__ directly.)
  • Create a project entrypoint script, imitating demo/project.py to define the execution order of your tasks.
  • Call your project entrypoint, dropping you into an interactive python session, where you can finally call any of the various execution and introspection methods on the dog DAG object.

If working directly on this repo, consider using the simplest-possible virtual environment.

Design goals

  • Easiest-possible usage of a DAG to coordinate execution of a collection of tasks during data analysis dev ops.
  • Flexible commands for execution of the DAG, including running a task in isolation, running only upstream tasks, or running only downstream tasks, etc.
  • All configurations managed natively in python -- users don't need to mess with yaml or json files.
  • Prioritize simplicity above feature-completeness.

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

dagdog-0.1.7.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

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

dagdog-0.1.7-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file dagdog-0.1.7.tar.gz.

File metadata

  • Download URL: dagdog-0.1.7.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dagdog-0.1.7.tar.gz
Algorithm Hash digest
SHA256 d186c95f72acad9b59d2c67241054b6f03d385287f8a24d673a75837aee55d85
MD5 2ae8a36f863e75dfae338e9d305712b3
BLAKE2b-256 32e6cd50add0da6fefaa508fcb332b32e6553535933bc31ad4d09c38f8d7de2c

See more details on using hashes here.

File details

Details for the file dagdog-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: dagdog-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dagdog-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e59476f1fb4c7a1fa0bc9f0a997104e72bca723f72f70da10f6c38cd78743929
MD5 b7712d01d22a18dccaee5208abbb8856
BLAKE2b-256 a51930ee02d9b13702cd4aafdbf353c0bba9a6fef2b255f4a1671af900378ede

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