Skip to main content

No project description provided

Project description

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:

  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

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

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

# Poetry build
poetry build
poetry publish

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

windmill-airflow-0.0.2.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

windmill_airflow-0.0.2-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file windmill-airflow-0.0.2.tar.gz.

File metadata

  • Download URL: windmill-airflow-0.0.2.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0b1 CPython/3.6.9 Linux/4.4.0-18362-Microsoft

File hashes

Hashes for windmill-airflow-0.0.2.tar.gz
Algorithm Hash digest
SHA256 3eda1c10d4022791235b30780843bb6468342c92ce374fc7530f4d677d89d200
MD5 5819d5d4810f7f83466d4581a89a9369
BLAKE2b-256 51ba1fefdd5f3d3be306bec01ccbe8fa963e097738f75efba87b7949d20657d6

See more details on using hashes here.

File details

Details for the file windmill_airflow-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: windmill_airflow-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0b1 CPython/3.6.9 Linux/4.4.0-18362-Microsoft

File hashes

Hashes for windmill_airflow-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5d60e5d6b00a5bf2e3496707835f401468b6e22b0cedd76cc3604fe3a39405b2
MD5 19378566cd2e62419f54b6e5627c64ae
BLAKE2b-256 be8fcfc037c1332f6dd4faefd5a0a5d3cb2766fd0263797ae7d9ccececdfed2d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page