A client package for running Dagger pipelines in Python.
Project description
Dagger Python SDK
A client package for running Dagger pipelines.
What is the Dagger Python SDK?
The Dagger Python SDK contains everything you need to develop CI/CD pipelines in Python, and run them on any OCI-compatible container runtime.
Requirements
- Python 3.10 or later
- Docker, or another OCI-compatible container runtime
A compatible version of the Dagger CLI is automatically downloaded and run by the SDK for you, although it’s possible to manage it manually.
Installation
From PyPI, using pip
:
pip install dagger-io
You can also install via Conda, from the conda-forge channel:
conda install dagger-io
Example
Create a main.py
file:
import sys
import anyio
import dagger
from dagger import dag
async def main(args: list[str]):
async with dagger.connection():
# build container with cowsay entrypoint
ctr = (
dag.container()
.from_("python:alpine")
.with_exec(["pip", "install", "cowsay"])
.with_entrypoint(["cowsay"])
)
# run cowsay with requested message
result = await ctr.with_exec(args).stdout()
print(result)
anyio.run(main, sys.argv[1:])
Run with:
$ python main.py "Simple is better than complex"
_____________________________
| Simple is better than complex |
=============================
\
\
^__^
(oo)\_______
(__)\ )\/\
||----w |
|| ||
Note It may take a while for it to finish, especially on first run with cold cache.
If you need to debug, you can stream the logs from the engine with the log_output
config:
config = dagger.Config(log_output=sys.stderr)
async with dagger.connection(config):
...
Learn more
Development
The SDK is managed with a Dagger module in ./dev
. To see which tasks are
available run:
dagger call -m dev
Common tasks
Run pytest in supported Python versions:
dagger call -m dev tests
Check for linting violations:
dagger call -m dev lint check
Re-format code following common styling conventions:
dagger call -m dev lint format -o .
Update pinned devevelopment dependencies:
dagger call -m dev lock -o .
Build and preview the reference documentation:
dagger call -m dev docs preview up
Add --help
to any command to check all the available options.
Engine changes
Testing and regenerating the client may fail if there’s changes in the engine code that haven’t been released yet. Prefix with hack/dev
to build a new engine before executing pipelines:
../../hack/dev dagger call -m dev test
To re-generate the client (codegen) after changes to the API schema:
./hack/dev ./hack/make sdk:python:generate
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
Hashes for dagger_io-0.11.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64d3aa3e17d1114f538a967ec6ebb82b1a938527670b9b5928d9bfd86ad8f8ca |
|
MD5 | a6728265a8d5deaab8c5cb35e52a4b16 |
|
BLAKE2b-256 | 68f1be78606e6796f9d509aed83a9bc2f078df065700f4d6c9c7545d48c4c4ba |