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
- Dynamic Operators
- Menu Dropdowns
- Load Operators from App
- Format operator display into classes
- Search functionality for operators
- Basic operator level properties
- Implement DAG level properties
- New DAG Functionality
- Parameter Tooltips
- Render arbitrary viewport windows for New/Save/Load etc
- Overwrite/Save prompt on New
- 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
- Generate Operator Lists
- CLI to start Web and Front End
- Generate DAG Spec
- CLI to create new windmill project
- CLI to start windmill from a windmill project
- Implement windmill-dev start
- Save/Load Windmill Files functionality
- Validate incoming WMLs (is there a need for this?)
- Get default values
- 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:
- Install with
pip install airflow-windmill - Run
windmill initto create a local Windmill project - Run
windmill runfrom this folder to run the app locally
To run as a dev:
- Clone from git
- Run
poetry install - ?Run
windmill-dev install-node-depts - Run
windmill-dev startto 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
# Run NPM build
cd windmill/http/app/
npm run-script build
# Update git ...
cd ../../../
# Poetry build
poetry build
poetry publish
Metadata
Release files for windmill-airflow 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| windmill-airflow-0.0.2.tar.gz | 1.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| windmill_airflow-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.9 MB
Release files / windmill-airflow-0.0.2.tar.gz
| Download URL | windmill-airflow-0.0.2.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3eda1c10d4022791235b30780843bb6468342c92ce374fc7530f4d677d89d200
|
|
BLAKE2b-256 checksum How to use checksums |
51ba1fefdd5f3d3be306bec01ccbe8fa963e097738f75efba87b7949d20657d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.0b1 CPython/3.6.9 Linux/4.4.0-18362-Microsoft
|
Release files / windmill_airflow-0.0.2-py3-none-any.whl
| Download URL | windmill_airflow-0.0.2-py3-none-any.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5d60e5d6b00a5bf2e3496707835f401468b6e22b0cedd76cc3604fe3a39405b2
|
|
BLAKE2b-256 checksum How to use checksums |
be8fcfc037c1332f6dd4faefd5a0a5d3cb2766fd0263797ae7d9ccececdfed2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.0b1 CPython/3.6.9 Linux/4.4.0-18362-Microsoft
|