Metadata-Version: 2.1
Name: windmill-airflow
Version: 0.0.2
Summary: 
License: Apache-2.0
Author: mayansalama
Author-email: micsalama@gmail.com
Requires-Python: >=3.6,<4.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Dist: apache-airflow[crypto,celery,postgres,hive,jdbc,mysql,ssh] (==1.10.4)
Requires-Dist: decli (>=0.5.0,<0.6.0)
Requires-Dist: docstring-parser (>=0.3.0,<0.4.0)
Requires-Dist: flask-cors (>=3.0.8,<4.0.0)
Requires-Dist: marshmallow (>=3.0,<4.0)
Requires-Dist: pyyaml (>=5.1.2,<6.0.0)
Description-Content-Type: text/markdown

# Windmill

Drag'n'drop web app to manage and create Airflow DAGs. The goal is to
have a Web UI that can generate YML Dag Definitions, integrating with
custom operators and potentially existing DAGs. YML DAGs can then be
synced to a remote repo

- Front end is built using Typescript React
- Back end is built using Flask on Python 3.6+

## MVP Required Features

### Front-End Features

- [x] Dynamic Operators
- [x] Menu Dropdowns
- [x] Load Operators from App
- [x] Format operator display into classes
- [x] Search functionality for operators
- [x] Basic operator level properties
- [x] Implement DAG level properties
- [x] New DAG Functionality
- [x] Parameter Tooltips
- [x] Render arbitrary viewport windows for New/Save/Load etc
- [x] Overwrite/Save prompt on New
- [x] DAG renaming and save functionality
- [ ] Open dag from menu
- [ ] Check if file already exists on rename
- [ ] Prompt save if there are nodes on open
- [ ] Fix loss of state on refresh bug
- [ ] Icons
- [ ] Put File details in File Browser 
- [ ] Pull PORT from Flask host
- [ ] Add a last saved time to NavBar

### Back-End Features

- [x] Generate Operator Lists
- [x] CLI to start Web and Front End
- [x] Generate DAG Spec
- [x] CLI to create new windmill project
- [x] CLI to start windmill from a windmill project
- [x] Implement windmill-dev start
- [x] Save/Load Windmill Files functionality
- [ ] Validate incoming WMLs (is there a need for this?)
- [x] Get default values
- [x] Pull parameters from parent classes
- [?] Dedupe multi import operators - nothing preventing this but underlying issue is fixed
- [ ] Get WML owner and last-modified details during wml list
- [ ] Allow custom operators
- [ ] Add defaults to CLI --help commands
- [ ] Strategy for Python Opjects (e.g. callables) - maybe import statement?
- [ ] Backport existing Python DAGs to WMLs
- [ ] Allow YML updates to propogate to WMLs
- [ ] Allow user specified Airflow Version - isolate to docker or something so we can run 2.7 if we want?

## MVP Usage Pattern

To run as a user:

1. Install with `pip install airflow-windmill`
2. Run `windmill init` to create a local Windmill project
3. Run `windmill run` from this folder to run the app locally

To run as a dev:

1. Clone from git
2. Run `poetry install`
3. ?Run `windmill-dev install-node-depts`
4. Run `windmill-dev start` to start a flask server and use parcel to serve frontend

## Future Usage Patterns

- Auto-sync for windmill project to git

## Getting Started

This package can be installed and run using Pip:

```
pip install windmill-airflow
```

## Deployment

```bash
# Run NPM build
cd windmill/http/app/
npm run-script build

# Update git ...
cd ../../../

# Poetry build
poetry build
poetry publish
```
