Metadata-Version: 2.4
Name: airflow-pydantic
Version: 1.6.1
Summary: Pydantic models for Apache Airflow
Project-URL: Repository, https://github.com/airflow-laminar/airflow-pydantic
Project-URL: Homepage, https://github.com/airflow-laminar/airflow-pydantic
Author-email: the airflow-pydantic authors <t.paine154@gmail.com>
License: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
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: pendulum
Requires-Dist: pkn!=0.4.0,!=0.4.1,>=0.1.3
Requires-Dist: pydantic-extra-types
Requires-Dist: pydantic>=2
Requires-Dist: pytz
Provides-Extra: airflow
Requires-Dist: apache-airflow-providers-smtp; extra == 'airflow'
Requires-Dist: apache-airflow-providers-ssh; extra == 'airflow'
Requires-Dist: apache-airflow-providers-standard; extra == 'airflow'
Requires-Dist: apache-airflow<3,>=2.8; extra == 'airflow'
Provides-Extra: airflow3
Requires-Dist: apache-airflow-providers-smtp; 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: build; extra == 'develop'
Requires-Dist: bump-my-version; extra == 'develop'
Requires-Dist: ccflow; extra == 'develop'
Requires-Dist: check-dist; extra == 'develop'
Requires-Dist: codespell; 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: wheel; extra == 'develop'
Provides-Extra: laminar
Requires-Dist: airflow-balancer>=0.7.8; extra == 'laminar'
Requires-Dist: airflow-common>=0.7.9; extra == 'laminar'
Requires-Dist: airflow-config>=1.12; extra == 'laminar'
Requires-Dist: airflow-ha>=1.6.3; extra == 'laminar'
Requires-Dist: airflow-supervisor>=1.10.3; extra == 'laminar'
Requires-Dist: apache-airflow-providers-smtp; extra == 'laminar'
Requires-Dist: apache-airflow-providers-ssh; extra == 'laminar'
Requires-Dist: apache-airflow-providers-standard; extra == 'laminar'
Requires-Dist: apache-airflow<3.4,>=2.8; extra == 'laminar'
Requires-Dist: supervisor-pydantic; extra == 'laminar'
Description-Content-Type: text/markdown

# airflow-pydantic

Typed, serializable models for Apache Airflow DAGs, tasks, sensors, schedules,
and runtime resources.

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

```python
from airflow_pydantic import BashTask, Dag

dag = Dag(
    dag_id="daily-report",
    schedule="0 6 * * *",
    start_date="2025-01-01",
    catchup=False,
    tasks={
        "report": BashTask(bash_command="python /opt/jobs/report.py"),
    },
)

print(dag.render())
```

Models validate configuration before Airflow parses it, support Python and
YAML workflows, render standalone DAG source, and instantiate native Airflow
objects. `airflow-config` is the recommended YAML entry point.

## Documentation

- [Tutorial: build a declarative DAG](docs/src/tutorial.md)
- [How-to guides](docs/src/how-to.md)
- [Why model Airflow configuration](docs/src/explanation.md)
- [API reference](docs/src/api.md)

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

## Ecosystem

- [airflow-config](https://github.com/airflow-laminar/airflow-config) loads Hydra/YAML configuration and materializes these 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) selects hosts, ports, pools, and queues.
- [airflow-common](https://github.com/airflow-laminar/airflow-common) provides reusable operators and orchestration helpers.

> [!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).
