{ "info": { "author": "James Pacileo", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "Mr Piper \ud83c\udfbb\ud83d\udc0d - Super simple project package manager\n=====================================================\n\n|windows| |linux| |macos|\n\n|image0| |image1| |image2| |image3| |image4| |Travis|\n\n\n---------------\n\nHeavily inspired by `yarn `_, Piper offers a dead simple way to manage a project's dependencies (and more).\n\nPiper uses pip and virtualenv under the hood, and (just like NPM and Yarn) always installs packages in a project isolated environment.\n\nPiper makes it easy to make modules installable (and updatable) via a `piper.json` JSON file, instead of fiddling with `setup.py`.\n\n\n\n.. image:: https://i.imgur.com/QfiOH6z.gif\n\n\ud83e\udd14 Why?\n-----------\n\n- No need to jump through countless hoops to get a test project going \u263a\ufe0f (with proper package management)\n- Keep your environment nice and clean \u2728, with auto-removal of unnecessary components\n- It's easy to make reproducible environments for your CI and deployments (no more \"it-works-on-my-machine\" syndrome)\n- Easily make installable modules, no more :code:`setup.py` fiddling\n- Piper increases usefulness of some basic pip commands (e.g. check out :code:`piper list`, :code:`piper outdated`)\n- A bunch of convenient utilities are included (e.g. :code:`piper why`)\n- Easy install from Github (e.g. :code:`piper add requests/requests`)\n- Effortlessly keep your project version and git tags updated\n\n------------\n\nA star makes the developers happy \ud83d\ude0a\n\n|star-gif|\n\n------------\n\nInstallation\n------------\n\n::\n\n $ pip install mr-piper\n\nUsage\n----------\n\nConcise docs on usage and API going here\n\n.. code::\n\n $ piper\n Usage: piper [OPTIONS] COMMAND [ARGS]...\n\n | _____ _\n | | __ (_)\n | | |__) | _ __ ___ _ __\n | | ___/ | '_ \\ / _ \\ '__|\n | | | | | |_) | __/ |\n | |_| |_| .__/ \\___|_|\n | | |\n | |_|\n |\n\n Options:\n --help Show this message and exit.\n\n Commands:\n add Install and add a package to requirements\n info info all installed packages\n init Initialise project with virtual environment,...\n install Install all packages in requirement files.\n list List all installed packages\n outdated Deletes virtualenv, requirements folder/files...\n remove Remove a list of packages and their...\n upgrade Upgrade a list of packages.\n why Explain why a package exists\n wipe Wipe virtualenv, requirements folder/files...\n\n---------------\n\n**Initialize project** :code:`piper init`\n\ne.g. :code:`piper init --py 3.6 --outside`\n\nInitializing a project creates:\n\n- the PIP requirement files (base, dev and frozen lock files)\n- the virtualenv (either outside or inside the project folder)\n- a Piper file (where project information is stored)\n- a Piper lock (where the reproducible working project configuration is stored)\n- a working setup.py\n\n.. image:: https://transfer.sh/34gGu/Hyper_2017-09-21_16-50-13.png\n\n..\n $ piper init\n Initializing project\n Creating virtualenv...\n Virtualenv created \u2713\n Your virtualenv path: /home/james/example_app/.virtualenvs/project_virtualenv\n Creating requirement files...\n Requirement files created \u2713\n Creating piper file...\n Project name [example_app]: quick_example_project\n Author []: James Pacileo\n Version [0.0.1]: 0.0.1a1\n Description []: A quick example as demonstration\n Repository []:\n Licence []: MIT\n Is it a public project? [y/N]: y\n Piper file created \u2713\n Creating piper lock...\n Piper lock created \u2713\n\n \u2728 Initialization complete\n\n---------------\n\n**Example piper.json**\n\n.. code-block:: json\n\n {\n \"created\": \"2017-09-20T21:10:07\",\n \"name\": \"mr-piper\",\n \"version\": \"0.1.3a2\",\n \"description\": \"The simple project package manager\",\n \"source_dir\": \"mrpiper\",\n \"repository\": \"https://github.com/jamespacileo/mr-piper\",\n \"author\": \"James Pacileo\",\n \"author_email\": \"\",\n \"keywords\": \"pip piper mrpiper package manager\",\n \"license\": \"MIT\",\n \"readme_filename\": \"README.rst\",\n \"py_modules\": [\n \"mrpiper.cli\"\n ],\n \"entry_points\": {\n \"console_scripts\": [\n \"piper=mrpiper.cli:cli\"\n ]\n },\n \"classifiers\": [\n \"License :: OSI Approved :: MIT License\",\n \"Programming Language :: Python\",\n \"Programming Language :: Python :: 2.7\",\n \"Programming Language :: Python :: 3\",\n \"Programming Language :: Python :: 3.3\",\n \"Programming Language :: Python :: 3.4\",\n \"Programming Language :: Python :: 3.5\",\n \"Programming Language :: Python :: 3.6\",\n \"Programming Language :: Python :: Implementation :: CPython\",\n \"Programming Language :: Python :: Implementation :: PyPy\"\n ],\n \"data_files\": [],\n \"package_data\": [],\n \"exclude_packages\": [],\n \"dependencies\": {\n \"requests\": \"requests>=2.0.0\",\n \"path.py\": \"path.py>=10.4\",\n \"click\": \"click>=6.7\",\n \"click-log\": \"click-log>=0.2.0\",\n \"delegator.py\": \"delegator.py>=0.0.13\",\n \"future\": \"future>=0.16.0\",\n \"parse\": \"parse>=1.8.2\",\n \"semantic-version\": \"semantic-version>=2.6.0\",\n \"simplejson\": \"simplejson>=3.11.1\",\n \"tabulate\": \"tabulate>=0.7.7\",\n \"crayons\": \"crayons>=0.1.2\",\n \"click-spinner\": \"click-spinner>=0.1.7\",\n \"emoji\": \"emoji>=0.4.5\"\n },\n \"dev_dependencies\": {\n \"coverage\": \"coverage>=4.4.1\",\n \"coveralls\": \"coveralls>=1.2.0\",\n \"pytest\": \"pytest>=3.2.2\"\n },\n \"private\": false\n }\n\n---------------\n\n**Install development packages** :code:`piper add`\n\ne.g. :code:`piper add pytest --dev`\n\nDev only packages can be installed with the `--dev` option. These are automatically added to the dependencies and the lock is refreshed.\n\n.. image:: https://transfer.sh/zXigS/Hyper_2017-09-21_16-51-27.png\n\n..\n $ piper add pytest coverage --dev\n Installing pytest...\n ...\n Package pytest installed \u2713\n Requirements locked \u2713\n Requirements updated \u2713\n\n Installing coverage...\n ...\n Package coverage installed \u2713\n Requirements locked \u2713\n Requirements updated \u2713\n\n \u2728 Adding package complete\n\n---------------\n\n**Install a package from github** :code:`piper add username/project@tag`\n\ne.g. :code:`piper add django/django@1.11.5`\n\nEasy install of python modules stored on Github.\n\n.. image:: https://transfer.sh/U6ReQ/Hyper_2017-09-21_16-52-31.png\n\n..\n $ piper add requests/requests\n Installing requests/requests...\n requests/requests resolved as git+https://github.com/requests/requests.git#egg=requests\n ...\n Package requests installed \u2713\n Requirements locked \u2713\n Requirements updated \u2713\n\n \u2728 Adding package complete\n\n---------------\n\n**Removing a package** :code:`piper remove`\n\ne.g. :code:`piper remove django`\n\nRemove a package and all safely deletable sub-dependencies, for a sparkly clean environment.\n\n.. image:: https://transfer.sh/MpUXN/Hyper_2017-09-21_16-53-00.png\n\n..\n $ piper remove requests\n Removing package requests...\n Uninstalling certifi-2017.7.27.1:\n Successfully uninstalled certifi-2017.7.27.1\n Uninstalling chardet-3.0.4:\n Successfully uninstalled chardet-3.0.4\n Uninstalling idna-2.6:\n Successfully uninstalled idna-2.6\n Uninstalling urllib3-1.22:\n Successfully uninstalled urllib3-1.22\n Uninstalling requests-2.18.4:\n Successfully uninstalled requests-2.18.4\n Package requests removed \u2713\n Packaged locked \u2713\n Requirement files updated \u2713\n\n \u2728 Package removal complete\n\n---------------\n\n**Install all dependencies (uses lock by default)** :code:`piper install`\n\ne.g. :code:`piper install --dev`\n\nInstall (or reinstall) dependencies specified in the requirements. It uses the locked dependencies by default to guarantee a working version.\n\n.. image:: https://transfer.sh/G8QRZ/Hyper_2017-09-21_19-37-38.png\n\n---------------\n\n**Find outdated packages** :code:`piper outdated`\n\ne.g. :code:`piper outdated --all`\n\n\n.. image:: https://transfer.sh/3gfBu/Hyper_2017-09-21_17-02-56.png\n\n..\n $ piper outdated --all\n Fetching outdated packages...\n Name Current Wanted Latest\n -------- --------- -------- --------\n requests 2.0.0 2.0.0 2.18.4\n py 1.4.34 1.4.34 1.4.34\n pytest 3.2.2 3.2.2 3.2.2\n coverage 4.4.1 4.4.1 4.4.1\n Werkzeug 0.9.6 0.9.6 0.12.2\n\n---------------\n\n**List project's package structure** :code:`piper list`\n\ne.g. :code:`piper list`\n\n\n.. image:: https://transfer.sh/TYZGX/Hyper_2017-09-21_16-57-49.png\n\n..\n $ piper list\n # base = green | dev = magenta | sub dependencies = cyan\n \u251c\u2500 pytest==3.2.2\n \u2502 \u2514\u2500 setuptools\n \u2502 \u2514\u2500 py>=1.4.33\n \u251c\u2500 py==1.4.34\n \u251c\u2500 Werkzeug==0.9.6\n \u251c\u2500 coverage==4.4.1\n \u251c\u2500 requests==2.0.0\n\n\n---------------\n\n**Update porject version (and git tag)** :code:`piper version`\n\ne.g. :code:`piper version -y`\n\nEasily check and update the project's version, with the option ability to add a git tag version.\n\n.. image:: https://transfer.sh/gyhnV/Hyper_2017-09-21_19-22-24.png\n\n---------------\n\n**Why does a package exist** :code:`piper why`\n\ne.g. :code:`piper why idna`\n\nCheck why a package is installed.\n\n.. image:: https://transfer.sh/CCLhh/Hyper_2017-09-21_19-44-55.png\n\n---------------\n\n**Get virtualenv activate command** :code:`piper activate`\n\ne.g. :code:`piper activate`\n\nReturns the shell command used to activate the virtualenv\n\n.. image:: https://transfer.sh/JKnuk/Hyper_2017-09-21_20-27-12.png\n\n---------------\n\nConcise docs on usage and API going here\n\n\nCurrent TODO\n-------------\n\n- \u2b1c Complete basic docs\n- \u2b1c Prune and cleanup code\n- \u2b1c Add a few more tests\n- \u2b1c 90%+ test coverage\n\nPlanned CLI APIs\n-----------------\n\n- :code:`piper shell` - Spawn a shell where the virtualenv is activated\n- :code:`piper build` - Build distributable package from project\n- :code:`piper publish --build` - Build and publish project on PyPI (or other index)\n- :code:`piper run command` - Run custom command (inspired by npm/yarn commands)\n- :code:`piper licenses` - List all dependency licences\n- :code:`piper config` - To store user global settings for Piper's behavior\n\nROADMAP (PyconUK 2017 sprint):\n------------\n\nThis list is undergoing changes.\n\n- \u2b1c Improve documentation\n- \u2b1c Prune some dependencies used\n- \u2b1c Integrate packages hashes\n- \u2b1c Easy way to add setup.py commands (e.g. packaga.json scripts)\n- \u2b1c Custom virtualenv location\n- \u2b1c Optional: Pipfile support\n\n\n.. |windows| image:: https://img.shields.io/badge/Windows-supported-brightgreen.svg\n.. |linux| image:: https://img.shields.io/badge/Linux-supported-brightgreen.svg\n.. |macos| image:: https://img.shields.io/badge/MacOS-supported-brightgreen.svg\n\n\n.. |image0| image:: https://img.shields.io/pypi/v/mr-piper.svg\n :target: https://pypi.python.org/pypi/mr-piper\n.. |image1| image:: https://img.shields.io/pypi/l/mr-piper.svg\n :target: https://pypi.python.org/pypi/mr-piper\n.. |image2| image:: https://img.shields.io/pypi/wheel/mr-piper.svg\n :target: https://pypi.python.org/pypi/mr-piper\n.. |image3| image:: https://img.shields.io/pypi/pyversions/mr-piper.svg\n :target: https://pypi.python.org/pypi/mr-piper\n.. |image4| image:: https://img.shields.io/appveyor/ci/jamespacileo/mr-piper.svg\n :target: https://ci.appveyor.com/project/jamespacileo/mr-piper/branch/master\n.. |Travis| image:: https://img.shields.io/travis/rust-lang/rust.svg\n :target: https://travis-ci.org/jamespacileo/mr-piper\n\n.. |star-gif| image:: https://transfer.sh/CsffY/2017-09-25_16-51-28.gif\n :target: https://github.com/jamespacileo/mr-piper\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jamespacileo/mr-piper", "keywords": "p,i,p, ,p,i,p,e,r, ,m,r,p,i,p,e,r, ,p,a,c,k,a,g,e, ,m,a,n,a,g,e,r", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mr-piper", "package_url": "https://pypi.org/project/mr-piper/", "platform": "", "project_url": "https://pypi.org/project/mr-piper/", "project_urls": { "Homepage": "https://github.com/jamespacileo/mr-piper" }, "release_url": "https://pypi.org/project/mr-piper/0.1.10/", "requires_dist": [ "click (>=6.7)", "click-log (>=0.2.0)", "click-spinner (>=0.1.7)", "crayons (>=0.1.2)", "delegator.py (>=0.0.13)", "emoji (>=0.4.5)", "future (>=0.16.0)", "parse (>=1.8.2)", "path.py (>=10.4)", "requests (>=2.0.0)", "semantic-version (>=2.6.0)", "simplejson (>=3.11.1)", "tabulate (>=0.7.7)" ], "requires_python": "", "summary": "The simple project package manager", "version": "0.1.10" }, "last_serial": 3205486, "releases": { "0.1.10": [ { "comment_text": "", "digests": { "md5": "67b7bffb70660daf34c22ea45beb71c8", "sha256": "e2f069899dce5353e4c05b49be938896280c73815fc7cf183f4a2ef3734d7841" }, "downloads": -1, "filename": "mr_piper-0.1.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "67b7bffb70660daf34c22ea45beb71c8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 48338, "upload_time": "2017-09-26T23:20:42", "url": "https://files.pythonhosted.org/packages/29/5b/8e25881f2fa1e4bb90b3ef995e4de2d404f477467707bc6d9c129e82de16/mr_piper-0.1.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1afa98b89634fc1ee8e426e84b00ca3", "sha256": "983db7675223ee0e9987c3cb67d220008180e6a1719d10e52e53541d1ca8ebc2" }, "downloads": -1, "filename": "mr-piper-0.1.10.tar.gz", "has_sig": false, "md5_digest": "a1afa98b89634fc1ee8e426e84b00ca3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42090, "upload_time": "2017-09-26T23:20:44", "url": "https://files.pythonhosted.org/packages/84/61/542896a3f258ccb744b76f4284c2509cd9ec9b3d0a40b55d25049404b3c5/mr-piper-0.1.10.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "42a360ed729e8d9fa222f335e2c17a64", "sha256": "dd7273b3583c6e13b1a98f80b8ca27bd36d393f2030da2b67ffea520c4cef361" }, "downloads": -1, "filename": "mr_piper-0.1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "42a360ed729e8d9fa222f335e2c17a64", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40655, "upload_time": "2017-09-21T23:01:46", "url": "https://files.pythonhosted.org/packages/5f/cb/28b01d8db00b5e24b16d1e90acd309b2d80600d4414c24a76b599d99dac7/mr_piper-0.1.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa29d50e9769ff7c8c5a976cae4502d5", "sha256": "75d9499318950f980ff4234d34ab3e36e93b3e525a726693d7ea51e4e6608c6b" }, "downloads": -1, "filename": "mr-piper-0.1.9.tar.gz", "has_sig": false, "md5_digest": "aa29d50e9769ff7c8c5a976cae4502d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31809, "upload_time": "2017-09-21T23:01:47", "url": "https://files.pythonhosted.org/packages/1a/6c/afa717bf5f7a30fe26e66f9ff723a53888c3a09cd8f94446b4404fd4ebdf/mr-piper-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "67b7bffb70660daf34c22ea45beb71c8", "sha256": "e2f069899dce5353e4c05b49be938896280c73815fc7cf183f4a2ef3734d7841" }, "downloads": -1, "filename": "mr_piper-0.1.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "67b7bffb70660daf34c22ea45beb71c8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 48338, "upload_time": "2017-09-26T23:20:42", "url": "https://files.pythonhosted.org/packages/29/5b/8e25881f2fa1e4bb90b3ef995e4de2d404f477467707bc6d9c129e82de16/mr_piper-0.1.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1afa98b89634fc1ee8e426e84b00ca3", "sha256": "983db7675223ee0e9987c3cb67d220008180e6a1719d10e52e53541d1ca8ebc2" }, "downloads": -1, "filename": "mr-piper-0.1.10.tar.gz", "has_sig": false, "md5_digest": "a1afa98b89634fc1ee8e426e84b00ca3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42090, "upload_time": "2017-09-26T23:20:44", "url": "https://files.pythonhosted.org/packages/84/61/542896a3f258ccb744b76f4284c2509cd9ec9b3d0a40b55d25049404b3c5/mr-piper-0.1.10.tar.gz" } ] }