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 makes Python code easy to orchestrate on Argo Workflows through native Python integrations. It lets you construct and submit your Workflows entirely in Python.

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

Explore the code

Open in GitHub Codespaces

Open in Gitpod

Hera at a glance

Steps diamond

from hera.workflows import Steps, Workflow, script


@script()
def echo(message: str):
    print(message)


with Workflow(
    generate_name="single-script-",
    entrypoint="steps",
) as w:
    with Steps(name="steps") as s:
        echo(name="A", arguments={"message": "I'm a step"})
        with s.parallel():
            echo(name="B", arguments={"message": "We're steps"})
            echo(name="C", arguments={"message": "in parallel!"})
        echo(name="D", arguments={"message": "I'm another step!"})

w.create()

DAG diamond

from hera.workflows import DAG, Workflow, script


@script()
def echo(message: str):
    print(message)


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

w.create()

See the examples for a collection of Argo workflow construction and submission via Hera!

Requirements

Hera requires an Argo server to be deployed to a Kubernetes cluster. Currently, Hera assumes that the Argo server sits behind an authentication layer that can authenticate workflow submission requests by using the Bearer token on the request. To learn how to deploy Argo to your own Kubernetes cluster you can follow the Argo Workflows guide!

Another option for workflow submission without the authentication layer is using port forwarding to your Argo server deployment and submitting workflows to localhost:2746 (2746 is the default, but you are free to change it). Please refer to the documentation of Argo Workflows to see the command for port forward!

Note Since the deprecation of tokens being automatically created for ServiceAccounts and Argo using Bearer tokens in place, it is necessary to use --auth=server and/or --auth=client when setting up Argo Workflows on Kubernetes v1.24+ in order for hera to communicate to the Argo Server.

Authenticating in Hera

There are a few ways to authenticate in Hera - read more in the authentication walk through - for now, with the argo cli tool installed, 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

Note Hera went through a name change - from hera-workflows to hera. This is reflected in the published Python package. If you'd like to install versions prior to 5.0.0, you should do pip install hera-workflows<5. Hera currently publishes releases to both hera and hera-workflows for backwards compatibility purposes.

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 dependency Cappa required for the CLI
  • The CLI aims to enable GitOps practices, easier debugging, and a more seamless experience with Argo Workflows.
  • The CLI is an experimental feature and subject to change! At the moment it only supports generating YAML files from workflows via hera generate yaml. See hera generate yaml --help for more information.

experimental

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

Presentations

Blogs

Contributing

See the contributing guide!

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_workflows-5.17.0.tar.gz (287.8 kB view details)

Uploaded Source

Built Distribution

hera_workflows-5.17.0-py3-none-any.whl (332.3 kB view details)

Uploaded Python 3

File details

Details for the file hera_workflows-5.17.0.tar.gz.

File metadata

  • Download URL: hera_workflows-5.17.0.tar.gz
  • Upload date:
  • Size: 287.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for hera_workflows-5.17.0.tar.gz
Algorithm Hash digest
SHA256 912dea4eb280148e26b12b2303cb65be7226d3fcae4ce6db03638e90ef736a56
MD5 5330de18cc829e99519a9e64f1ed6b84
BLAKE2b-256 d9de9a2ece63dbbd6e7c8018380a44129b1ee0d3a1296333f5e8e53ab3460542

See more details on using hashes here.

File details

Details for the file hera_workflows-5.17.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hera_workflows-5.17.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f86be92b6a2e14d8d9b7136531ca2ab6cd79878687c651c5cd1aedecb9178d3
MD5 453bd4cd57099219aec249d1a11232db
BLAKE2b-256 0eda3a4ad7695031b5f619c75f95d357608d21747c0dea28b7894ffe77e72e3c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page