Metadata-Version: 2.4
Name: airflow-config
Version: 1.12.4
Summary: Airflow utilities for configuration of many DAGs and DAG environments
Project-URL: Repository, https://github.com/airflow-laminar/airflow-config
Project-URL: Homepage, https://github.com/airflow-laminar/airflow-config
Author-email: the airflow-config authors <t.paine154@gmail.com>
License: Apache-2.0
License-File: LICENSE
Keywords: airflow,config,scheduler
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: airflow-pydantic<1.7,>=1.6
Requires-Dist: colorlog
Requires-Dist: hydra-core
Requires-Dist: jinja2
Requires-Dist: omegaconf
Requires-Dist: pydantic>=2
Provides-Extra: airflow
Requires-Dist: apache-airflow-providers-ssh; extra == 'airflow'
Requires-Dist: apache-airflow-providers-standard; extra == 'airflow'
Requires-Dist: apache-airflow<3,>=2.9; extra == 'airflow'
Provides-Extra: airflow3
Requires-Dist: apache-airflow-providers-ssh; extra == 'airflow3'
Requires-Dist: apache-airflow-providers-standard; extra == 'airflow3'
Requires-Dist: apache-airflow<3.4,>=3; extra == 'airflow3'
Provides-Extra: develop
Requires-Dist: airflow-balancer>=0.6.0; extra == 'develop'
Requires-Dist: airflow-common; extra == 'develop'
Requires-Dist: airflow-priority>=1.5; extra == 'develop'
Requires-Dist: airflow-pydantic>=1.3; extra == 'develop'
Requires-Dist: airflow-supervisor>=1.7; 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: email-validator>=2; extra == 'develop'
Requires-Dist: fastapi; extra == 'develop'
Requires-Dist: flask; extra == 'develop'
Requires-Dist: flask-appbuilder; extra == 'develop'
Requires-Dist: hatch-js; extra == 'develop'
Requires-Dist: hatchling; extra == 'develop'
Requires-Dist: mdformat; extra == 'develop'
Requires-Dist: mdformat-tables>=1; extra == 'develop'
Requires-Dist: pytest; extra == 'develop'
Requires-Dist: pytest-cov; extra == 'develop'
Requires-Dist: ruff; extra == 'develop'
Requires-Dist: twine; extra == 'develop'
Requires-Dist: ty; extra == 'develop'
Requires-Dist: uv; extra == 'develop'
Requires-Dist: uvicorn; extra == 'develop'
Requires-Dist: wheel; extra == 'develop'
Description-Content-Type: text/markdown

# airflow-config

Declarative Apache Airflow DAGs from Hydra YAML and `airflow-pydantic` models.

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

```yaml
# config/pipeline.yaml
# @package _global_
_target_: airflow_config.Configuration

dags:
  daily-report:
    schedule: "0 6 * * *"
    start_date: "2025-01-01"
    catchup: false
    tasks:
      report:
        _target_: airflow_config.BashTask
        bash_command: python /opt/jobs/report.py
```

```python
from airflow_config import load_config

config = load_config("config", "pipeline")
config.generate_in_mem()
```

Configuration can provide shared defaults, environment overrides, templates,
extensions, generated Python DAG files, or in-memory DAG registration.

## Documentation

- [Tutorial: generate a DAG from YAML](docs/src/tutorial.md)
- [How-to guides](docs/src/how-to.md)
- [Why configuration and DAG models are separate](docs/src/explanation.md)
- [API reference](docs/src/api.md)

Published documentation is available at
[airflow-laminar.github.io/airflow-config](https://airflow-laminar.github.io/airflow-config/).

## Ecosystem

- [airflow-pydantic](https://github.com/airflow-laminar/airflow-pydantic) supplies the DAG, task, sensor, schedule, pool, and variable models.
- [airflow-supervisor](https://github.com/airflow-laminar/airflow-supervisor) and [supervisor-pydantic](https://github.com/airflow-laminar/supervisor-pydantic) manage supervisord jobs.
- [airflow-systemd](https://github.com/airflow-laminar/airflow-systemd) and [systemd-pydantic](https://github.com/airflow-laminar/systemd-pydantic) manage systemd services.
- [airflow-cron](https://github.com/airflow-laminar/airflow-cron) and [cron-pydantic](https://github.com/airflow-laminar/cron-pydantic) convert crontabs into DAG models.
- [airflow-balancer](https://github.com/airflow-laminar/airflow-balancer) supplies host and port selection extensions.
- [airflow-common](https://github.com/airflow-laminar/airflow-common) supplies common operators and library management.

> [!NOTE]
> This library was generated using [copier](https://copier.readthedocs.io/en/stable/) from the [Base Python Project Template repository](https://github.com/python-project-templates/base).
