Metadata-Version: 2.4
Name: awehflow
Version: 5.0.2
Summary: awehflow is a configuration-driven framework for Apache Airflow that dynamically generates DAGs from simple HOCON or YAML files. It comes with built-in metrics, logging, and alerting to streamline your data orchestration.
License: Spatialedge Community License
        Version 1.0
        This Spatialedge Community License Agreement Version 1.0 (the “Agreement”), based on the Confluent Community License Version 1.0 available at http://www.confluent.io/confluent-community-license, sets forth the terms on which Spatialedge (Pty) Ltd (“Spatialedge”) makes available certain software made available by Spatialedge under this Agreement (the “Software”). BY INSTALLING, DOWNLOADING, ACCESSING, USING OR DISTRIBUTING ANY OF THE SOFTWARE, YOU AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT.IF YOU DO NOT AGREE TO SUCH TERMS AND CONDITIONS, YOU MUST NOT USE THE SOFTWARE. IF YOU ARE RECEIVING THE SOFTWARE ON BEHALF OF A LEGAL ENTITY, YOU REPRESENT AND WARRANT THAT YOU HAVE THE ACTUAL AUTHORITY TO AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT ON BEHALF OF SUCH ENTITY. “Licensee” means you, an individual, or the entity on whose behalf you are receiving the Software.
        LICENSE GRANT AND CONDITIONS.
        1.1 License. Subject to the terms and conditions of this Agreement, Spatialedge hereby grants to Licensee a non-exclusive, royalty-free, worldwide, non-transferable, non-sublicensable license during the term of this Agreement to: (a) use the Software; (b) prepare modifications and derivative works of the Software; (c) distribute the Software (including without limitation in source code or object code form); and (d) reproduce copies of the Software (the “License”). Licensee is not granted the right to, and Licensee shall not, exercise the License for an Excluded Purpose. For purposes of this Agreement, “Excluded Purpose” means making available any software-as-a-service, platform-as-a-service, infrastructure-as-a-service or other similar online service that competes with Spatialedge products or services that provide the Software.
        1.2 Conditions. In consideration of the License, Licensee’s distribution of the Software is subject to the following conditions:
        a. Licensee must cause any Software modified by Licensee to carry prominent notices stating that Licensee modified the Software.
        b. On each Software copy, Licensee shall reproduce and not remove or alter all Spatialedge or third party copyright or other proprietary notices contained in the Software, and Licensee must provide (the Notice) as quoted in 1.2.1 below with each copy.
         
        1.2.1 Notice.
        "THIS SOFTWARE IS MADE AVAILABLE BY SPATIALEDGE (PTY) LTD, UNDER THE TERMS OF THE SPATIALEDGE COMMUNITY LICENSE AGREEMENT, VERSION 1.0. BY INSTALLING, DOWNLOADING, ACCESSING, USING OR DISTRIBUTING ANY OF THE SOFTWARE, YOU AGREE TO THE TERMS OF SUCH LICENSE AGREEMENT."
        1.3 Licensee Modifications. Licensee may add its own copyright notices to modifications made by Licensee and may provide additional or different license terms and conditions for use, reproduction, or distribution of Licensee’s modifications. While redistributing the Software or modifications thereof, Licensee may choose to offer, for a fee or free of charge, support, warranty, indemnity, or other obligations. Licensee, and not Spatialedge, will be responsible for any such obligations.
        1.4 No Sublicensing. The License does not include the right to sublicense the Software, however, each recipient to which Licensee provides the Software may exercise the Licenses so long as such recipient agrees to the terms and conditions of this Agreement.
        TERM AND TERMINATION.
        This Agreement will continue unless and until earlier terminated as set forth herein. If Licensee breaches any of its conditions or obligations under this Agreement, this Agreement will terminate automatically and the License will terminate automatically and permanently.
        INTELLECTUAL PROPERTY.
        As between the parties, Spatialedge will retain all right, title, and interest in the Software, and all intellectual property rights therein. Spatialedge hereby reserves all rights not expressly granted to Licensee in this Agreement. Spatialedge hereby reserves all rights in its trademarks and service marks, and no licenses therein are granted in this Agreement.
        DISCLAIMER.
        SPATIALEDGE HEREBY DISCLAIMS ANY AND ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, AND SPECIFICALLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THE SOFTWARE.
        LIMITATION OF LIABILITY.
        SPATIALEDGE WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND, INCLUDING BUT NOT LIMITED TO, LOST PROFITS OR ANY CONSEQUENTIAL, SPECIAL, INCIDENTAL, INDIRECT, OR DIRECT DAMAGES, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ARISING OUT OF THIS AGREEMENT. THE FOREGOING SHALL APPLY TO THE EXTENT PERMITTED BY APPLICABLE LAW.
        GENERAL.
        6.1  Governing Law.This Agreement will be governed by and interpreted in accordance with the laws of the Republic of South Africa, without reference to its conflict of laws principles. If Licensee is located within the Republic of South Africa, all disputes arising out of this Agreement are subject to the exclusive jurisdiction of courts located in Cape Town, South Africa. If Licensee is located outside of South Africa, any dispute, controversy or claim arising out of or relating to this Agreement will be referred to and finally determined by arbitration in accordance with the JAMS International Arbitration Rules. The tribunal will consist of one arbitrator. The place of arbitration will be Cape Town, South Africa. The language to be used in the arbitral proceedings will be English. Judgment upon the award rendered by the arbitrator may be entered in any court having jurisdiction thereof.
        6.2.  Assignment. Licensee is not authorized to assign its rights under this Agreement to any third party. Spatialedge may freely assign its rights under this Agreement to any third party.
        6.3.  Other.  This Agreement is the entire agreement between the parties regarding the subject matter hereof. No amendment or modification of this Agreement will be valid or binding upon the parties unless made in writing and signed by the duly authorized representatives of both parties. In the event that any provision, including without limitation any condition, of this Agreement is held to be unenforceable, this Agreement and all licenses and rights granted hereunder will immediately terminate. Waiver by Spatialedge of a breach of any provision of this Agreement or the failure by Spatialedge to exercise any right hereunder will not be construed as a waiver of any subsequent breach of that right or as a waiver of any other right.
