{ "info": { "author": "Yuichiro Someya", "author_email": "me@ayemos.me", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "(This project is in public-beta status)\n\n# Fuga \\['fu:ga\\]\n\n[![pypi](https://img.shields.io/pypi/v/fuga.svg)](https://pypi.python.org/pypi/fuga)\n[![CircleCI](https://circleci.com/gh/reproio/fuga.svg?style=svg)](https://circleci.com/gh/reproio/fuga)\n[![Documentation Status](https://readthedocs.org/projects/reproiofuga/badge/?version=latest)](https://reproiofuga.readthedocs.io/en/latest/?badge=latest)\n\nFuga is a toolset (and API wrappers) for Google Cloud Composer (Airflow),\nwhich allows Composer users to develop/deploy workflows easier and in\nmore organized way.\n\n## Quickstart\n\n### Install Requirements\n\n- [gcloud](https://cloud.google.com/sdk/docs/quickstarts)\n- Python 3+\n\nNote: pyenv always provides an entrypoint for both python2/3 and throw an\nerror when one doesn't actually exists, which makes gcloud cli crashes at its\nruntime. To prevent this, use something like `pyenv global 3.x.x 2.x.x` to\nprovide both python2/3 or `alias python2=python` to let your system choose\nwhere to route the command.\n\n### Install fuga (cli)\n\n```\n$ # (on your own machine)\n$ pip install fuga\n```\n\n### Install fuga templates\n\nFuga powers [cookiecutter](https://github.com/cookiecutter/cookiecuttering) to offer various\ntemplates/boilerplates for fuga experiments.\nYou need to install it to your environment before using fuga.\n\n```\n$ git clone git@github.com:reproio/fuga-cookiecutter-experiment-default.git \\\n ~/.cookiecutters/fuga-cookiecutter-experiment-default\n$ git clone git@github.com:reproio/fuga-cookiecutter-pod-operator-default.git \\\n ~/.cookiecutters/fuga-cookiecutter-pod-operator-default\n```\n\n### Create Cloud Composer Environment\n\nCreating new Cloud Composer Environment is not supported by the tool at\nthe moment.\n\n### Install fuga to Composer Environment\n\nYou need to install fuga to Compooser Environment if you want to use\nfuga airflow utilities.\n\n\n\n### Initialize Fuga environment\n\nFuga needs to know which GCP project and GCS bucket to use with it.\n`fuga environment init` command with let you choose one or create new for each.\n\n```\n$ fuga environment init\n# follow instructions\n```\n\n### Create your experiment\n\n```\n$ fuga experiment new my_experiment\n...\n```\n\n### Deploy your experiment\n\n```\n$ cd my_experiment\n$ fuga experiment deploy\n...\n```\n\n### (optional) Create your implementation for KubernetesPodOperator\n\nIf you want to use an operator with external dependency which is not\nable to be resolved using just PyPI packages, (e.g. MeCab) you may need\nto use KuberenetesPodOperator.\n\nFuga supports generating a scaffold for KuberenetesPodOperator and\ndeploy(and rollback(WIP)) it on Google Cloud Container Registry.\n\n```\n$ cd my_experiment\n$ fuga pod-operator new my_pod_operator\n...\n$ fuga pod-operator deploy my_pod_operator\n...\n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ayemos/fuga", "keywords": "fuga", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "fuga", "package_url": "https://pypi.org/project/fuga/", "platform": "", "project_url": "https://pypi.org/project/fuga/", "project_urls": { "Homepage": "https://github.com/ayemos/fuga" }, "release_url": "https://pypi.org/project/fuga/0.1.7/", "requires_dist": [ "Click (>=6.0)", "google-cloud-resource-manager (~=0.29.1)", "google-cloud-storage (~=1.18.0)", "cookiecutter (~=1.6.0)", "GitPython (~=2.1.11)", "pyyaml (~=4.2b1)", "docker (~=4.0.2)" ], "requires_python": "", "summary": "Fuga - Helper toolset for Google Cloud Cimposer", "version": "0.1.7" }, "last_serial": 5780013, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "cd1df5df3f8574de1d523ec84fec61d7", "sha256": "f56d08d133814530f992fb3e970e00bc22cd50e1b3ffe690e91138e989680fdd" }, "downloads": -1, "filename": "fuga-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cd1df5df3f8574de1d523ec84fec61d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18885, "upload_time": "2019-08-22T09:51:17", "url": "https://files.pythonhosted.org/packages/0d/ce/95473a12135b0ad381af8eb664bc933b17313a61ebfc9afe9a54fe27b52d/fuga-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "73701137bb241584d9efec1577e031d3", "sha256": "134c82b4f3d5eeea03a18797fd62608f982888b4950beee233dd893f7c88561c" }, "downloads": -1, "filename": "fuga-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "73701137bb241584d9efec1577e031d3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21131, "upload_time": "2019-08-26T08:53:51", "url": "https://files.pythonhosted.org/packages/89/a3/e3e2816370789bbf064767fd17a29c290a2bd218c3c91e361d86d738c3ff/fuga-0.1.2-py2.py3-none-any.whl" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "51ae4fbc5ed2f9a9ba19c1d4914fad81", "sha256": "c53f6849adcbda166e2bc7ea053fbdedc1eae8fc82e7ac8ba191bf882a6ac548" }, "downloads": -1, "filename": "fuga-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "51ae4fbc5ed2f9a9ba19c1d4914fad81", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21287, "upload_time": "2019-08-26T09:17:38", "url": "https://files.pythonhosted.org/packages/54/31/c1deb8e6380b6065b21cf4723932b5218682f518daf2471abc1c0d7c41c4/fuga-0.1.3-py2.py3-none-any.whl" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "bc8a680a178a409f28af5ab9704e5d05", "sha256": "ca81399fb82a6db97974609afd6cedd3d58e40104ae61fc9debdeb5ebc07489c" }, "downloads": -1, "filename": "fuga-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc8a680a178a409f28af5ab9704e5d05", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21325, "upload_time": "2019-08-29T05:14:09", "url": "https://files.pythonhosted.org/packages/c2/ad/a9582acd574e075db44608c41e738e65584bc9a718a06e2cb50d7c7d9b88/fuga-0.1.4-py2.py3-none-any.whl" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "a563d5af4735cbcd3630edbf3eaa192e", "sha256": "5b9046688f3382bde45841939438f647fcdb3547652052219aa7fee79a80399b" }, "downloads": -1, "filename": "fuga-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a563d5af4735cbcd3630edbf3eaa192e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20687, "upload_time": "2019-08-29T06:32:42", "url": "https://files.pythonhosted.org/packages/65/03/e7c22bb52da33142ec033a9ad662142efe265b6967fe1e3387f0e9393f77/fuga-0.1.5-py2.py3-none-any.whl" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "6100eb673341a28e95c67b1309a35559", "sha256": "b588052a1d4657eb329888dcdd46984188fecb7b35a8f94be69329322bdff357" }, "downloads": -1, "filename": "fuga-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6100eb673341a28e95c67b1309a35559", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20599, "upload_time": "2019-08-29T06:59:08", "url": "https://files.pythonhosted.org/packages/33/d2/f4ccdce76d2edb22006b7ba4c999fcf5f7d90dcc46c52770ee55b5fe00d3/fuga-0.1.6-py2.py3-none-any.whl" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "fe76ce8026feeae3d403eb08286fae43", "sha256": "ed4ce9735f8c75f334e94731afc6b6e14278117612c1525f8ab40a38f20809e4" }, "downloads": -1, "filename": "fuga-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe76ce8026feeae3d403eb08286fae43", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20884, "upload_time": "2019-09-04T08:34:50", "url": "https://files.pythonhosted.org/packages/58/6c/3d4e1cbf7017b6de800a0c7a3b413b9c4778b15e5acf2ddf1022e91c2f60/fuga-0.1.7-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fe76ce8026feeae3d403eb08286fae43", "sha256": "ed4ce9735f8c75f334e94731afc6b6e14278117612c1525f8ab40a38f20809e4" }, "downloads": -1, "filename": "fuga-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe76ce8026feeae3d403eb08286fae43", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20884, "upload_time": "2019-09-04T08:34:50", "url": "https://files.pythonhosted.org/packages/58/6c/3d4e1cbf7017b6de800a0c7a3b413b9c4778b15e5acf2ddf1022e91c2f60/fuga-0.1.7-py2.py3-none-any.whl" } ] }