{ "info": { "author": "James Elford", "author_email": "james.p.elford@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "ferret\n======\n\npython, but with running.\n\n``ferret`` provides a new shebang line for your python script that will install dependencies into a fresh ``venv`` - saving you the hassle of packaging and distribution. ``ferret`` lets you focus on writing just the code you need without sacrificing libraries.\n\nusage\n-----\n\n* Install ``ferret`` on the target environment:\n\n.. code-block:: shell\n\n pip install ferret # Warning: this will work with a python3 venv, but not a virtualenv (as used by pipsi)\n\n* Replace your shebang line with this:\n\n.. code-block:: shell\n\n #! /usr/bin/env ferret\n\n* Declare your dependencies in your module's docstring:\n\n.. code-block:: python\n\n \"\"\"\n A helpful description about your module\n\n ferret:\n - requests == 2.18.4\n \"\"\"\n\n\nWhen you run a script with ``ferret``, it parses the file for dependency declarations, and prepares a ``venv`` to match. The environments are kept under ``~/.local/ferret/venvs`` (you can safely delete the entire contents of that folder).\n \nexample\n-------\n\nOnce you've installed ``ferret``, take it for a spin:\n\n.. code-block:: python\n\n cat > just_a_script.py << EOF\n #! /usr/bin/env ferret\n \"\"\"\n Gets my IP from icanhazip.com\n\n ferret:\n - requests == 2.18.4\n\n \"\"\"\n\n import requests\n\n response = requests.get('http://icanhazip.com')\n response.raise_for_status()\n print(response.text())\n EOF\n chmod +x just_a_script.py\n ./just_a_script.py\n\n\nThe first time you run the script, ``ferret`` will set up a ``venv`` and install ``requests`` in it. Subsequent runs will re-use that environment.\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/jelford/ferret", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ferret", "package_url": "https://pypi.org/project/ferret/", "platform": "", "project_url": "https://pypi.org/project/ferret/", "project_urls": { "Homepage": "https://github.com/jelford/ferret" }, "release_url": "https://pypi.org/project/ferret/0.8.0/", "requires_dist": null, "requires_python": "~=3.6", "summary": "a snake that runs. execute python files without packaging or installation", "version": "0.8.0" }, "last_serial": 4275459, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "64f45b7ba0b7322ee551a5c5b1bad73b", "sha256": "90ab0f6abef7b05b2c7606e0a83aa24e6fb8d1cb9c51d6572fd306336f48c741" }, "downloads": -1, "filename": "ferret-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "64f45b7ba0b7322ee551a5c5b1bad73b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6161, "upload_time": "2018-01-21T16:16:14", "url": "https://files.pythonhosted.org/packages/60/c8/2ce6bdfbd4c3624d412a06b7248e7085c13c21d3385f7e3c7c4e67388e05/ferret-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62643ab9eb248f10ae24707e40d88da2", "sha256": "29ad56443931d89b2bf104ed25ed4747335b2fe13141d3408c635690e923f044" }, "downloads": -1, "filename": "ferret-0.1.0.tar.gz", "has_sig": false, "md5_digest": "62643ab9eb248f10ae24707e40d88da2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3098, "upload_time": "2018-01-21T16:16:30", "url": "https://files.pythonhosted.org/packages/2a/e8/1269e493b9fe5e998a3a4f2313f1810e3aa5219630e1362a6d9e8e48c069/ferret-0.1.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "82e019e139bfe08695fb3a315ba61835", "sha256": "104cfe0ffea763bf46ddcfff10d2560197f171e8e888e17f695c18d3f7c8769c" }, "downloads": -1, "filename": "ferret-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "82e019e139bfe08695fb3a315ba61835", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6960, "upload_time": "2018-01-21T16:28:29", "url": "https://files.pythonhosted.org/packages/db/95/c8dc383b22d75dbf6bef8fa98a58cd385c93b3565d63d294e4d9f0366677/ferret-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b74c744e5ca1eec0ea1c28ae8649159", "sha256": "0f6dabb91124c1a8ef63aad0d05c837bf1d06b9981750271e6a5db5c82a83d63" }, "downloads": -1, "filename": "ferret-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4b74c744e5ca1eec0ea1c28ae8649159", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 3797, "upload_time": "2018-01-21T16:28:42", "url": "https://files.pythonhosted.org/packages/50/02/cc6b02942a6589fbf2eda58fb729be5ca7dda539792363de02024f74eab1/ferret-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "7b790da551fbc3d9c599a04124862ae1", "sha256": "7f832ed09e30747b92b355ab3d084e94da3377afb5bcebc5b3c0d11a955e046e" }, "downloads": -1, "filename": "ferret-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7b790da551fbc3d9c599a04124862ae1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6960, "upload_time": "2018-01-21T16:38:15", "url": "https://files.pythonhosted.org/packages/bf/d0/82c089b96835e342e95fcfb7a7645f925638232b04773aa60913800c7407/ferret-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39cf2dda31dc672cb85984204517890b", "sha256": "2381935671c7e508f6ad7b59ff534516d6abbe2702b6b8637121dbd1c5a8f58d" }, "downloads": -1, "filename": "ferret-0.4.0.tar.gz", "has_sig": false, "md5_digest": "39cf2dda31dc672cb85984204517890b", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 3796, "upload_time": "2018-01-21T16:38:18", "url": "https://files.pythonhosted.org/packages/aa/fa/b464ce6f4e0e12b9058b6867c5336524ca5692ab11eeb3c6398119a91624/ferret-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "a58bedca7873c0b35cf1f1fd3489deb2", "sha256": "e2642ae53fa4f1926d31fad44f85a7e7c1c069246a4cf6929e7f86203a5e1f0e" }, "downloads": -1, "filename": "ferret-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a58bedca7873c0b35cf1f1fd3489deb2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6964, "upload_time": "2018-01-21T16:42:09", "url": "https://files.pythonhosted.org/packages/2e/d1/de259c47dc9595f2b6621edca4f0706234aaeaf98759eadd0221227127f6/ferret-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73fcc0acce11edbc57dab3d669cd4033", "sha256": "248da7a87dffa01d1fa52b70e8d765d4ce13879fa3f77cf030e83c2ff439ec71" }, "downloads": -1, "filename": "ferret-0.4.1.tar.gz", "has_sig": false, "md5_digest": "73fcc0acce11edbc57dab3d669cd4033", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 3805, "upload_time": "2018-01-21T16:42:12", "url": "https://files.pythonhosted.org/packages/65/96/f45e5e4da559499a9150518764bba28413b31ba8fc55be9d054ba613d757/ferret-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "f0b3a8c0855007daa8eb483c2aac1cf2", "sha256": "e5f81c356f6f6e474ecf0ca15d0d07ce3ba8f57939e491477d5793ffd61dca48" }, "downloads": -1, "filename": "ferret-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f0b3a8c0855007daa8eb483c2aac1cf2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6959, "upload_time": "2018-01-21T16:54:12", "url": "https://files.pythonhosted.org/packages/35/6e/558e979a915a89afb108f0846dd30d8ffb40e77d3f77143ea16e2163669e/ferret-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "765aff240ffec1cc9182de51ed04d901", "sha256": "7b5b52d9dbead9600b3ae598d215790a32ecff10091f29d65651b9bc65d0bbb8" }, "downloads": -1, "filename": "ferret-0.4.2.tar.gz", "has_sig": false, "md5_digest": "765aff240ffec1cc9182de51ed04d901", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 3812, "upload_time": "2018-01-21T16:54:17", "url": "https://files.pythonhosted.org/packages/56/17/b5626d0f9426046211e248bd731235225938cf7fa35d58850f5c58c1f267/ferret-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "a23edf081e8c393a512a22bbe2b6eaaf", "sha256": "ecfe46313c57213b00b90911bd64d0e3e92dc85428003043e0e729f300c2e7c9" }, "downloads": -1, "filename": "ferret-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a23edf081e8c393a512a22bbe2b6eaaf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6987, "upload_time": "2018-02-18T16:41:03", "url": "https://files.pythonhosted.org/packages/d3/48/24f472cee416b1eb2db9e8b3f5492861e3952f8aa07ab77fe4ed919c110e/ferret-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1fbb821bbb01a90dd6a2c6fe3f19cc32", "sha256": "8aa6e497c016913d5edbec4dba2e85ff0952bcf47c2bab8332b4d1f763004ea1" }, "downloads": -1, "filename": "ferret-0.5.0.tar.gz", "has_sig": false, "md5_digest": "1fbb821bbb01a90dd6a2c6fe3f19cc32", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 4101, "upload_time": "2018-02-18T16:41:17", "url": "https://files.pythonhosted.org/packages/38/7c/bcbe46dda0762fa48cd4b32cf8005bb2f668d8324aec35ff14e0c086b548/ferret-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "b5a400e0d6217c7ed0e4df6ce89d0b3b", "sha256": "86b5fe8141765bca9f789e6011987a1829dfe8cd9bd0bc6aa054668d9a8f6743" }, "downloads": -1, "filename": "ferret-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b5a400e0d6217c7ed0e4df6ce89d0b3b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6986, "upload_time": "2018-09-15T19:49:34", "url": "https://files.pythonhosted.org/packages/28/00/a415c1c53b9c76e98a8dfe436498c883b6a09df29ae65e3dc20d888205f0/ferret-0.6.0-py3-none-any.whl" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "ae3ffad1b7938d49af7114fcf015e64a", "sha256": "a916f1eb72fd53e247d252f734a513d81e5bfb1f2af2299d0401d4a6c0cb8b86" }, "downloads": -1, "filename": "ferret-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ae3ffad1b7938d49af7114fcf015e64a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6987, "upload_time": "2018-09-15T19:51:18", "url": "https://files.pythonhosted.org/packages/37/97/67296036e6af8578a2a4580648c854e750ea441071c2112f32f6184158f4/ferret-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bd722577ac7711e519e61ae3e474ec2", "sha256": "c683645807290d355ff8e80fe686726d0e80df87c41de8c0d7a1bac19200a88b" }, "downloads": -1, "filename": "ferret-0.8.0.tar.gz", "has_sig": false, "md5_digest": "8bd722577ac7711e519e61ae3e474ec2", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 3839, "upload_time": "2018-09-15T19:51:25", "url": "https://files.pythonhosted.org/packages/15/91/4d60c00d838ad247ad2772fdae163e38b0b527ad57e5a89dfa8363ff41de/ferret-0.8.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ae3ffad1b7938d49af7114fcf015e64a", "sha256": "a916f1eb72fd53e247d252f734a513d81e5bfb1f2af2299d0401d4a6c0cb8b86" }, "downloads": -1, "filename": "ferret-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ae3ffad1b7938d49af7114fcf015e64a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "~=3.6", "size": 6987, "upload_time": "2018-09-15T19:51:18", "url": "https://files.pythonhosted.org/packages/37/97/67296036e6af8578a2a4580648c854e750ea441071c2112f32f6184158f4/ferret-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bd722577ac7711e519e61ae3e474ec2", "sha256": "c683645807290d355ff8e80fe686726d0e80df87c41de8c0d7a1bac19200a88b" }, "downloads": -1, "filename": "ferret-0.8.0.tar.gz", "has_sig": false, "md5_digest": "8bd722577ac7711e519e61ae3e474ec2", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 3839, "upload_time": "2018-09-15T19:51:25", "url": "https://files.pythonhosted.org/packages/15/91/4d60c00d838ad247ad2772fdae163e38b0b527ad57e5a89dfa8363ff41de/ferret-0.8.0.tar.gz" } ] }