Metadata-Version: 2.4
Name: airflow-provider-duckless
Version: 0.6.0
Summary: Apache Airflow provider for DuckLess: run DuckDB jobs on Google Cloud from a DAG, deferrable
Keywords: airflow,duckdb,duckless,google-cloud,cloud-composer,data-engineering
License-Expression: Apache-2.0
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Apache Airflow
Classifier: Framework :: Apache Airflow :: Provider
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: duckless>=0.6.0
Requires-Dist: apache-airflow>=2.10
Requires-Python: >=3.11
Project-URL: Homepage, https://tosun-si.github.io/duckless/guides/airflow/
Project-URL: Documentation, https://tosun-si.github.io/duckless/guides/airflow/
Project-URL: Repository, https://github.com/tosun-si/duckless
Project-URL: Issues, https://github.com/tosun-si/duckless/issues
Description-Content-Type: text/markdown

# airflow-provider-duckless

Run [DuckLess](https://github.com/tosun-si/duckless) jobs (serverless DuckDB on Google Cloud) from
Apache Airflow and Cloud Composer.

```python
from duckless_airflow.operators import DuckLessRunOperator

DuckLessRunOperator(task_id="checks", source="jobs/checks.py", machine="n2-highmem-8", env={"DAY": "{{ ds }}"})
```

`DuckLessRunOperator` submits the job, then waits for it in the triggerer (deferrable by default),
so no worker slot is held while it runs. The task fails when the job fails, with the runner's error,
and pushes a summary of the job to XCom.

Airflow 2.10 and later, Airflow 3 included; Python 3.11 to 3.13.

Guide: https://tosun-si.github.io/duckless/guides/airflow/
