{ "info": { "author": "Mikul\u00e1\u0161 Poul", "author_email": "mikulaspoul@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Security", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Version Control :: Git", "Topic :: Utilities" ], "description": "Arca\n====\n\n.. image:: https://img.shields.io/travis/mikicz/arca.svg\n :target: https://travis-ci.org/mikicz/arca\n\n.. image:: https://img.shields.io/codecov/c/github/mikicz/arca.svg\n :target: https://codecov.io/gh/mikicz/arca\n\n.. image:: https://img.shields.io/pypi/v/arca.svg\n :target: https://pypi.org/project/arca/\n\n.. image:: https://img.shields.io/github/license/mikicz/arca.svg?style=flat\n :target: https://github.com/mikicz/arca/blob/master/LICENSE\n\n.. image:: https://img.shields.io/readthedocs/arca.svg\n :target: https://arca.readthedocs.io/\n\nArca is a library for running Python functions (callables) from git repositories in various states of isolation.\nArca can also cache the results of these callables using `dogpile.cache `_.\n\nGetting started\n***************\n\nGlossary\n++++++++\n\n* **Arca** - name of the library. When written as ``Arca``, the main interface class is being referenced.\n* **Task** - definition of the function (callable), consists of a reference to the object and arguments.\n* **Backend** - a way of running tasks.\n\nInstallation\n++++++++++++\n\nRequirements\n------------\n\n* Python >= 3.6\n\nRequirements for certain backends:\n\n* `Pipenv `_ (for certain usecases in `Virtualenv Backend `_)\n* `Docker `_ (for `Docker Backend `_\n and `Vagrant Backend `_)\n* `Vagrant `_ (for the `Vagrant Backend `_)\n\nInstallation\n------------\n\nTo install the last stable version:\n\n.. code-block:: bash\n\n python -m pip install arca\n\nIf you want to use the Docker backend:\n\n.. code-block:: bash\n\n python -m pip install arca[docker]\n\nOr if you want to use the Vagrant backend:\n\n.. code-block:: bash\n\n python -m pip install arca[vagrant]\n\nOr if you wish to install the upstream version:\n\n.. code-block:: bash\n\n python -m pip install git+https://github.com/mikicz/arca.git#egg=arca\n python -m pip install git+https://github.com/mikicz/arca.git#egg=arca[docker]\n python -m pip install git+https://github.com/mikicz/arca.git#egg=arca[vagrant]\n\nExample\n+++++++\n\nTo run a Hello World example you'll only need the ``arca.Arca`` and ``arca.Task`` classes.\n``Task`` is used for defining the task that's supposed to be run in the repositories.\n``Arca`` takes care of all the settings and provides the basic API for running the tasks.\n\nLet's say we have the following file, called ``hello_world.py``,\nin a repository ``https://example.com/hello_word.git``, on branch ``master``.\n\n.. code-block:: python\n\n def say_hello():\n return \"Hello World!\"\n\nTo call the function using Arca, the following example would do so:\n\n.. code-block:: python\n\n from arca import Arca, Task\n\n task = Task(\"hello_world:say_hello\")\n arca = Arca()\n\n result = arca.run(\"https://example.com/hello_word.git\", \"master\", task)\n print(result.output)\n\nThe code would print ``Hello World!``.\n``result`` would be a ``arca.Result`` instance. ``arca.Result`` has three attributes,\n``output`` with the return value of the function call, ``stdout`` and ``stderr`` contain things printed to the standard outputs\n(see the section about `Result `_ for more info about the capture of the standard outputs).\nIf the task fails, ``arca.exceptions.BuildError`` would be raised.\n\nBy default, the `Current Environment Backend `_ is used to run tasks,\nwhich uses the current Python, launching the code in a subprocess. You can learn about backends `here `_.\n\nFurther reading\n***************\n\nYou can read the full documentation on `Read The Docs `_.\n\nRunning tests\n**************\n\nTo run tests you'll need the optional requirements, Docker and Vagrant. Once you have them and they can be used by\nthe current user you just need to run:\n\n.. code-block:: bash\n\n python setup.py test\n\nThis will launch the tests and a PEP8 check. The tests will take some time since building the custom\ndocker images is also tested and vagrant, in general, takes a long time to set up.\n\nContributing\n************\n\nContributions are welcomed! Feel free to open a issue or submit a pull request on `GitHub `_!\n\n\n\nChanges\n=======\n\n0.3.1 (2018-11-16)\n******************\n\nRaising a Arca exception when building of a Docker image fails. (`#56 `_, `#57 `_)\n\n0.3.0 (2018-08-25)\n******************\n\nChanges\n * Removed CurrentEnvironmentBackend's capability to process requirements - all requirements are ignored. (**BACKWARDS INCOMPATIBLE**)\n * Added support for installing requirements using `Pipenv `_.\n The directory containing ``Pipfile`` and ``Pipfile.lock`` is set by the backend option **pipfile_location**, by default the root of the repository is selected.\n The Pipenv files take precedence over regular requirement files.\n * The ``Result`` class now has two more attributes, ``stdout`` and ``stderr`` with the outputs of launched tasks to standard output and error.\n Priting is therefore now allowed in the endpoints.\n * Using UTF-8 locale in Docker images used in ``DockerBackend``.\n * Supporting Python 3.7.\n\n0.2.1 (2018-06-11)\n******************\n\nUpdated dogpile.cache to 0.6.5, enabling compatability with Python 3.7.\nUpdated the Docker backend to be able to run on Python betas.\n\n0.2.0 (2018-05-09)\n******************\n\nThis release has multiple backwards incompatible changes against the previous release.\n\nChanges:\n * Using extras to install Docker and Vagrant dependencies\n\n * ``pip install arca[docker]`` or ``pip install arca[vagrant]`` has to be used\n\n * Automatically using cloned repositories as reference for newly cloned branches\n * Using Debian as the default base image in the Docker backend:\n\n * **apk_dependencies** changed to **apt_dependencies**, now installing using `apt-get`\n\n * Vagrant backend only creates one VM, instead of multiple -- see its documentation\n * Added timeout to tasks, 5 seconds by default. Can be set using the argument **timeout** for ``Task``.\n * Added timeout to installing requirements, 300 seconds by default. Can be set using the **requirements_timeout** configuration option for backends.\n\n0.1.1 (2018-04-23)\n******************\n\nUpdated gitpython to 2.1.9\n\n0.1.0 (2018-04-18)\n******************\n\nInitial release\n\nChanges:\n * Updated PyPI description and metadata\n\n0.1.0a0 (2018-04-13)\n********************\n\nInitial alfa release\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mikicz/arca", "keywords": "sandboxing,git,docker,vagrant", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "arca", "package_url": "https://pypi.org/project/arca/", "platform": "", "project_url": "https://pypi.org/project/arca/", "project_urls": { "CI": "https://travis-ci.org/mikicz/arca", "Documentation": "https://arca.readthedocs.io/", "Homepage": "https://github.com/mikicz/arca", "Test coverage": "https://codecov.io/gh/mikicz/arca" }, "release_url": "https://pypi.org/project/arca/0.3.1/", "requires_dist": [ "gitpython (==2.1.9)", "dogpile.cache (==0.6.5)", "requests", "entrypoints (>=0.2.3)", "cached-property", "docker (~=3.2.1); extra == 'docker'", "docker (~=3.2.1); extra == 'vagrant'", "python-vagrant; extra == 'vagrant'", "fabric3; extra == 'vagrant'" ], "requires_python": "", "summary": "A library for running Python functions (callables) from git repositories in various states of isolation with integrating caching.", "version": "0.3.1" }, "last_serial": 4499971, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "b6beffcede9dd8ec78a750cd2f349827", "sha256": "71323b62d41857bd3b124257e67db194ff6bc9e9d529692cb58c6cccff7afc29" }, "downloads": -1, "filename": "arca-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b6beffcede9dd8ec78a750cd2f349827", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2725, "upload_time": "2017-09-24T18:57:16", "url": "https://files.pythonhosted.org/packages/eb/26/b7ebb7cd805cf2d1b106e129f18245d665ae841ab21877fed4a6456352b9/arca-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd7ed96161cb74cab5ca8d692682cb95", "sha256": "1614603819c79bc03acd4c43bd6ab115a5452ebad2d333ec7c70ebb1d0da141f" }, "downloads": -1, "filename": "arca-0.0.1.tar.gz", "has_sig": false, "md5_digest": "fd7ed96161cb74cab5ca8d692682cb95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2195, "upload_time": "2017-09-24T18:57:17", "url": "https://files.pythonhosted.org/packages/2e/fa/608f7f0af5ad1e1f3897e11445cb70c38576120a4f196b8de8c89e2dacd9/arca-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "a103527167de482c65c6ebaa0c6e43a1", "sha256": "821dc5a596c2bf1b74050b105d4421c799c79390683df0a2e58b0101d8c7a52e" }, "downloads": -1, "filename": "arca-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a103527167de482c65c6ebaa0c6e43a1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30537, "upload_time": "2018-04-18T07:29:15", "url": "https://files.pythonhosted.org/packages/ce/83/fd56a6b90600c10a13b2c698e7fcaf1f5ed5da0c84cb14c3dc4cef6d1157/arca-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d873b52f55348b3cb9d5ec4c81aecfe0", "sha256": "f14a70f17d61f471dd528bca3a08369eaedc57c1fa18d36d079c424310acc38f" }, "downloads": -1, "filename": "arca-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d873b52f55348b3cb9d5ec4c81aecfe0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27566, "upload_time": "2018-04-18T07:29:17", "url": "https://files.pythonhosted.org/packages/7c/fc/6dd056dfaec9ecd59180a5cb9ab4d1e6ca16d8b99a69b46510d66ee0ac44/arca-0.1.0.tar.gz" } ], "0.1.0a0": [ { "comment_text": "", "digests": { "md5": "519defba483c3bdb27386af44f1b929d", "sha256": "1bac784d39632bbbc428c33678f2045faa0379bc660e762747891db238e08ca9" }, "downloads": -1, "filename": "arca-0.1.0a0-py3-none-any.whl", "has_sig": false, "md5_digest": "519defba483c3bdb27386af44f1b929d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30613, "upload_time": "2018-04-13T15:20:17", "url": "https://files.pythonhosted.org/packages/34/7c/d47dac082796263ff131eb2b2d77c06f124a081aba62bcc2f3c15247a5d3/arca-0.1.0a0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc12b016fed385a9b8b6afb529a14458", "sha256": "83df7a890cba4b1361c46a25509871f190ed401192bdf48b6e03605dc9d0ddeb" }, "downloads": -1, "filename": "arca-0.1.0a0.tar.gz", "has_sig": false, "md5_digest": "fc12b016fed385a9b8b6afb529a14458", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27513, "upload_time": "2018-04-13T15:20:18", "url": "https://files.pythonhosted.org/packages/f4/f1/d55743006e7501397df9f4e83f7ae62455e20e9b0db1de3822f7cc02205a/arca-0.1.0a0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a58092c9842d956bab1c897401714599", "sha256": "32944783ab6951244ec8e917a96a84973a874b95b095a5dcca2495a1be0c3fc5" }, "downloads": -1, "filename": "arca-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a58092c9842d956bab1c897401714599", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 30555, "upload_time": "2018-04-23T07:36:02", "url": "https://files.pythonhosted.org/packages/71/0a/3f60a9cbb6ac27ab99ce7b90411e2acd7a1e425e79c81ae71ab3c078eef6/arca-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b08593d33db227ff8c8cd3ea60a1cef8", "sha256": "8ccb034176186c54cececfa4f593b76c5c88d355709378784ba44e51ad953ab5" }, "downloads": -1, "filename": "arca-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b08593d33db227ff8c8cd3ea60a1cef8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27565, "upload_time": "2018-04-23T07:36:04", "url": "https://files.pythonhosted.org/packages/14/f4/826a4da2dcaaad2cfad12f28e8fd3bb2fb9a83fb10697274158ecc4bff74/arca-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "28fd2ed0c4fae9c0cf81d91643f3be90", "sha256": "1e1e2e544fc3af8523043bab3d5f9819538a08a7f7f47475a796d974095fba6c" }, "downloads": -1, "filename": "arca-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "28fd2ed0c4fae9c0cf81d91643f3be90", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33407, "upload_time": "2018-05-09T14:46:57", "url": "https://files.pythonhosted.org/packages/b6/ef/d6b96b48545c69aef84366d767b9de6e60a5fbf4c574777e91f258140b97/arca-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f07d7eda7c8312ed3f7f717427496d47", "sha256": "976795c8b869cfc063477fdb4eddcbed74e96155cec494b65e0f2d8956fee249" }, "downloads": -1, "filename": "arca-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f07d7eda7c8312ed3f7f717427496d47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30525, "upload_time": "2018-05-09T14:46:58", "url": "https://files.pythonhosted.org/packages/15/cd/dfe298aa72efa709fcaf50a565e62dce0bfd29bd8d4f46efc74081f3bb97/arca-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "d353422442c942a6311b264f0d5464f5", "sha256": "5b7d3903ce0b1b42bc160b74107c1a7293600468e8dd90849d5f9351ffeb865d" }, "downloads": -1, "filename": "arca-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d353422442c942a6311b264f0d5464f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33429, "upload_time": "2018-06-11T18:57:17", "url": "https://files.pythonhosted.org/packages/14/35/1c87c73d8749115d38465c12823179d9c7c0e494ee4e869cf9ccc27b06e2/arca-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5314c64d9f9f01d573feef8b855f6faa", "sha256": "0f4b470f35cfebd93336dbb8699066b20ad3cf8ae755c9f48f5cd7e249cee361" }, "downloads": -1, "filename": "arca-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5314c64d9f9f01d573feef8b855f6faa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30632, "upload_time": "2018-06-11T18:57:19", "url": "https://files.pythonhosted.org/packages/2a/89/709f542e066ac46e4bd07e67e41c932d8d20bec33efc023a4422612a025c/arca-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "14162cb7875349b701cfdd7bb124d216", "sha256": "148f8fc29fb8460c590ec6bf29b2cafa94a7c2dda8f07bfe18ad853e134f7a22" }, "downloads": -1, "filename": "arca-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "14162cb7875349b701cfdd7bb124d216", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33157, "upload_time": "2018-08-25T19:09:39", "url": "https://files.pythonhosted.org/packages/62/45/90489417184bbbeadc465aa008e9aa2042576097b842c0335dbc55d927d3/arca-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9c32c6466ade32a92090382831af43f", "sha256": "97aeaa46af5e387d93dd24ed1c9378d8bad8a730897fc6a2d9f791e1bceeada3" }, "downloads": -1, "filename": "arca-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a9c32c6466ade32a92090382831af43f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31314, "upload_time": "2018-08-25T19:09:42", "url": "https://files.pythonhosted.org/packages/7d/a2/7d790facc0a63bb63f2d54ba354b575af09f118d7565bfb52154bab0c27a/arca-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "8f04394be08ca902934d428399b8d532", "sha256": "1d72d0b6f4ce180ebca4b0106a6d38ca5bbb1bd56da9882b45259a0f5ce33be3" }, "downloads": -1, "filename": "arca-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8f04394be08ca902934d428399b8d532", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34079, "upload_time": "2018-11-16T12:07:02", "url": "https://files.pythonhosted.org/packages/7a/eb/229e911c93063c63eb4091601313eeb4efd713f2ee915641fc92bf145c09/arca-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2043694cf7b5296cd4f725c88df7d5d6", "sha256": "409ef820c1b8fb957cfaec928644ec51222ea590a208ac2c33e69988ed75b1f9" }, "downloads": -1, "filename": "arca-0.3.1.tar.gz", "has_sig": false, "md5_digest": "2043694cf7b5296cd4f725c88df7d5d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31585, "upload_time": "2018-11-16T12:07:04", "url": "https://files.pythonhosted.org/packages/65/4e/c6f30b6c9856443137326887a8251c934f492b53cbc2481a0ce68066e0f9/arca-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8f04394be08ca902934d428399b8d532", "sha256": "1d72d0b6f4ce180ebca4b0106a6d38ca5bbb1bd56da9882b45259a0f5ce33be3" }, "downloads": -1, "filename": "arca-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8f04394be08ca902934d428399b8d532", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34079, "upload_time": "2018-11-16T12:07:02", "url": "https://files.pythonhosted.org/packages/7a/eb/229e911c93063c63eb4091601313eeb4efd713f2ee915641fc92bf145c09/arca-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2043694cf7b5296cd4f725c88df7d5d6", "sha256": "409ef820c1b8fb957cfaec928644ec51222ea590a208ac2c33e69988ed75b1f9" }, "downloads": -1, "filename": "arca-0.3.1.tar.gz", "has_sig": false, "md5_digest": "2043694cf7b5296cd4f725c88df7d5d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31585, "upload_time": "2018-11-16T12:07:04", "url": "https://files.pythonhosted.org/packages/65/4e/c6f30b6c9856443137326887a8251c934f492b53cbc2481a0ce68066e0f9/arca-0.3.1.tar.gz" } ] }