{ "info": { "author": "mayansalama", "author_email": "micsalama@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Windmill\n\nDrag'n'drop web app to manage and create Airflow DAGs. The goal is to\nhave a Web UI that can generate YML Dag Definitions, integrating with\ncustom operators and potentially existing DAGs. YML DAGs can then be\nsynced to a remote repo\n\n- Front end is built using Typescript React\n- Back end is built using Flask on Python 3.6+\n\n## MVP Required Features\n\n### Front-End Features\n\n- [x] Dynamic Operators\n- [x] Menu Dropdowns\n- [x] Load Operators from App\n- [x] Format operator display into classes\n- [x] Search functionality for operators\n- [x] Basic operator level properties\n- [x] Implement DAG level properties\n- [x] New DAG Functionality\n- [x] Parameter Tooltips\n- [x] Render arbitrary viewport windows for New/Save/Load etc\n- [x] Overwrite/Save prompt on New\n- [x] DAG renaming and save functionality\n- [ ] Open dag from menu\n- [ ] Check if file already exists on rename\n- [ ] Prompt save if there are nodes on open\n- [ ] Fix loss of state on refresh bug\n- [ ] Icons\n- [ ] Put File details in File Browser \n- [ ] Pull PORT from Flask host\n- [ ] Add a last saved time to NavBar\n\n### Back-End Features\n\n- [x] Generate Operator Lists\n- [x] CLI to start Web and Front End\n- [x] Generate DAG Spec\n- [x] CLI to create new windmill project\n- [x] CLI to start windmill from a windmill project\n- [x] Implement windmill-dev start\n- [x] Save/Load Windmill Files functionality\n- [ ] Validate incoming WMLs (is there a need for this?)\n- [x] Get default values\n- [x] Pull parameters from parent classes\n- [?] Dedupe multi import operators - nothing preventing this but underlying issue is fixed\n- [ ] Get WML owner and last-modified details during wml list\n- [ ] Allow custom operators\n- [ ] Add defaults to CLI --help commands\n- [ ] Strategy for Python Opjects (e.g. callables) - maybe import statement?\n- [ ] Backport existing Python DAGs to WMLs\n- [ ] Allow YML updates to propogate to WMLs\n- [ ] Allow user specified Airflow Version - isolate to docker or something so we can run 2.7 if we want?\n\n## MVP Usage Pattern\n\nTo run as a user:\n\n1. Install with `pip install airflow-windmill`\n2. Run `windmill init` to create a local Windmill project\n3. Run `windmill run` from this folder to run the app locally\n\nTo run as a dev:\n\n1. Clone from git\n2. Run `poetry install`\n3. ?Run `windmill-dev install-node-depts`\n4. Run `windmill-dev start` to start a flask server and use parcel to serve frontend\n\n## Future Usage Patterns\n\n- Auto-sync for windmill project to git\n\n## Getting Started\n\nThis package can be installed and run using Pip:\n\n```\npip install windmill-airflow\n```\n\n## Deployment\n\n```bash\n# Run NPM build\ncd windmill/http/app/\nnpm run-script build\n\n# Update git ...\ncd ../../../\n\n# Poetry build\npoetry build\npoetry publish\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "Apache-2.0", "maintainer": "", "maintainer_email": "", "name": "windmill-airflow", "package_url": "https://pypi.org/project/windmill-airflow/", "platform": "", "project_url": "https://pypi.org/project/windmill-airflow/", "project_urls": null, "release_url": "https://pypi.org/project/windmill-airflow/0.0.2/", "requires_dist": [ "apache-airflow[crypto,celery,postgres,hive,jdbc,mysql,ssh] (==1.10.4)", "marshmallow (>=3.0,<4.0)", "docstring-parser (>=0.3.0,<0.4.0)", "decli (>=0.5.0,<0.6.0)", "flask-cors (>=3.0.8,<4.0.0)", "pyyaml (>=5.1.2,<6.0.0)" ], "requires_python": ">=3.6,<4.0", "summary": "", "version": "0.0.2" }, "last_serial": 5805782, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "19378566cd2e62419f54b6e5627c64ae", "sha256": "5d60e5d6b00a5bf2e3496707835f401468b6e22b0cedd76cc3604fe3a39405b2" }, "downloads": -1, "filename": "windmill_airflow-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "19378566cd2e62419f54b6e5627c64ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 1485843, "upload_time": "2019-09-09T22:10:08", "url": "https://files.pythonhosted.org/packages/be/8f/cfc037c1332f6dd4faefd5a0a5d3cb2766fd0263797ae7d9ccececdfed2d/windmill_airflow-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5819d5d4810f7f83466d4581a89a9369", "sha256": "3eda1c10d4022791235b30780843bb6468342c92ce374fc7530f4d677d89d200" }, "downloads": -1, "filename": "windmill-airflow-0.0.2.tar.gz", "has_sig": false, "md5_digest": "5819d5d4810f7f83466d4581a89a9369", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 1463251, "upload_time": "2019-09-09T22:10:03", "url": "https://files.pythonhosted.org/packages/51/ba/1fefdd5f3d3be306bec01ccbe8fa963e097738f75efba87b7949d20657d6/windmill-airflow-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "19378566cd2e62419f54b6e5627c64ae", "sha256": "5d60e5d6b00a5bf2e3496707835f401468b6e22b0cedd76cc3604fe3a39405b2" }, "downloads": -1, "filename": "windmill_airflow-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "19378566cd2e62419f54b6e5627c64ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 1485843, "upload_time": "2019-09-09T22:10:08", "url": "https://files.pythonhosted.org/packages/be/8f/cfc037c1332f6dd4faefd5a0a5d3cb2766fd0263797ae7d9ccececdfed2d/windmill_airflow-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5819d5d4810f7f83466d4581a89a9369", "sha256": "3eda1c10d4022791235b30780843bb6468342c92ce374fc7530f4d677d89d200" }, "downloads": -1, "filename": "windmill-airflow-0.0.2.tar.gz", "has_sig": false, "md5_digest": "5819d5d4810f7f83466d4581a89a9369", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 1463251, "upload_time": "2019-09-09T22:10:03", "url": "https://files.pythonhosted.org/packages/51/ba/1fefdd5f3d3be306bec01ccbe8fa963e097738f75efba87b7949d20657d6/windmill-airflow-0.0.2.tar.gz" } ] }