Skip to main content

apache-airflow-providers-dpone

The formal Apache Airflow provider facade for dpone self-service DAGs.

Install

Use a supported Airflow matrix cell. This example uses Python 3.12, Airflow 3.2.0, and the CNCF Kubernetes provider 10.14.0. Use Apache Airflow's official constraints for the Airflow install only, then pin Airflow again while adding this provider:

AIRFLOW_VERSION=3.2.0
PYTHON_VERSION=3.12
DPONE_VERSION=X.Y.Z
AIRFLOW_CONSTRAINTS_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

python3 -m pip install \
  "apache-airflow[cncf.kubernetes]==${AIRFLOW_VERSION}" \
  --constraint "${AIRFLOW_CONSTRAINTS_URL}"
python3 -m pip install \
  "apache-airflow==${AIRFLOW_VERSION}" \
  "apache-airflow-providers-cncf-kubernetes==10.14.0" \
  "apache-airflow-providers-dpone==${DPONE_VERSION}"
python3 -m pip check
python3 -c "from airflow.providers.dpone import load_dpone_dags; print(load_dpone_dags.__module__)"

The provider installs the same-version dpone-airflow-pack; it does not require the full dpone runtime or connector drivers in the scheduler image.

Use only a version already published on PyPI. For a release candidate, install the exact provider and pack wheels built from the same reviewed commit instead of using a not-yet-existing tag or floating branch.

Load DAGs

from airflow.providers.dpone import load_and_acknowledge_dpone_dags

index_path = "/opt/airflow/.dpone-cache/current/airflow-index.json"
loaded = load_and_acknowledge_dpone_dags(
    globals(),
    index_path=index_path,
    ack_path="/opt/airflow/.dpone-ack/loader-ack.json",
    ack_root="/opt/airflow/.dpone-ack",
)
if loaded.report.fatal:
    error_code = (
        loaded.report.errors[0].get("code", "DPONE_AIRFLOW_INDEX_INVALID")
        if loaded.report.errors
        else "DPONE_AIRFLOW_INDEX_INVALID"
    )
    raise RuntimeError(
        f"{error_code}: dpone Airflow deployment index could not be loaded"
    )

load_and_acknowledge_dpone_dags(...) holds one shared cache lease across the parse and acknowledgement. It performs bounded local filesystem I/O only and atomically binds the completed report to the exact deployment and index digest. Mount /opt/airflow/.dpone-cache read-only in the parser container and provide the separate /opt/airflow/.dpone-ack volume as its only writable evidence channel. The older cache-local status/ destination remains supported when ack_root is omitted, but it requires a writable cache mount and is not the recommended Kubernetes layout.

The distribution owns Airflow provider discovery and the typed canonical namespace. The dependency-light dpone-airflow-pack package owns static pack reading and DAG construction. Importing the provider performs no remote cache, Airflow metadata, Connection, Variable, Vault, Kubernetes, or database I/O.

The deployment index read is bounded to 8 MiB and each listed artifact to 64 MiB by default. An index-level error returns fatal=True; do not represent that as a successful empty parse. After a trusted index is loaded, DAG spec and workload-pack size/SHA-256 failures are isolated to the affected DAG under the default skip_and_report policy. Recover by rematerializing the immutable release/deployment from trusted storage, never by editing cache artifacts in place.

DponeDag.from_spec(...) and DponeTaskGroup.from_pack(...) are typed escape hatches for hybrid DAGs. The recommended production path is load_and_acknowledge_dpone_dags(...); load_dpone_dags(...) remains the parse-only lower-level API.

Operations

Strict runtime tasks set get_logs=true and on_finish_action=delete_succeeded_pod so Airflow streams base container stdout after pod start. Structured XCom/runtime evidence remains the task outcome authority; a cluster log collector is still required for post-delete forensics. The full dpone distribution ships the runtime Pod retention control; the parse-safe provider facade does not execute it during DAG import. Before production, deploy and certify its label-scoped plan/apply CronJob through the runtime pod retention runbook, and deploy the exact cache through the Kubernetes cache runbook. The stock JSONL publisher reports process_ordered, not crash durability; production apply requires a certified publisher/sink that reports durable_acknowledged and retains the operation, intent, outcome and completion chain.

Release files for apache-airflow-providers-dpone 0.81.1

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

Source distribution (sdist)

Source distribution for apache-airflow-providers-dpone 0.81.1
File Size Uploaded
apache_airflow_providers_dpone-0.81.1.tar.gz 4.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for apache-airflow-providers-dpone 0.81.1
File Interpreter ABI Platform
apache_airflow_providers_dpone-0.81.1-py3-none-any.whl Python 3 none any Details

Total release size: 9.8 kB

Release files / apache_airflow_providers_dpone-0.81.1.tar.gz

Download URL apache_airflow_providers_dpone-0.81.1.tar.gz
Size 4.0 kB
Tags Source
SHA-256 checksum
How to use checksums
13e0396d29ed5f2808b18f01ef0e325f3ccafea0ae8c67696aa37b081ed993bc
BLAKE2b-256 checksum
How to use checksums
d6b022f5e671e82579c8d088045fbb243285d9c309ced7763c36ca80fc5b4d2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 18, 2026.

Transparency log

Release files / apache_airflow_providers_dpone-0.81.1-py3-none-any.whl

Download URL apache_airflow_providers_dpone-0.81.1-py3-none-any.whl
Size 5.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2b39a4a07114592a574ffe1b66ddab67d0bf5ee17b2505ff7bff7d1d20fde403
BLAKE2b-256 checksum
How to use checksums
f9f2c93a3cd4e3bd0eef5d6da25544fce77ec7fc14b386ed4810304a42b76832
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 18, 2026.

Transparency log

Release history Release notifications | RSS feed

0.83.9

2 release files

0.83.8

2 release files

0.83.6

2 release files

0.83.5

2 release files

0.83.4

2 release files

0.83.3

2 release files

0.83.2

2 release files

0.83.1

2 release files

0.83.0

2 release files

0.82.0

2 release files

0.81.4

2 release files

0.81.3

2 release files

0.81.2

2 release files

This release

0.81.1 This release

2 release files

0.81.0

2 release files

0.80.0

2 release files

0.79.2

2 release files

0.79.1

2 release files

0.79.0

2 release files

0.78.0

2 release files

0.77.1

2 release files

0.77.0

2 release files

0.76.0

2 release files

0.75.0

2 release files

0.74.9

2 release files

0.74.8

2 release files

0.74.7

2 release files

0.74.6

2 release files

0.74.5

2 release files

0.74.4

2 release files

0.74.3

2 release files

0.74.2

2 release files

0.74.0

2 release files

0.73.9

2 release files

0.73.6

2 release files

0.73.2

2 release files

0.73.1

2 release files

0.73.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