Project-URL: Homepage, https://gitlab.com/spatialedge/airflow/work_items
Project-URL: Issues, https://gitlab.com/spatialedge/airflow/awehflow/-/work_items
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: apache-airflow>=3.1.7
Requires-Dist: apache-airflow-providers-google>=20.0.0
Requires-Dist: apache-airflow-providers-postgres>=6.6.3
Requires-Dist: apache-airflow-providers-ssh>=5.0.1
Requires-Dist: click>=8.1.8
Requires-Dist: dotty-dict>=1.3.1
Requires-Dist: httplib2>=0.31.2
Requires-Dist: psycopg2-binary>=2.9.12
Requires-Dist: pyhocon>=0.3.63
Requires-Dist: pymysql>=1.1.3
Requires-Dist: pytz>=2025.2
Requires-Dist: pyyaml>=6.0.3
Requires-Dist: slackclient>=2.9.4
Provides-Extra: default
Requires-Dist: apache-airflow>=3.1.7; extra == "default"
Provides-Extra: composer
Requires-Dist: apache-airflow>=3.1.7; extra == "composer"
Requires-Dist: apache-airflow-providers-google>=20.0.0; extra == "composer"
Dynamic: license-file

# awehflow

![coverage report](https://gitlab.com/spatialedge/awehflow/badges/master/coverage.svg)
![pipeline status](https://gitlab.com/spatialedge/awehflow/badges/master/pipeline.svg)

**awehflow** is a configuration-driven framework for Apache Airflow that dynamically generates DAGs from simple HOCON or YAML files. It comes with built-in metrics, logging, and alerting to streamline your data orchestration.

## Core Concepts

- **Configuration-Driven**: Define complex DAGs using a clear, hierarchical configuration. No need to write repetitive Python code for each pipeline.
- **Dynamic DAG Generation**: **awehflow** automatically constructs and orchestrates Airflow DAGs based on your configurations.
- **Built-in Observability**: Comes with out-of-the-box event handlers for persisting metrics to a database and alerters for notifications on pipeline status.
- **Extensible**: Easily add your own custom event handlers and alerters to integrate with any service.

## Getting Started

- [**Getting Started Guide**](./docs/getting-started.md): A step-by-step guide on how to get your first **awehflow** pipeline up and running.

## Configuration Reference

- [**Configuration Guide**](./docs/config-files.md): A detailed walkthrough of the configuration system.

## Custom Operators and Sensors

**awehflow** includes a collection of custom operators and sensors to extend Airflow's functionality. While these custom operators provide specialized capabilities, **awehflow** is fully compatible with all standard Airflow operators. You can use any operator available in your Airflow environment by referencing its fully qualified class name in your configuration.

- [**Operators Guide**](./docs/operators): Detailed documentation for all custom operators.
- [**Sensors Guide**](./docs/sensors.md): Detailed documentation for all custom sensors.

## Command-Line Interface (CLI)

**awehflow** includes a CLI for generating and validating configurations.

- [**CLI Documentation**](./awehflow_cli/README.md): A complete reference for all CLI commands.

## Advanced Features

### Event Handlers & Alerters

**awehflow** has a built-in event system that allows you to run custom code in response to pipeline events. Alerters are a special type of event handler designed for sending notifications.

- [**Alerts Guide**](./docs/alerts.md): A detailed guide on how to configure and use alerters.

## Troubleshooting

- [**Troubleshooting Guide**](./docs/troubleshooting-debugging.md): Solutions for common issues and debugging tips.

## For Developers

### Development Environment Setup
To contribute to **awehflow**, follow these steps to set up a development environment for a specific Airflow version.

1.  **Install Miniconda**: Follow the official instructions.
2.  **Create Conda Environment (x86 on Mac ARM)**: If you are on an ARM-based Mac, create an x86-emulated environment. Add this function to your `.zsh
