This release is a pre-release and may not be stable for production use.
otb-airflow-triggers
Introduction
This repository contains custom openthebox Airflow triggers for the openthebox Airflow repository.
The triggers must be available to the Airflow triggerer service as well as the worker pods. They therefore need a separate package that each service can install independently. Code available only in worker pods cannot run in the triggerer service.
Dependencies
The dependencies must target the same versions as those in the
airflow-dag repository.
Keep the versions in pyproject.toml aligned with that repository when dependencies change.
This includes Airflow and the Amazon provider.
The Amazon provider includes its aiobotocore extra for asynchronous AWS calls.
Local development
Use Python 3.12 or later. Run these commands from the project root to create and activate a virtual environment. Install the package with its development dependencies.
python3.12 -m venv venv
source venv/bin/activate
python -m pip install -e '.[dev]'
Run these checks from the project root.
venv/bin/ruff check .
venv/bin/ruff format --check .
venv/bin/mypy src/ tests/
venv/bin/bandit -r src/
venv/bin/coverage run -m pytest
venv/bin/coverage report
Build
The package version comes from Git tags, such as v0.1.0.
Commits after a release tag produce a development version.
Git hash suffixes are omitted so that public package indexes accept development versions.
The generated version file is included in the source archive.
Build the wheel and source archive.
venv/bin/python -m build
venv/bin/python -m twine check --strict dist/*
The build writes the wheel and source archive to dist/.
Install the package in each Airflow environment that imports its triggers.
This includes the worker pods and the triggerer service.
GitHub workflows
Pull requests into main run the quality checks in ci.yml.
The checks cover tests, coverage, lint rules, formatting, and types.
They also check dependency compatibility, security issues with Bandit, and package metadata.
The checks run with Python 3.12.
Publishing a GitHub release starts release.yml.
It checks the release tag, builds the package, and publishes it to PyPI.
It then attaches the wheel and source archive to the existing GitHub release.
The package version must match the tag and the GitHub pre-release setting.
For example, tag v0.1.0rc1 must have the pre-release setting enabled.
The Publish release candidate workflow supports manual publishing from a branch or tag.
It runs the same quality checks and builds the exact commit that passed them.
It publishes a release candidate to PyPI or TestPyPI.
It does not create a GitHub release or attach files to a release.
Workflow artifacts transfer distributions between jobs and expire after one day.
Publishing setup
Create the pypi and testpypi environments in the GitHub repository settings.
Configure these Trusted Publishers for the otb-airflow-triggers project.
Use owner openthebox and repository airflow-triggers for each publisher.
| Package index | Workflow file | GitHub environment |
|---|---|---|
| PyPI | release.yml |
pypi |
| PyPI | publish-candidate.yml |
pypi |
| TestPyPI | publish-candidate.yml |
testpypi |
Trusted Publishing uses GitHub's identity token and does not need stored PyPI API tokens.
Manual publishing
The workflow must exist on the default branch before GitHub makes manual runs available.
- Open the repository's Actions page.
- Select Publish release candidate.
- Select Run workflow.
- Select the branch or tag under Use workflow from.
- Select
pypiortestpypiintarget. - Start the workflow.
The version comes from hatch-vcs and the selected commit's Git history.
For example, commits after v0.1.0 produce a version such as 0.1.1.dev7.
A tag such as v0.1.1rc1 produces 0.1.1rc1.
Manual publishing requires a pre-release version and rejects final-release tags.
Each package index accepts a version only once.
Select a later commit or a new pre-release tag for another upload.
Metadata
Release files for otb-airflow-triggers 0.1.dev18
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| otb_airflow_triggers-0.1.dev18.tar.gz | 5.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| otb_airflow_triggers-0.1.dev18-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.2 kB
Release files / otb_airflow_triggers-0.1.dev18.tar.gz
| Download URL | otb_airflow_triggers-0.1.dev18.tar.gz |
|---|---|
| Size | 5.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
861b072147bbf8caf4ad4982f0432b05faacfe7fefb636b3de9a49a6cd2f5414
|
|
BLAKE2b-256 checksum How to use checksums |
147e4d7df26bc7da8f688a28af5df4987fec1dc514bd297d2a93e8937b10c79f
|
| 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 Oct 8, 2026.
Transparency logRelease files / otb_airflow_triggers-0.1.dev18-py3-none-any.whl
| Download URL | otb_airflow_triggers-0.1.dev18-py3-none-any.whl |
|---|---|
| Size | 6.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dd1cdc210e6530cb51fe696fdc8152c46a364b5de7bb2b19c7ef33af7f9e83a1
|
|
BLAKE2b-256 checksum How to use checksums |
c575541cec5d8a55dae98d6855c09cf776377467252013b37999c0ca0464c14a
|
| 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 Oct 8, 2026.
Transparency log