{ "info": { "author": "Stephan Fitzpatrick", "author_email": "knowsuchagency@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: Other/Proprietary License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Description\n\nThe `shell_utils` library provides some handy utilities for when you need to automate certain processes using shell commands.\n\nWhere you might otherwise write a bash script or muck around with the `subprocess`, `os`, and `sys` modules in a Python script `shell_utils` provides\nsome patterns and shortcuts for your automation scripts.\n\nLet's say we have a new project we need to automate some build process(es) for. We might be tempted to write a Makefile or bash\nscript(s) to help with that task. If that works for you, great. However, if you're like me, you prefer to python-all-the-things.\n\nWe can use shell-utils to create an automation script that will behave much the same way a Makefile would, but with all the\nPython goodness we want.\n\nSome familiarity with the `click` library will be helpful.\n\n```bash\npip3 install shell_utils\nshell_utils generate_runner\n```\n\nThis will produce an executable python script with the following code\n```python\n#!/usr/bin/env python3\nimport os\nfrom pathlib import Path\n\nfrom shell_utils import shell, cd, env, path, quiet\n\nimport click\n\n\n@click.group()\ndef main():\n \"\"\"\n Development tasks; programmatically generated\n \"\"\"\n\n # ensure we're running commands from project root\n\n root = Path(__file__).parent.absolute()\n cwd = Path().absolute()\n\n if root != cwd:\n click.secho(f'Navigating from {cwd} to {root}',\n fg='yellow')\n os.chdir(root)\n\n\nif __name__ == '__main__':\n main()\n```\n\nNow let's say that we're using sphinx to generate the documentation we have in our project's `docs` directory.\n\nIf we wanted to create a command that would re-generate our documentation and open a browser window when it's finished,\n\nwe could add the following code to our generated `run.py` script\n\n\n```python\n@main.command()\n@click.option('--no-browser', is_flag=True, help=\"Don't open browser after building docs.\")\ndef docs(no_browser):\n \"\"\"\n Generate Sphinx HTML documentation, including API docs.\n \"\"\"\n shell(\n \"\"\"\n rm -f docs/shell_utils.rst\n rm -f docs/modules.rst\n rm -rf docs/shell_utils*\n sphinx-apidoc -o docs/ shell_utils\n \"\"\"\n )\n\n with cd('docs'):\n shell('make clean')\n shell('make html')\n\n shell('cp -rf docs/_build/html/ public/')\n\n if no_browser:\n return\n\n shell('open public/index.html')\n```\n\nThen, we can execute the following command to do what we intended:\n\n`./run.py docs`\n\nThe strings sent to the `shell` function will be executed in a `bash` subprocess shell. Before they are executed,\nthe `shell` function will print the command to `stdout`, similar to a `Makefile`.\n\nAlso, notice we change directories into `docs` using a context manager, that way the commands passed to the `shell` function\nwill execute within that directory. Once we're out of the context manager's scope, further `shell` function commands are once-again run\nfrom the project root.\n\n# functions and context managers\n\n## shell\n\nExecutes the given command in a bash shell. It's just a thin wrapper around `subprocess.run` that adds a couple handy features,\nsuch as printing the command it's about to run before executing it.\n\n```python\nfrom shell_utils import shell\n\np1 = shell('echo hello, world')\n\nprint(p1)\n\np2 = shell('echo goodbye, cruel world', capture=True)\n\nprint('captured the string:', p2.stdout)\n```\n\n**outputs**\n\n```bash\nuser@hostname executing...\n\necho goodbye, cruel world\n\n\ncaptured the string: goodbye, cruel world\n```\n\n## cd\n\nTemporarily changes the current working directory while within the context scope.\n\nWithin a python shell...\n\n```python\nfrom shell_utils import shell, cd\n\nwith cd('~'):\n shell('echo $PWD')\n shell('mkdir -p foo')\n with cd('foo'):\n shell('echo $PWD')\n shell('echo $PWD')\n```\n\n**outputs**\n\n```bash\nuser@hostname executing...\n\necho $PWD\n\n/Users/user\n\n\nuser@hostname executing...\n\nmkdir -p foo\n\n\n\nuser@hostname executing...\n\necho $PWD\n\n/Users/user/foo\n\n\nuser@hostname executing...\n\necho $PWD\n\n/Users/user\n```\n\n## env\n\nTemporarily changes environment variables\n\n```python\nfrom shell_utils import env\nimport os\n\nprint(os.getenv('foo', 'nothing'))\n\nwith env(foo='bar'):\n print(os.getenv('foo'))\n\nprint(os.getenv('foo', 'nothing again'))\n```\n\n**outputs**\n\n```bash\nnothing\nbar\nnothing again\n```\n\n## path\n\nA special case of the `env` context manager that alters your $PATH. It expands `~` to your home directory and returns\nthe elements of the $PATH variable as a list.\n\n```python\nfrom shell_utils import path\nimport os\n\ndef print_path():\n print('$PATH ==', os.getenv('PATH'))\n\nprint_path()\n\nwith path('~', prepend=True) as plist:\n print_path()\n print(plist)\n```\n\n**outputs**\n\n```bash\n$PATH == /Users/user/.venvs/shell-utils-py3.7/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin\n$PATH == /Users/user:/Users/user/.venvs/shell-utils-py3.7/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin\n['/Users/user', '/Users/user/.venvs/shell-utils-py3.7/bin', '/usr/local/sbin', '/usr/local/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin', '/Library/TeX/texbin']\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/knowsuchagency/shell-utils", "keywords": "", "license": "BSD-4-Clause", "maintainer": "Stephan Fitzpatrick", "maintainer_email": "knowsuchagency@gmail.com", "name": "shell-utils", "package_url": "https://pypi.org/project/shell-utils/", "platform": "", "project_url": "https://pypi.org/project/shell-utils/", "project_urls": { "Homepage": "https://github.com/knowsuchagency/shell-utils" }, "release_url": "https://pypi.org/project/shell-utils/2.3.1/", "requires_dist": [ "click (>=6.7,<7.0)" ], "requires_python": "", "summary": "Shell automation tools, like Make on steroids.", "version": "2.3.1" }, "last_serial": 4250652, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "30eba1910672ad1acd1bf02b8653fc0c", "sha256": "cd29c709c162e3c8cc0af17449b6e38925e7486996362bb6e504787062c1ca04" }, "downloads": -1, "filename": "shell_utils-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "30eba1910672ad1acd1bf02b8653fc0c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8268, "upload_time": "2018-03-14T07:19:18", "url": "https://files.pythonhosted.org/packages/e2/d5/879285d2246cb30c27dcfe22ec8ddc1f316787bc8dac14267c32598a9eaa/shell_utils-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72581cf2148d74f57af6650e875c3e5e", "sha256": "212efd56453023b0b8ef6a8494e910c6d8faeced8c13d8969baabe65aba1834b" }, "downloads": -1, "filename": "shell-utils-0.1.0.tar.gz", "has_sig": false, "md5_digest": "72581cf2148d74f57af6650e875c3e5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8345012, "upload_time": "2018-03-14T07:20:08", "url": "https://files.pythonhosted.org/packages/61/87/72e85139ad87d8cf604bb250363dcb3d1b5f0c8f33daabb74a9c43aa39e6/shell-utils-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "0e957e8308957ddb1a950b4e5e437e37", "sha256": "f3c8ecfff0b86a533f8183d01e2116337936bf8ce2dc300cc883ca0e9f4427b0" }, "downloads": -1, "filename": "shell_utils-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0e957e8308957ddb1a950b4e5e437e37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8324, "upload_time": "2018-03-14T07:41:14", "url": "https://files.pythonhosted.org/packages/22/41/e1c9951bd83cc6b707f5e819b6ff220fc756c22028755c66282fbefc5635/shell_utils-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb7d70b1e958ce763deb4a83a7667602", "sha256": "706ab0492de5db8deab3e7b1beb0420ddc884e426717a0b946d053e44e490e54" }, "downloads": -1, "filename": "shell-utils-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fb7d70b1e958ce763deb4a83a7667602", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8346843, "upload_time": "2018-03-14T07:41:33", "url": "https://files.pythonhosted.org/packages/f6/cc/1af6694a8463b1b679eb7ce937b99eecea42fb36b4a75d76beb000f9d896/shell-utils-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e01ecfad89d6404f900398732b8c0823", "sha256": "1cfef5cf02d437232f9937abbb8740f0ca255423de1fe3ab1f8c3a4b7aa272cf" }, "downloads": -1, "filename": "shell_utils-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e01ecfad89d6404f900398732b8c0823", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8315, "upload_time": "2018-03-16T02:04:34", "url": "https://files.pythonhosted.org/packages/ba/67/09b1b084bc9c3e75cdfde1db98fb5676e8c5744cc94bbf13e744fe8eb0df/shell_utils-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ef3aad6d88077be55728b592c6b1854", "sha256": "3f8976414b6b8f77adae6cc66db2f8de8dc472c642f236923dc5c1a93c7ae7da" }, "downloads": -1, "filename": "shell-utils-0.2.0.tar.gz", "has_sig": false, "md5_digest": "5ef3aad6d88077be55728b592c6b1854", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8346963, "upload_time": "2018-03-16T02:04:42", "url": "https://files.pythonhosted.org/packages/32/8d/6b7a2c2e145c5a55d1b108ff426504addd4b068926cdd0061ea5482343e4/shell-utils-0.2.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3f43f9851e9c99a592af025a30a50528", "sha256": "ffca9e3e6f47bfaf08c3035ff2ef36aa4d3099aa4e7bf043b901b9b9c67bdd7a" }, "downloads": -1, "filename": "shell_utils-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3f43f9851e9c99a592af025a30a50528", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8344, "upload_time": "2018-04-11T22:24:58", "url": "https://files.pythonhosted.org/packages/14/39/36d83ec7b9fe14d2a50637215000b515d65b60c95abfee2b55eb558e1a39/shell_utils-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d2dea632dbeadf969261e85740bc2a7", "sha256": "27693a4297fbfc6c10cfde8147643f8af44d2f9ca1cb301a75b318b0aafc4eb8" }, "downloads": -1, "filename": "shell-utils-0.3.1.tar.gz", "has_sig": false, "md5_digest": "1d2dea632dbeadf969261e85740bc2a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8347294, "upload_time": "2018-04-11T22:25:09", "url": "https://files.pythonhosted.org/packages/66/f9/6e6db5840b9ba4482dcd3bf2509f7c8376f019ebf11297a88650abc2f08b/shell-utils-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "73f15cdd5182e3a9864e205b2fddf600", "sha256": "770f027ee63615cbf65305a2b7a7cd4b49af35abde2c47bb826d12efd5c91856" }, "downloads": -1, "filename": "shell_utils-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "73f15cdd5182e3a9864e205b2fddf600", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8382, "upload_time": "2018-04-12T00:01:02", "url": "https://files.pythonhosted.org/packages/8a/9c/d104f6cc4df3f922e27a746d2aba23e774ab7149187ab69921d56165ad42/shell_utils-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5e22e18d19593f7ef2a05f59bc10c7d", "sha256": "c5bcabf4ba393f9f157579b2a9ff3572a1ebb88e015962e68a81e48d7a4c4207" }, "downloads": -1, "filename": "shell-utils-0.3.2.tar.gz", "has_sig": false, "md5_digest": "a5e22e18d19593f7ef2a05f59bc10c7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8347500, "upload_time": "2018-04-12T00:01:07", "url": "https://files.pythonhosted.org/packages/f8/d7/df9187ae8dd9eee935894d434482d80383ec90e640cf3877ff8fca2083e4/shell-utils-0.3.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d2c516e87ca226b5c11e3fd79f4dfbbe", "sha256": "ff86588ee6a4855160665c94c52e0b48fe95be9843257d04d3d05049260b09cb" }, "downloads": -1, "filename": "shell_utils-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d2c516e87ca226b5c11e3fd79f4dfbbe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8781, "upload_time": "2018-04-25T01:30:56", "url": "https://files.pythonhosted.org/packages/e1/5c/62af21b71d05b6b6b26e8e3fe078ed3eb7659e41c4d3d6aa5ac9151d6697/shell_utils-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19ec08b1732103c4236fb83fd9ef3b1b", "sha256": "f1dbd3da374c6dc6043162375cc7d0b47518d9fde84597900ee717d0966d0123" }, "downloads": -1, "filename": "shell-utils-0.5.0.tar.gz", "has_sig": false, "md5_digest": "19ec08b1732103c4236fb83fd9ef3b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8348224, "upload_time": "2018-04-25T01:32:09", "url": "https://files.pythonhosted.org/packages/49/fd/0ea1e4c90c25d7a00cb2fd2d373dbbc5c6fc9cd3d9761fc4d0f9348d491b/shell-utils-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "18e84ac4b434d172c7e99d04769b33e1", "sha256": "859f020fad131987d8ea6ee2bf6c6791455b17a7a8308413f595bae1a3448c99" }, "downloads": -1, "filename": "shell_utils-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "18e84ac4b434d172c7e99d04769b33e1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10356, "upload_time": "2018-08-05T05:54:03", "url": "https://files.pythonhosted.org/packages/37/8a/8e8a4d1ffca14801ea2a2c0cc05cc6d20cd536b91ef138dbc0576748a597/shell_utils-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f438acae3e82e2019f4e108a401d9f8", "sha256": "da81da31cae92ea46aaca0a36aae5c6e4384d93324c20343e6950884d9c8db47" }, "downloads": -1, "filename": "shell_utils-0.6.0.tar.gz", "has_sig": false, "md5_digest": "8f438acae3e82e2019f4e108a401d9f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4325, "upload_time": "2018-08-05T05:54:05", "url": "https://files.pythonhosted.org/packages/1d/81/352f68d5be61ace6c564c0a4a9afbedc128ee6831953df2f88d164d20fff/shell_utils-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "01764d85078ade27a05de71d7674e3a6", "sha256": "3feab84c5c866d6a5ef143c8d2937dc2ee9c746778d64a4dcdc66a0940e77912" }, "downloads": -1, "filename": "shell_utils-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "01764d85078ade27a05de71d7674e3a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12487, "upload_time": "2018-08-10T20:55:02", "url": "https://files.pythonhosted.org/packages/fd/05/dc365d11e8b427d435df93639d1aa4661599127765cdb55a66f8d6712ecf/shell_utils-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63188ca8936f195207dc33423c6eb727", "sha256": "e11f7f2a9e7858f3ccee9d387a6ad1478f61bac1d80fdb7d0023a600190c428e" }, "downloads": -1, "filename": "shell_utils-0.6.1.tar.gz", "has_sig": false, "md5_digest": "63188ca8936f195207dc33423c6eb727", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6754, "upload_time": "2018-08-10T20:55:03", "url": "https://files.pythonhosted.org/packages/cb/ea/06891634871382f05b32ae5eacbf327dcabd7efe209263b9b85f9390b748/shell_utils-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "0d17229ce436e31b300f60774bd99bc4", "sha256": "7a8976878da921d8ad1241181931818cf5a06b6a49bb719c216e6826326f05af" }, "downloads": -1, "filename": "shell_utils-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0d17229ce436e31b300f60774bd99bc4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12431, "upload_time": "2018-08-10T21:05:23", "url": "https://files.pythonhosted.org/packages/dc/04/6935fcf4fb614d791b628e1a8d18f8a60fcd0817b0669e8a54817be25a31/shell_utils-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2832d21fde569b511bf2b2ff6d712891", "sha256": "758972fe442cb385a7047dfc2b8dae212ef7894b1737aa46b545aa1250a8962c" }, "downloads": -1, "filename": "shell_utils-0.6.2.tar.gz", "has_sig": false, "md5_digest": "2832d21fde569b511bf2b2ff6d712891", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6742, "upload_time": "2018-08-10T21:05:24", "url": "https://files.pythonhosted.org/packages/61/13/f9692d1495503095a6e77854884f09fdf23ddc2aa5569c344eea3f640626/shell_utils-0.6.2.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "72d28ee836a06c7721dd688a8746b81c", "sha256": "1c2b64980107c038d293c48957a1b759ab8a9d9e43c6e4ded54d0e934176935b" }, "downloads": -1, "filename": "shell_utils-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "72d28ee836a06c7721dd688a8746b81c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12606, "upload_time": "2018-08-10T22:56:04", "url": "https://files.pythonhosted.org/packages/b8/fa/21887d486a99c25c9f28d84c7809a86174894d66d9046202ec5dc7fe2875/shell_utils-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "113a81f6171c65d0c1198731063a0350", "sha256": "1fee252f7f94948862bbd66b6ef8d15f9e3aba30a93a57f7d6ecc0d2e368d766" }, "downloads": -1, "filename": "shell_utils-0.7.0.tar.gz", "has_sig": false, "md5_digest": "113a81f6171c65d0c1198731063a0350", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6911, "upload_time": "2018-08-10T22:56:05", "url": "https://files.pythonhosted.org/packages/d3/ec/27838ba400c34b3e34f702c45bfd71f38ca471febf40e86113efba8f7e5b/shell_utils-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "2742da9132cf5325720110c119509e73", "sha256": "aae338308ac536cfbc9c7e4438cccb7f5b7b9af3ffd3f063a06a5bea5f4a0ab0" }, "downloads": -1, "filename": "shell_utils-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2742da9132cf5325720110c119509e73", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12501, "upload_time": "2018-08-10T23:18:19", "url": "https://files.pythonhosted.org/packages/bf/d2/1dfd7500c8138a95072a4041960548401b694a338caa3f629d56e981e0f9/shell_utils-0.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af6ffcf432d5cb0280ef655b68635172", "sha256": "c7671ce133c637bfa652427c6b106bdfae97fafd0b391a9f7e6b0d15f2f03b7c" }, "downloads": -1, "filename": "shell_utils-0.7.1.tar.gz", "has_sig": false, "md5_digest": "af6ffcf432d5cb0280ef655b68635172", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6874, "upload_time": "2018-08-10T23:18:20", "url": "https://files.pythonhosted.org/packages/9e/02/0e3f99afa39ec1998f5919dc596a0dc8e739049355db7296079f7d9e26a9/shell_utils-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "998c7990b556b54757d2d102f8038e14", "sha256": "ccdd56745bdc0dc91105c5d1cb3f133aaf558236912bb019d98a0b3c59f8260c" }, "downloads": -1, "filename": "shell_utils-0.7.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "998c7990b556b54757d2d102f8038e14", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12478, "upload_time": "2018-08-11T15:28:15", "url": "https://files.pythonhosted.org/packages/5d/75/3a6afb6a443c596c47426bff5c07894ade59beddb4c0a850173c026d6fc9/shell_utils-0.7.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26587a4eb7338ce3d82920c720969c0e", "sha256": "b3e18c5548bb945e0319f0a1bc3c545a31ba91389d8a754c8831ecda5eb05dc4" }, "downloads": -1, "filename": "shell_utils-0.7.2.tar.gz", "has_sig": false, "md5_digest": "26587a4eb7338ce3d82920c720969c0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6827, "upload_time": "2018-08-11T15:28:16", "url": "https://files.pythonhosted.org/packages/e7/f2/960ebc0ff2d3fd0953956057a2ed21aef3ffe417d50346363d4f9b13dde1/shell_utils-0.7.2.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "a0ee3cb7474d10e764cc503ccea0b5ce", "sha256": "1f4c6287e3c65181a9d1088b239e65635f213136dacf66651a874dadb2d0e6cc" }, "downloads": -1, "filename": "shell_utils-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a0ee3cb7474d10e764cc503ccea0b5ce", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12436, "upload_time": "2018-08-14T17:54:07", "url": "https://files.pythonhosted.org/packages/52/a8/d1a65e265ac517c5a0009557eccc89e9c2ff0f06b3f95727f892948fd5c6/shell_utils-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2d3b5c87dfeeeb727f91407b0d1a94d", "sha256": "9f3d4ab212de730603f9f90b5a48f98786216887e2a24dd6fd0155cc0cc1ab22" }, "downloads": -1, "filename": "shell_utils-0.8.0.tar.gz", "has_sig": false, "md5_digest": "c2d3b5c87dfeeeb727f91407b0d1a94d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6767, "upload_time": "2018-08-14T17:54:08", "url": "https://files.pythonhosted.org/packages/bb/d5/9df73df70275b8a42b1c309584a6ffb9fa60220a6f6cf0300dd12ac0592e/shell_utils-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "158cedf08edff9b39e8f1fcc21cdfc9e", "sha256": "44a6e979d73a3b5bcc77fcdc23ad1fa0cdbb6d7ca470307de3f2fa2750a7929c" }, "downloads": -1, "filename": "shell_utils-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "158cedf08edff9b39e8f1fcc21cdfc9e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12273, "upload_time": "2018-08-26T21:33:39", "url": "https://files.pythonhosted.org/packages/de/4c/3622aa456c82292d8fedfb1cda104169b648d02e1013e5269dbc35081791/shell_utils-0.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e95264269ee91ec8327b39e4af2c4d34", "sha256": "a443b3c818694b053166856147a3a3a2d589eb82fee2712b5458335f9579c495" }, "downloads": -1, "filename": "shell_utils-0.9.0.tar.gz", "has_sig": false, "md5_digest": "e95264269ee91ec8327b39e4af2c4d34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6820, "upload_time": "2018-08-26T21:33:40", "url": "https://files.pythonhosted.org/packages/9a/ab/1f63ca50c3dd6cb4c688955adbcb3a8873ca3f064e2d546cc0896b15affe/shell_utils-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "37964435946d70a2c5f1927afa391f6f", "sha256": "dd9b2bb10d3d85e3a50d66b146b8a76f8994d7325792f3702a30ae607bf73870" }, "downloads": -1, "filename": "shell_utils-0.9.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "37964435946d70a2c5f1927afa391f6f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12397, "upload_time": "2018-08-26T23:17:14", "url": "https://files.pythonhosted.org/packages/1e/f3/214a388ff9271ee6546f55c132bf8931fbd7a55cd1a8b1bb2b865f5d7bd6/shell_utils-0.9.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b235ad930335a298320b7c768a3f604", "sha256": "f67bca3497c557ddc37efa22fb90fa6cd8b98db7cba83cfad3a7a04d9b5b78e5" }, "downloads": -1, "filename": "shell_utils-0.9.1.tar.gz", "has_sig": false, "md5_digest": "5b235ad930335a298320b7c768a3f604", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6841, "upload_time": "2018-08-26T23:17:17", "url": "https://files.pythonhosted.org/packages/1c/d5/a350b7057b85ab64f1ab914ed5b5b584e40dd14db77b24d2286d96bb8b59/shell_utils-0.9.1.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "f9823383ce1231048d2dc5eb8d8bc9a1", "sha256": "dd6ebaf06c1c1bf5d2295315b9e49b376152918d6f0965a0e4eb6104a4ead2e0" }, "downloads": -1, "filename": "shell_utils-0.9.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f9823383ce1231048d2dc5eb8d8bc9a1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13100, "upload_time": "2018-08-27T08:02:46", "url": "https://files.pythonhosted.org/packages/5d/cb/1f08ec65a0e7bebb49668ebad3ed7c9cfde46095b37bf6e884687e7057ed/shell_utils-0.9.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0dc40e161a7bee1bc4ee710cf4117743", "sha256": "40bbf7835e38dcba85611932289198b8241b33acdd594e89cad25d2959af4258" }, "downloads": -1, "filename": "shell_utils-0.9.8.tar.gz", "has_sig": false, "md5_digest": "0dc40e161a7bee1bc4ee710cf4117743", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7050, "upload_time": "2018-08-27T08:02:47", "url": "https://files.pythonhosted.org/packages/de/20/16594e4b669e1d26bb37621ab3a04ebfd8e6db22b6d7ee9b7bb06c534e20/shell_utils-0.9.8.tar.gz" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "d98c9c6e013c8ae3eff663ec57395837", "sha256": "954687fd403dba61a1e0aa5b63899bb7d83f8a7c7faf6da435838722ecd93fb9" }, "downloads": -1, "filename": "shell_utils-0.9.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d98c9c6e013c8ae3eff663ec57395837", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13209, "upload_time": "2018-08-30T00:09:29", "url": "https://files.pythonhosted.org/packages/7a/9d/087d36940d339e3a431fff96b04f2fb15ddd3632fd6daa3d10f27e59f190/shell_utils-0.9.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5cb256a1ffb54a68f15e5753e6ba225c", "sha256": "e39ccbf2398029e7ab5b96a1cb27dde1f61a35f4ecabccd24d8ffe0bf13b19cb" }, "downloads": -1, "filename": "shell_utils-0.9.9.tar.gz", "has_sig": false, "md5_digest": "5cb256a1ffb54a68f15e5753e6ba225c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7072, "upload_time": "2018-08-30T00:09:30", "url": "https://files.pythonhosted.org/packages/bf/56/5f43ba978e72923e2ac9e485e4677bd76d40e5a0b3e7cf0c80fc356e9075/shell_utils-0.9.9.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "fb0d37d0429f9e33be84f69077ee99bd", "sha256": "a03f4a348ecd83d391aa29df355070d27af9b52840daa329309a67c7e1d5ed64" }, "downloads": -1, "filename": "shell_utils-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fb0d37d0429f9e33be84f69077ee99bd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13328, "upload_time": "2018-08-31T03:35:10", "url": "https://files.pythonhosted.org/packages/4e/76/0281dc46943d9a5168c7267e88bed2105831c8ca31bab93682468b79cc92/shell_utils-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fde967224ed44d795d4f0c149fbfd40", "sha256": "2bf2a72f9b785c7fa185982363d1508d6218a6dffadff9e2507ae080cf2a279c" }, "downloads": -1, "filename": "shell_utils-1.0.tar.gz", "has_sig": false, "md5_digest": "5fde967224ed44d795d4f0c149fbfd40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7149, "upload_time": "2018-08-31T03:35:11", "url": "https://files.pythonhosted.org/packages/42/fc/89895abe54a70fa8471fa379bf769f74b05f35d5078b2a4957454b15b8d0/shell_utils-1.0.tar.gz" } ], "1.0b0": [ { "comment_text": "", "digests": { "md5": "f9c4a0189453973860f9fa81a8e8848b", "sha256": "16cb087b3c6578ccb5f3edfa209bd5307cdb2b41f5b7b6a59028dda6cc188f99" }, "downloads": -1, "filename": "shell_utils-1.0b0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f9c4a0189453973860f9fa81a8e8848b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13352, "upload_time": "2018-08-31T03:27:56", "url": "https://files.pythonhosted.org/packages/cc/e1/45d051507eafc38cb8698aba5157b0549d9963acce4fd2e126020f15184d/shell_utils-1.0b0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a928b3a80b8eb634df98f87b13bb44c", "sha256": "14ad2615d79aebc9aa7e7427e4c8120a1ec5cb89e56c0e55b56ae27973568e5c" }, "downloads": -1, "filename": "shell_utils-1.0b0.tar.gz", "has_sig": false, "md5_digest": "8a928b3a80b8eb634df98f87b13bb44c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7168, "upload_time": "2018-08-31T03:27:57", "url": "https://files.pythonhosted.org/packages/09/79/100dfbab1be89bebcf080203d8fa7f0b323ccd505ca6da18a29a3918850f/shell_utils-1.0b0.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "d0b8b283ddc54dd1df50d5d07597ff46", "sha256": "4d8bc4e63022a66b0db92e08a0184a9f70e37821387095103d6b7e41b974774c" }, "downloads": -1, "filename": "shell_utils-2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d0b8b283ddc54dd1df50d5d07597ff46", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14282, "upload_time": "2018-09-01T09:26:26", "url": "https://files.pythonhosted.org/packages/00/21/f1815036eb5b62da1148e037277c16353fcee3aa7209be40a0d6f6ac71b2/shell_utils-2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "837e4083f950fe9a831c3c54448ecfda", "sha256": "fc6352ea4bf7ac11c597098b2ef31ca29616e8fc6e77788c09fae511b715c461" }, "downloads": -1, "filename": "shell_utils-2.0.tar.gz", "has_sig": false, "md5_digest": "837e4083f950fe9a831c3c54448ecfda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7296, "upload_time": "2018-09-01T09:26:27", "url": "https://files.pythonhosted.org/packages/6e/2e/f97eec33652851a6ee4a5f817393736282e31197b131e197fada02072a24/shell_utils-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "f35288212b6e99fa15d25402acad1b7c", "sha256": "8a3307b011a755c47eba37bc2a51a6a34ddddf12babf579e65325f34aff39479" }, "downloads": -1, "filename": "shell_utils-2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f35288212b6e99fa15d25402acad1b7c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14286, "upload_time": "2018-09-01T09:59:27", "url": "https://files.pythonhosted.org/packages/8d/d9/9e5d613980ffcc86808e0bea5917c79aa304088aacf6e72f59d51f34e523/shell_utils-2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7781178cfc83b760538264d40b283389", "sha256": "8b8cdde56c5dc39d09a843fc5bd7b714cfaf4caee82ffb792a74a4c0b730f235" }, "downloads": -1, "filename": "shell_utils-2.1.tar.gz", "has_sig": false, "md5_digest": "7781178cfc83b760538264d40b283389", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7319, "upload_time": "2018-09-01T09:59:28", "url": "https://files.pythonhosted.org/packages/6f/d3/195231d64421be321153d8fb1614e9bcd0891b7b942c7e7f2372863afd85/shell_utils-2.1.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "0f89671c09fe8e0ed92fbd64e81959ff", "sha256": "439d96ca90ed02f313e7d298f147a6fe668068d7a0b7519cf0d4e49c890771e1" }, "downloads": -1, "filename": "shell_utils-2.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f89671c09fe8e0ed92fbd64e81959ff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14324, "upload_time": "2018-09-01T10:09:47", "url": "https://files.pythonhosted.org/packages/ac/0c/c264eacfde051f07f2e4b9b06c660c58623c48652f2722951f84bc875ad5/shell_utils-2.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5018bf0843251822304d8f9abf808e9b", "sha256": "0213892401d33819d7d95b8783c593f298f529b65ee64c529161a9d9b7cc1123" }, "downloads": -1, "filename": "shell_utils-2.1.1.tar.gz", "has_sig": false, "md5_digest": "5018bf0843251822304d8f9abf808e9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7316, "upload_time": "2018-09-01T10:09:49", "url": "https://files.pythonhosted.org/packages/57/e1/ea0b54b3337879e3c59063ad6bd5430d25020b26524cf8beb314e1e529ed/shell_utils-2.1.1.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "e6d6e77519f7d309ee6753829a8218d5", "sha256": "59e583f5c0abbafc5f67b27feb3ca0545a325110c75950995760623131641182" }, "downloads": -1, "filename": "shell_utils-2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e6d6e77519f7d309ee6753829a8218d5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14666, "upload_time": "2018-09-03T23:31:31", "url": "https://files.pythonhosted.org/packages/24/4c/0ce954c92dc2626a4c93e00f75351fce83bb2b9bbaa28f30694519192b3e/shell_utils-2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "064059dcca6ce7f4ccf6f147972756b1", "sha256": "e94a6d7993d04cb0684c90d1ee01989b7d64f060242fbdbf75e13585bc9bea2e" }, "downloads": -1, "filename": "shell_utils-2.2.tar.gz", "has_sig": false, "md5_digest": "064059dcca6ce7f4ccf6f147972756b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7493, "upload_time": "2018-09-03T23:31:32", "url": "https://files.pythonhosted.org/packages/9d/ac/3972810a0e53c45dba69c531c00b889bbeab53c9d4bd334737fa7e381658/shell_utils-2.2.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "8d5ee117355844e0dcc174d6e282232d", "sha256": "afec8171ce725948afe9792eade74c15059cd68a7bfa0797c0165eebfffc3028" }, "downloads": -1, "filename": "shell_utils-2.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8d5ee117355844e0dcc174d6e282232d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14686, "upload_time": "2018-09-04T20:57:28", "url": "https://files.pythonhosted.org/packages/de/1e/d346efd303ddad8a47d0aea7e42a435bc2590c762f4f81c4c816d2768b87/shell_utils-2.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc44e8e3e275f2189c80537cada44beb", "sha256": "caae81599095ba26a6a856872ec3a5cb97b317f9e1639b0ac0c5597bad7b8dcc" }, "downloads": -1, "filename": "shell_utils-2.2.1.tar.gz", "has_sig": false, "md5_digest": "bc44e8e3e275f2189c80537cada44beb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7495, "upload_time": "2018-09-04T20:57:29", "url": "https://files.pythonhosted.org/packages/9b/07/2fcbc2cd2575711dfaef527f981dcb5685439904448d141b4256de5f0b20/shell_utils-2.2.1.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "0586a930fb0fd831b40c25ba1074839c", "sha256": "628c72ca85a6bfbe57a7e9d332f50a2d8840c6effbc393250d581d693b5f52f1" }, "downloads": -1, "filename": "shell_utils-2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0586a930fb0fd831b40c25ba1074839c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14793, "upload_time": "2018-09-05T06:52:20", "url": "https://files.pythonhosted.org/packages/94/a3/357b57cc284ec89b54803ff31f1c5d3122deb5da14326dea993c395e2e56/shell_utils-2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44ed2aea1f459f33abfc1d4c003927f0", "sha256": "89395e3aaf9f3d83f09a3984e0dd29a48e690956d5eb00e8f3e7d2b4ddc6b8cf" }, "downloads": -1, "filename": "shell_utils-2.3.tar.gz", "has_sig": false, "md5_digest": "44ed2aea1f459f33abfc1d4c003927f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7473, "upload_time": "2018-09-05T06:52:21", "url": "https://files.pythonhosted.org/packages/72/25/f970f25a6b5a05fde33e00d4eeb92fe49d279032d06ef8d0599f964b1025/shell_utils-2.3.tar.gz" } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "562314533546c548850b9b59dec56120", "sha256": "9e304e60d739936f13f888ee38acd5ebe8f022f845ae0da1f89eb3e3bbbcc8cf" }, "downloads": -1, "filename": "shell_utils-2.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "562314533546c548850b9b59dec56120", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14821, "upload_time": "2018-09-08T00:56:37", "url": "https://files.pythonhosted.org/packages/80/a2/64efc899b64924a5fd3186d6f17df6650c1641d5966fe7908267a7030bef/shell_utils-2.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb010610c75859d28d6aeb7eba500cc9", "sha256": "08e45b3675a3de7b413008016689a5025adfedb6f46f729e55cb7ebb2afaf963" }, "downloads": -1, "filename": "shell_utils-2.3.1.tar.gz", "has_sig": false, "md5_digest": "fb010610c75859d28d6aeb7eba500cc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7528, "upload_time": "2018-09-08T00:56:39", "url": "https://files.pythonhosted.org/packages/a9/67/d74b0d95e120126113ee62f3085d684fbd48e33091bcf6e74684e8809875/shell_utils-2.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "562314533546c548850b9b59dec56120", "sha256": "9e304e60d739936f13f888ee38acd5ebe8f022f845ae0da1f89eb3e3bbbcc8cf" }, "downloads": -1, "filename": "shell_utils-2.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "562314533546c548850b9b59dec56120", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14821, "upload_time": "2018-09-08T00:56:37", "url": "https://files.pythonhosted.org/packages/80/a2/64efc899b64924a5fd3186d6f17df6650c1641d5966fe7908267a7030bef/shell_utils-2.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb010610c75859d28d6aeb7eba500cc9", "sha256": "08e45b3675a3de7b413008016689a5025adfedb6f46f729e55cb7ebb2afaf963" }, "downloads": -1, "filename": "shell_utils-2.3.1.tar.gz", "has_sig": false, "md5_digest": "fb010610c75859d28d6aeb7eba500cc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7528, "upload_time": "2018-09-08T00:56:39", "url": "https://files.pythonhosted.org/packages/a9/67/d74b0d95e120126113ee62f3085d684fbd48e33091bcf6e74684e8809875/shell_utils-2.3.1.tar.gz" } ] }