NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4171 most downloaded on PyPI
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.
Last release 1 months ago
18 Aug 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
68 releases · first in 2023
One column per quarter.
fix(cli): sort generated Python kwargs for readability ( #1593 ) @immanuwell
Update models for Argo Workflows 4.0 compatibility (#1586) @tico24
Remove deprecated and unused code (#1565) @elliotgunton
Remove Python 3.9 support (#1525) @elliotgunton
artifact_gc in Workflow (#1533) @elliotguntonThis release is the same as 5.26.0, which was not published to PyPI due to a bug in third-party libraries used to build and publish the package. 5.26.
This release is the same as 5.26.0, which was not published to PyPI due to a bug in third-party libraries used to build and publish the package. 5.26.0 release notes copied below.
Update models for 3.7 compatibility (#1519) @elliotgunton
Optionally import httpx in async service (#1508) @jeongukjae
Support data, http, resource, and suspend templates in decorator syntax (#1501) @jeongukjae
Annotated on pydantic io containing non-Hera metadata (#1496) @elliotguntonFix doubled volume class names; add deprecated aliases (#1481) @ketanjani21
set_next_defaults function for Task and allow multiple on values (#1457) @elliotguntonget_outputs_as_arguments function for tasks/steps (#1451) @elliotguntonRetryStrategy to TemplateMixin and Workflow (#1455) @elliotguntonwith_items for step/dag decorators (#1490) @elliotguntonresources examples and add large_artifacts_in_init_container example (#1459) @elliotguntonPreserve folder structure when using CLI code conversion; add --flatten flag (#1443) @elliotgunton
--flatten flag (#1443) @elliotgunton__main__ (#1445) @elliotguntonname to None by default (#1441) @elliotguntonBump pydantic minimum version to v1.10.15 (#1434) @jaseemabid
Remove unsupported auto-hyperlinking from docstrings (#1425) @elliotgunton
Allow artifact optional names (#1405) @elliotgunton
readiness_probe on daemon example (#1392) @elliotguntonpoetry update (#1380) @elliotguntonFix from_model method in Parameter class (#1336) @elliotgunton
from_model method in Parameter class (#1336) @elliotguntonAdd human readable yaml ordering (#1326) @elliotgunton @jaseemabid
with_items handling for scripts (#1332) @elliotguntonFix compatibility with Argo Workflows 3.6 (#1293) @elliotgunton
get_artifact for template invocator use (#1284) @elliotguntonRemove error override for default usage in Parameter annotations (#1278) @elliotgunton
default usage in Parameter annotations (#1278) @elliotguntonFix TypeError in script.py for functions returning non-types (#1224) @alicederyn
Remove RunnerInput/RunnerOutput types aliases to Input/Output (#1207) @elliotgunton
RunnerInput/RunnerOutput types aliases to Input/Output (#1207) @elliotguntondefault kwarg usage for input annotations (#1197) @elliotguntonSession in WorkflowsService to reuse connections (#1183) @AchilleAshAnnotated metadata (#1168) @jeongukjaeInput and Output classes (#1193) @alicederyntuple output from script functions (#1186) @jeongukjaeUse sys.version_info to guard imports (#1177) @alicederyn
Disable template name conflict detection (#1153) @alicederyn
Add docs signposts to install experimental extra for decorators (#1137) @elliotgunton
experimental extra for decorators (#1137) @elliotguntonDeprecation notice for RunnerIO classes (#1060) @elliotgunton
Fix compatibility with pydantic==1.10.15 (Check pydantic.VERSION in place of find_spec) (#1049) @elliotgunton
pydantic==1.10.15 (Check pydantic.VERSION in place of find_spec) (#1049) @elliotguntonUpgrade Argo Workflow to 3.5.5 (#994) @Sharathmk99
Fix script-decorated-function typing (#1018) @elliotgunton
Add hera tour to walkthrough (#1002) @elliotgunton
Fix RunnerIO bugs, refactor script user guide into multiple docs (#974) @elliotgunton
--to default generation logic and refactor tests (#989) @elliotguntonfix(UserContainer): Fix a small bug in ImagePullPolicy mapper and add tests for error cases (#963) @KengoA
Add experimental Pydantic IO models for use with Hera Runner (#920 / #938) @elliotgunton
Fix volume mounts on user container (#931) @flaviuvadan
feat: Add --include and --exclude to the hera generate yaml command. (#904) @DanCardin
Add hera CLI and implement generate yaml. (#886) @DanCardin
generate yaml. (#886) @DanCardinAdd support for pydantic v2 (#795) @JacobHayes, @matty-rose, @samj1912
Add support for pydantic v2 (#795) @JacobHayes, @matty-rose, @samj1912
Revert "Add Pydantic Extra.forbid to shared base model config " (#880) @flaviuvadan
Extra.forbid to shared base model config " (#880) @flaviuvadanImplement get_parameter API on IO mixin and add tests (#876) @flaviuvadan
Extra.forbid to shared base model config (#820) @flaviuvadanimage_pull_policy field on Container from ImagePullPolicy enum to str (#877) @flaviuvadancowsay not whalesay as per official example (#822) @flaviuvadandependabot.yml (#826) @flaviuvadanAdd optional kwarg to Artifact and add upstream example (#815) @elliotgunton
Add ability to fetch workflow / cron workflow link (#806) @flaviuvadan
Make path optional for input Artifact annotations; deprecate as_name (#792) @elliotgunton
Fix runner outputs for empty strings (#789) @elliotgunton
Fix empty args scripts for script runner (Fix null string in args_path; add tests) (#785) @elliotgunton
null string in args_path; add tests) (#785) @elliotguntonFix leading slash in runner (#776) @dejamiko
Script annotations output (#741) @dejamiko
items case (#752) @flaviuvadan__all__ to cluster workflow template (#747) @flaviuvadanImagePullPolicy.value for container sets that use str vs ImagePullPolicy (#731) @flaviuvadanMake steps callable, add dag/steps callable examples (#715) @elliotgunton
Fix a minor issue with script runner when the value itself evaluates to a falsey value (#697) @samj1912
Fix create_as_workflow and improve test (#693) @elliotgunton
Move to Annotated for mapping hera to models. Add from/to functions (#673) @elliotgunton
auth module that can help users generate tokens (#655) @flaviuvadanWrap up getting started docs (#664) @elliotgunton
Common arg inference code for steps/tasks (#661) @elliotgunton
on_exit handlers take Templates not just str (#650) @flaviuvadan[#522] Add a wait + synchronous Workflow.create (#643) @flaviuvadan
Workflow.create (#643) @flaviuvadanMake ContainerSet full Hera object (#632) @flaviuvadan
ContainerSet full Hera object (#632) @flaviuvadanAdd metrics from V4 and single sidecar support (#619) @flaviuvadan
Resource (#608) @flaviuvadansource in callable template kwargs (#621) @flaviuvadanMake suspend template callable, add suspend examples (#601) @elliotgunton
script_variations.py example workflow (#604) @ericdatakellyFix script decorator to properly wrap the underlying function (#592) @samj1912
Make context async-friendly (#590) @AchilleAsh
fix: broken URLs on Windows due to os.path.join() (#587) @abschm
Fix inline script parsing issues (#574) @samj1912
Fix service generator, regen services (#557) @flaviuvadan
Script.resources is not the same as ModelTemplate.resource (#554) @jplikesbikes
Your coding agent can read these notes before it upgrades. Set up the MCP server →