Skip to main content
Asgarde logo

Asgarde

PyPI Python versions CI Apache Beam uv Ruff Docs License: MIT GitHub stars

Error handling and dead letter queues for Apache Beam Python, without the boilerplate. Also available for Java and Kotlin with Asgarde Java.

📖 Documentation: https://tosun-si.github.io/asgarde/

Why Asgarde

With plain Beam, each step needs its own DoFn with a try/except block and tagged outputs, and all the failures must be flattened at the end. Asgarde keeps a fluent flow and gathers the failures of all the steps:

from asgarde import CollectionComposer

result = (CollectionComposer.of(values)
          .map('Trim', lambda value: value.strip())
          .map('Parse', int)
          .filter('Keep even numbers', lambda number: number % 2 == 0))

outputs = result.outputs    # Output of the last step
failures = result.failures  # The failures of all the steps, for your dead letter queue

Installation

Asgarde is published on PyPI. apache-beam is a minimum version, not a pin: your pipeline brings its own Beam version.

uv add asgarde      # or: pip install asgarde

Features

  • One place for all the errors: each step catches its errors in a Failure (with the stack trace), the CollectionComposer gathers the failures of all the steps.
  • map, flat_map and filter operators with side inputs and DoFn lifecycle actions, and Failure.from_exception for your own DoFn.
  • Origin element: with with_origin_element, the failures also give the element that entered the flow, to debug and replay from the start. Evaluated only when a failure occurs.
  • Never breaks your job: non picklable exceptions, non JSON dicts, partial flat_map outputs, deterministic labels for Dataflow updates.
  • Any Beam transform: apply(name, beam.Map(...)) or a custom DoFn, with the Beam native exception handling, its errors gathered with the other failures.
  • Write the failures to BigQuery with Failure.to_dict() and FAILURE_BIGQUERY_SCHEMA (exception type, message, stack trace, timestamp...).
  • Beam native error handling: the failures can be added to a Beam ErrorHandler with Failure.to_bad_record, for a single dead letter queue.
  • Failure metrics: a Beam counter per step.
  • Typed (py.typed).

Compatibility

Python 3.10 to 3.14, apache-beam>=2.60.0. The CI tests the minimum Beam version and the latest Beam release on every push and every week. See Compatibility.

Roadmap

See the roadmap.

Contributing

Contributions are welcome, see CONTRIBUTING.md.

License

MIT

Release files for asgarde 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for asgarde 1.3.0
File Size Uploaded
asgarde-1.3.0.tar.gz 131.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for asgarde 1.3.0
File Interpreter ABI Platform
asgarde-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 142.3 kB

Release files / asgarde-1.3.0.tar.gz

Download URL asgarde-1.3.0.tar.gz
Size 131.0 kB
Tags Source
SHA-256 checksum
How to use checksums
424b56e7d2dc3e71805173f1a5207a6ecc923238cafe0ec0d88094b61250022b
BLAKE2b-256 checksum
How to use checksums
214ff649a2f52b8b33de5f4b1855d1da5c67e4c7e6347e5c2a392cf48be143e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / asgarde-1.3.0-py3-none-any.whl

Download URL asgarde-1.3.0-py3-none-any.whl
Size 11.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5e08ce55a5671e8fd215fea523031f1a01e75424f4293cc432c8aad3a0168bf
BLAKE2b-256 checksum
How to use checksums
9f82e12e236e786c78265b1627911d7dd1680cccccdc9700b1b80c94964b7ab9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.0.0

2 release files

0.16.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page