{ "info": { "author": "Hunter Senft-Grupp", "author_email": "huntcsg@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: System :: Monitoring" ], "description": "# Airflow Docker Helper\n[![CircleCI](https://circleci.com/gh/huntcsg/airflow-docker-helper/tree/master.svg?style=svg)](https://circleci.com/gh/huntcsg/airflow-docker-helper/tree/master) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/3e2f177d8c314f43903fe9d9b7af0647)](https://www.codacy.com/app/fool.of.god/airflow-docker-helper?utm_source=github.com&utm_medium=referral&utm_content=huntcsg/airflow-docker-helper&utm_campaign=Badge_Grade) [![codecov](https://codecov.io/gh/huntcsg/airflow-docker-helper/branch/master/graph/badge.svg)](https://codecov.io/gh/huntcsg/airflow-docker-helper)\n\n## Description\nA light sdk to be used by the operators in airflow-docker and in task code to participate in host/container communication.\n\n## Installation\n\n```bash\npip install airflow-docker-helper\n```\n\n## Usage\n\n### Sensor\n```python\nfrom airflow_docker_helper import client\n\nif sensed:\n client.sensor(True)\nelse:\n client.sensor(False)\n```\n\n### Short Circuit\n\n```python\nfrom airflow_docker_helper import client\n\nif should_short_circuit:\n client.short_circuit()\n```\n\n### Branching\n\nYou can pass a list...\n```python\nfrom airflow_docker_helper import client\n\nbranch_to_task_ids = ['foo', 'bar']\n\nclient.branch_to_tasks(branch_to_task_ids)\n\n```\n\n... or a string.\n```python\nfrom airflow_docker_helper import client\n\nclient.branch_to_tasks('some-other-task')\n\n```\n\n### Testing\n\nThis library ships with a test client that mocks out all io and filesystem calls. This client \nalso provides all of the relevant mocked out files to allow for assertions around the io.\n\nSome higher level assertions are provided. These assertions are based on the lower level file mocks.\n\n```python\nfrom airflow_docker_helper.testing import test_client\nclient = test_client()\nclient.assert_not_short_circuited() # Passes\n\nclient.short_circuit()\nclient.assert_short_circuited() # Passes\n\nclient.sensor(True)\n\nclient.assert_sensor_called_with(True) # Passes\nclient.assert_sensor_called_with(False) # Fails\n\nclient.assert_branched_to_tasks([]) # Passes\n\nclient.branch_to_tasks(['foo', 'bar'])\nclient.assert_branched_to_tasks(['bar', 'foo']) # Passes\n\n```\n\nFor power users, the mocks may be used directly:\n\n```python\n>>> from airflow_docker_helper.testing import test_client\n>>> client = test_client()\n>>> client.branch_to_tasks(['foo', 'bar'])\n>>> client._mock_branch_to_tasks_file.mock_calls\n[call('./__AIRFLOW_META__/branch_operator.txt', 'wb'),\n call().__enter__(),\n call().write(b'[\"foo\", \"bar\"]'),\n call().__exit__(None, None, None)]\n>>> client.short_circuit()\n>>> client._mock_short_circuit_file.mock_calls\n[call('./__AIRFLOW_META__/short_circuit.txt', 'wb'),\n call().__enter__(),\n call().write(b'false'),\n call().__exit__(None, None, None)]\n>>> client.sensor(True)\n>>> client._mock_sensor_file.mock_calls\n[call('./__AIRFLOW_META__/sensor.txt', 'wb'),\n call().__enter__(),\n call().write(b'true'),\n call().__exit__(None, None, None)] \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/huntcsg/airflow-docker-helper", "keywords": "airflow docker", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "airflow-docker-helper", "package_url": "https://pypi.org/project/airflow-docker-helper/", "platform": "", "project_url": "https://pypi.org/project/airflow-docker-helper/", "project_urls": { "Homepage": "https://github.com/huntcsg/airflow-docker-helper" }, "release_url": "https://pypi.org/project/airflow-docker-helper/0.2.0/", "requires_dist": [ "sphinx; extra == 'docs'", "sphinx-rtd-theme; extra == 'docs'", "isort; extra == 'linting'", "black; extra == 'linting'", "bumpversion; extra == 'linting'", "flake8; extra == 'linting'", "pytest; extra == 'testing'", "pytest-cov; extra == 'testing'", "mock; (python_version < \"3\") and extra == 'testing'" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "summary": "A light sdk to be used by the operators in airflow-docker and in task code to participate in host/container communication.", "version": "0.2.0" }, "last_serial": 5092622, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "f9553ef2b19a482e51f1fac1875c180b", "sha256": "8afc7da54242ab6e1a55048ac42c06166f71ede11e5aaca53f24d031977d949b" }, "downloads": -1, "filename": "airflow_docker_helper-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f9553ef2b19a482e51f1fac1875c180b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 11465, "upload_time": "2019-02-24T05:20:15", "url": "https://files.pythonhosted.org/packages/26/b3/7a0b6f3f6d7aea7045688ac0b6a7e1ab084968f5f11fa908d72ecf0d66d7/airflow_docker_helper-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "145ab87d86214b9498611c293169178b", "sha256": "f85015a200fda2ed410eeeccbb4b0bb4dac4057554b7569626b17a3ddc0ef384" }, "downloads": -1, "filename": "airflow-docker-helper-0.1.1.tar.gz", "has_sig": false, "md5_digest": "145ab87d86214b9498611c293169178b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 6634, "upload_time": "2019-02-24T05:20:17", "url": "https://files.pythonhosted.org/packages/ea/bf/7c5f42873740e8995aac4e06d6cc0c32a798d620947f6291fc18bf93aa6b/airflow-docker-helper-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "afb9e4f3d5a1572825e067e108d9b2bf", "sha256": "111bd153d2d10e83c6c17e7acffb1cdd44bf041cfbe3a21c2c9f767aa20995c2" }, "downloads": -1, "filename": "airflow_docker_helper-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "afb9e4f3d5a1572825e067e108d9b2bf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 7341, "upload_time": "2019-02-25T01:46:43", "url": "https://files.pythonhosted.org/packages/b6/90/c345787d1b05e30613fb9a89dccd6d65edd7cdc1a8f85874add6cad13f0b/airflow_docker_helper-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8132fea949c1a65b21472f878a4e63bf", "sha256": "b1a2ec8fc1fec33c2fc720edaaf8fbc201df07e8c1391f302fafd8e227708867" }, "downloads": -1, "filename": "airflow-docker-helper-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8132fea949c1a65b21472f878a4e63bf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 6039, "upload_time": "2019-02-25T01:46:44", "url": "https://files.pythonhosted.org/packages/5e/7f/5dcb0720ca6636176fe33b3e18af2dfcbe55f554e44f2d2ab4eaa41e2551/airflow-docker-helper-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c42045ad5d0d96874aadb01c9ef2eead", "sha256": "8f932e9e9ae6d7d21f87a43f3193a281b13ae8bdb5f3d837195f122db7aa834c" }, "downloads": -1, "filename": "airflow_docker_helper-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c42045ad5d0d96874aadb01c9ef2eead", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 7361, "upload_time": "2019-02-25T02:20:20", "url": "https://files.pythonhosted.org/packages/73/dd/8496fd4ea8f6b8d9fdb24b5492070961a62fe779ae866583a68f603c7ec9/airflow_docker_helper-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87ea2f95d5087f8ac4588e705eeba2c6", "sha256": "2968cb212dca08b9321e26193b788e660807c026ff838a5cdd8239d0f611f8ed" }, "downloads": -1, "filename": "airflow-docker-helper-0.1.3.tar.gz", "has_sig": false, "md5_digest": "87ea2f95d5087f8ac4588e705eeba2c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 6555, "upload_time": "2019-02-25T02:20:22", "url": "https://files.pythonhosted.org/packages/8f/56/255c770a23b889f0ff73a2dca359fde668dd6bdaf4ed23505aaed1b8fefc/airflow-docker-helper-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6765d607ab4e87c0fb6b1f1639854cbe", "sha256": "248ce1f7bed8b59bd6fdb211fdb6802e48e01b3a62497bd1ca6855521e3d7363" }, "downloads": -1, "filename": "airflow_docker_helper-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6765d607ab4e87c0fb6b1f1639854cbe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 8427, "upload_time": "2019-04-03T19:24:32", "url": "https://files.pythonhosted.org/packages/20/5e/6a96c14637ada486fcd080ce31844453137f86381b81e898a7d30f70af70/airflow_docker_helper-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f3c3cc71814dc85555375710a40e5ba2", "sha256": "ecfb25966eca750ab18042e9bad7060b3197868a895c27adc53364a827c2ece5" }, "downloads": -1, "filename": "airflow-docker-helper-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f3c3cc71814dc85555375710a40e5ba2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 8597, "upload_time": "2019-04-03T19:24:33", "url": "https://files.pythonhosted.org/packages/29/a5/93ec197ed56950de014e242b117bb5e02502445d3d7c48c7c91822fda845/airflow-docker-helper-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6765d607ab4e87c0fb6b1f1639854cbe", "sha256": "248ce1f7bed8b59bd6fdb211fdb6802e48e01b3a62497bd1ca6855521e3d7363" }, "downloads": -1, "filename": "airflow_docker_helper-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6765d607ab4e87c0fb6b1f1639854cbe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 8427, "upload_time": "2019-04-03T19:24:32", "url": "https://files.pythonhosted.org/packages/20/5e/6a96c14637ada486fcd080ce31844453137f86381b81e898a7d30f70af70/airflow_docker_helper-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f3c3cc71814dc85555375710a40e5ba2", "sha256": "ecfb25966eca750ab18042e9bad7060b3197868a895c27adc53364a827c2ece5" }, "downloads": -1, "filename": "airflow-docker-helper-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f3c3cc71814dc85555375710a40e5ba2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 8597, "upload_time": "2019-04-03T19:24:33", "url": "https://files.pythonhosted.org/packages/29/a5/93ec197ed56950de014e242b117bb5e02502445d3d7c48c7c91822fda845/airflow-docker-helper-0.2.0.tar.gz" } ] }