Skip to main content

Hera makes Python code easy to orchestrate on Argo Workflows through native Python integrations. It lets you construct and submit your Workflows entirely in Python.

Project description

Hera

Hera mascot Hera is the go-to Python SDK to make Argo Workflows simple and intuitive. Easily turn Python functions into containerised templates that run on Kubernetes, with full access to its capabilities.

See the Quick Start guide to start using Hera to orchestrate your Argo Workflows!

The Argo was constructed by the shipwright Argus,
and its crew were specially protected by the goddess Hera.

PyPI stats

PyPI Versions

Downloads Downloads/month Downloads/week

Repo information

License: Apache-2.0 CICD Docs codecov

Hera at a glance

from hera.workflows import DAG, Workflow, script


# Turn a function into a reusable "Script template"
# using the script decorator
@script()
def echo(message: str):
    print(message)


# Orchestration logic lives *outside* of business logic
with Workflow(
    generate_name="dag-diamond-",
    entrypoint="diamond",
) as w:
    with DAG(name="diamond"):
        A = echo(name="A", arguments={"message": "A"})
        B = echo(name="B", arguments={"message": "B"})
        C = echo(name="C", arguments={"message": "C"})
        D = echo(name="D", arguments={"message": "D"})
        A >> [B, C] >> D  # Define execution order

# Create the workflow directly on your Argo Workflows cluster!
w.create()

Check out the Walkthrough to learn how to construct and submit Argo Workflows with Hera!

Requirements

Hera requires an Argo Workflows server to be deployed to a Kubernetes cluster. To learn how to deploy Argo to your own Kubernetes cluster you can follow the Argo Workflows guide!

Authenticating in Hera

Hera assumes that the Argo server sits behind an authentication layer, so workflow submission requests are authenticated using a Bearer token on the request. Another option for workflow submission without the authentication layer is using port forwarding to your Argo server deployment and submitting workflows to localhost:2746.

There are a few ways to authenticate in Hera - read more in the authentication walkthrough - for now, with the argo cli tool installed, and the server port-forwarded to localhost:2746, this example will get you up and running:

from hera.workflows import Workflow, Container
from hera.shared import global_config
from hera.auth import ArgoCLITokenGenerator

global_config.host = "http://localhost:2746"
global_config.token = ArgoCLITokenGenerator

with Workflow(generate_name="local-test-", entrypoint="c") as w:
    Container(name="c", image="docker/whalesay", command=["cowsay", "hello"])

w.create()

Installation

Source Command
PyPI pip install hera
GitHub repo python -m pip install git+https://github.com/argoproj-labs/hera --ignore-installed

Optional dependencies

yaml

  • Install via hera[yaml]
  • PyYAML is required for the yaml output format, which is accessible via hera.workflows.Workflow.to_yaml(*args, **kwargs). This enables GitOps practices and easier debugging.

cli

  • Install via hera[cli]. The [cli] option installs the extra dependencies including Cappa which is required for the CLI
  • The CLI aims to enable GitOps practices, easier onboarding to Hera, and a more seamless experience with Argo Workflows.
  • It currently supports converting workflows between YAML and Python source codes. See hera generate yaml --help, and hera generate python --help for more information.
  • The CLI is an experimental feature and subject to change!

experimental

  • Install via hera[experimental]. The [experimental] option adds dependencies required for experimental features that have not yet graduated into stable features.

async-client

  • Install via hera[async-client]. The [async-client] option installs httpx to allow the use of the async_* Workflow functions through the AsyncWorkflowsService.

Presentations

More presentations

Blogs

More blogs

Contributing

Use one of the following to open the repo in a cloud dev box:

Open in GitHub Codespaces Open in Gitpod

Read more in the contributing guide!

Hera Emeritus Maintainers

These emeritus maintainers dedicated a part of their career to Hera and reviewed code, triaged bugs and pushed the project forward over a substantial period of time. Their contribution is greatly appreciated:

License

Hera is licensed under Apache 2.0. See License for details.

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

hera-5.27.0.tar.gz (309.7 kB view details)

Uploaded Source

Built Distribution

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

hera-5.27.0-py3-none-any.whl (357.0 kB view details)

Uploaded Python 3

File details

Details for the file hera-5.27.0.tar.gz.

File metadata

  • Download URL: hera-5.27.0.tar.gz
  • Upload date:
  • Size: 309.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for hera-5.27.0.tar.gz
Algorithm Hash digest
SHA256 4240bfbc572bfdde61a7b3129b32c4aaf0753b0bc3066645ff5e01aaf66bf700
MD5 fa9bda64019ba8115c89c7dc60fdd8e4
BLAKE2b-256 50faee4bfb8f1707f61cce9d475dea75392f199f612fa7a8952b85b0a6c2362f

See more details on using hashes here.

File details

Details for the file hera-5.27.0-py3-none-any.whl.

File metadata

  • Download URL: hera-5.27.0-py3-none-any.whl
  • Upload date:
  • Size: 357.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for hera-5.27.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3620c1092b2184efe280ec3ac69db02b5ec03ec0c20b2135c347b0d2cf3d0b4
MD5 f0aeafef1a300e1159cb9d9dc09c5c49
BLAKE2b-256 093ef5645e963a990e603374192fc910584a41d81c2cc1a9599586f9566205dd

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