Metadata-Version: 2.5
Name: airflow-priority
Version: 1.6.2
Summary: Priority Tags for Airflow Dags
Project-URL: Repository, https://github.com/airflow-laminar/airflow-priority
Project-URL: Homepage, https://github.com/airflow-laminar/airflow-priority
Author-email: the airflow-priority authors <t.paine154@gmail.com>
License: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.11
Requires-Dist: pydantic>=2
Provides-Extra: aws
Requires-Dist: boto3; extra == 'aws'
Requires-Dist: botocore; extra == 'aws'
Provides-Extra: config
Requires-Dist: airflow-config>=1.9; extra == 'config'
Provides-Extra: datadog
Requires-Dist: datadog-api-client; extra == 'datadog'
Provides-Extra: develop
Requires-Dist: airflow-config>=1.9; extra == 'develop'
Requires-Dist: apache-airflow-providers-ssh; extra == 'develop'
Requires-Dist: apache-airflow-providers-standard; extra == 'develop'
Requires-Dist: apache-airflow<4,>=2; extra == 'develop'
Requires-Dist: boto3; extra == 'develop'
Requires-Dist: botocore; extra == 'develop'
Requires-Dist: build; extra == 'develop'
Requires-Dist: bump-my-version; extra == 'develop'
Requires-Dist: check-dist; extra == 'develop'
Requires-Dist: codespell; extra == 'develop'
Requires-Dist: datadog-api-client; extra == 'develop'
Requires-Dist: discord-py; extra == 'develop'
Requires-Dist: hatchling; extra == 'develop'
Requires-Dist: httpx; extra == 'develop'
Requires-Dist: logfire>=4; extra == 'develop'
Requires-Dist: mdformat; extra == 'develop'
Requires-Dist: mdformat-frontmatter; extra == 'develop'
Requires-Dist: mdformat-tables>=1; extra == 'develop'
Requires-Dist: newrelic-telemetry-sdk; extra == 'develop'
Requires-Dist: opsgenie-sdk; extra == 'develop'
Requires-Dist: pagerduty; extra == 'develop'
Requires-Dist: pytest; extra == 'develop'
Requires-Dist: pytest-cov; extra == 'develop'
Requires-Dist: ruff; extra == 'develop'
Requires-Dist: slack-sdk; extra == 'develop'
Requires-Dist: twine; extra == 'develop'
Requires-Dist: ty; extra == 'develop'
Requires-Dist: uv; extra == 'develop'
Requires-Dist: wheel; extra == 'develop'
Provides-Extra: discord
Requires-Dist: discord-py; extra == 'discord'
Provides-Extra: logfire
Requires-Dist: logfire; extra == 'logfire'
Provides-Extra: newrelic
Requires-Dist: newrelic-telemetry-sdk; extra == 'newrelic'
Provides-Extra: opsgenie
Requires-Dist: opsgenie-sdk; extra == 'opsgenie'
Provides-Extra: pagerduty
Requires-Dist: pagerduty; extra == 'pagerduty'
Provides-Extra: slack
Requires-Dist: slack-sdk; extra == 'slack'
Provides-Extra: symphony
Requires-Dist: httpx; extra == 'symphony'
Description-Content-Type: text/markdown

# airflow-priority

Route tagged Airflow DAG-run events to alerting and metric backends.

[![Build Status](https://github.com/airflow-laminar/airflow-priority/actions/workflows/build.yaml/badge.svg?branch=main&event=push)](https://github.com/airflow-laminar/airflow-priority/actions/workflows/build.yaml)
[![codecov](https://codecov.io/gh/airflow-laminar/airflow-priority/branch/main/graph/badge.svg)](https://codecov.io/gh/airflow-laminar/airflow-priority)
[![License](https://img.shields.io/github/license/airflow-laminar/airflow-priority)](https://github.com/airflow-laminar/airflow-priority)
[![PyPI](https://img.shields.io/pypi/v/airflow-priority.svg)](https://pypi.python.org/pypi/airflow-priority)

Tag a DAG with P1 through P5 and configure the destinations that should receive
its state changes. Backends apply independent thresholds. The plugin observes
DAG-run running, success, and failure events through Airflow listeners.

## Documentation

- [Tutorial: alert on one failed DAG](docs/src/tutorial.md) sends a tagged failure to a Slack test channel.
- [How-to guides](docs/src/how-to.md) cover priorities, thresholds, environment variables, airflow-config, and delivery troubleshooting.
- [API reference](docs/src/API.md) lists configuration models, backend options, routing, listener hooks, and tracker behavior.
- [Why priority alerts follow DAG-run state](docs/src/explanation.md) explains task callbacks, recovery workflows, and process-local context.

Backend guides cover [Slack](docs/src/slack.md), [Discord](docs/src/discord.md),
[PagerDuty](docs/src/pagerduty.md), [Opsgenie](docs/src/opsgenie.md),
[Symphony](docs/src/symphony.md), [Datadog](docs/src/datadog.md),
[New Relic](docs/src/newrelic.md), [Logfire](docs/src/logfire.md), and
[AWS CloudWatch](docs/src/cloudwatch.md).

Published documentation:
[airflow-laminar.github.io/airflow-priority](https://airflow-laminar.github.io/airflow-priority/).

## Related integrations

[airflow-supervisor](https://github.com/airflow-laminar/airflow-supervisor),
[airflow-nomad](https://github.com/airflow-laminar/airflow-nomad), and
[airflow-cron](https://github.com/airflow-laminar/airflow-cron) produce task logs
and failure diagnostics. Priority routing observes their DAG outcomes;
task callbacks handle task-specific notification needs.

## License

Apache 2.0. See [LICENSE](LICENSE).
