Skip to main content

Windmill

Build Status

Drag'n'drop web app to manage and create Airflow DAGs. DAGs are described usinga JSON "wml" file, which can be transpiled into a Python DAG file and pushed to a configured git repository.

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

Getting Started

  1. Install with pip install airflow-windmill
    1. Airflow is expected to be installed on the system. This allows Windmill to run with arbitrary versions of Airflow
    2. Otherwise it can be packaged with windmill using pip install airflow-windmill[airflow]. The version is defined in pyproject.toml
  2. Run windmill init to create a local Windmill project
  3. cd windmill-project
  4. Run windmill run from this folder to run the app locally

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
  • Make save/load more efficient by removing non-essential values
  • Switch nav menu to icons
  • Add convert DAG call
  • Add hotkeys to menu functions
  • Make input/output nodes more clear
  • Check if file already exists on rename
  • Prompt save if there are nodes on open
  • Fix loss of state on refresh bug
  • Put File details in File Browse
  • Make Flask Backend URI configurable
  • Add a last saved time to NavBar
  • Add error handling to backend calls
  • Only save local state if valid
  • Add tests
  • Get task descriptions from Operator list
  • XSS and injection vulns?
  • Ctl+Shift+F FIXME

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
  • Get default values
  • Pull parameters from parent classes
  • Move airflow dependency as extra
  • Convert WML into Python DAG
  • API Endpoint to trigger WML -> DAG
  • Make sure that nodes are being put in right order using ports
  • Edge cases for WML -> DAG
  • Allow repeated/weird dag/task ids (e.g. 123)
  • Get WML owner and last-modified details during wml list
  • Allow custom operators
  • Strategy for Python Opjects (e.g. callables) - allow either a import ref or an inline statement
  • Backport existing Python DAGs to WMLs
  • Allow DAG updates to propogate to WMLs (probably better to just always backport - consolidating would be a mess)
  • Add tests for different airflow version
  • Version lock travis tox and poetry version?

Other features

  • Validate on backend or front end or both?
  • Doco
  • Add permission restrictions for valid tags
  • Only include dist folder from app in poetry build

Dev User Guide

To run as a dev:

  1. Clone from git
  2. Run poetry install -E airflow
  3. Run npm install from windmill/http/app
  4. Run windmill-dev start-frontend
  5. Run windmill-dev start-backend
  6. Open 127.0.0.1:1234

Run Python Tests

Expects Tox and Poetry to be available on path

pyenv install 3.6.5 3.7.7
pyenv local 3.6.5 3.7.7
tox

Future Usage Patterns

  • Auto-sync for windmill project to git

Deployment

Deployment to PyPi is managed using Travis and should be done in the following steps:

  1. Run poetry version {patch|minor|major}
  2. Increment the version number in windmill/__init__.py
  3. Commit and merge code into the master branch
  4. Ensure that the travis build is green
  5. Create a git tag for the new build
  6. Push the tag to origin

Metadata

Release files for airflow-windmill 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for airflow-windmill 0.0.4
File Size Uploaded
airflow-windmill-0.0.4.tar.gz 1.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for airflow-windmill 0.0.4
File Interpreter ABI Platform
airflow_windmill-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 2.8 MB

Release files / airflow-windmill-0.0.4.tar.gz

Download URL airflow-windmill-0.0.4.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
f68126833a9f7e06d019c8621667998bcf533ef4fed93f19e4327a1ab4275e23
BLAKE2b-256 checksum
How to use checksums
4b7ddc4e64f0f17b8b5376083c995befbaf8b9b1273a6e5dc0e76436f97d4fa4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.5 CPython/3.7.1 Linux/4.15.0-1028-gcp

Release files / airflow_windmill-0.0.4-py3-none-any.whl

Download URL airflow_windmill-0.0.4-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
592e395dcf807796383879b0b9840e06fb122e732e51e45455555cd5979be721
BLAKE2b-256 checksum
How to use checksums
72bee8c612e629c102cb17d8ae98d04df9acf770f2ca54026c5466fcf6f904a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.5 CPython/3.7.1 Linux/4.15.0-1028-gcp

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page