{ "info": { "author": "Randy Syring", "author_email": "randy.syring@level12.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": ".. default-role:: code\n\nWheelhouse\n####################\n\nWheelhouse is a utility to help maintain a wheelhouse.\n\nWhat is a Wheelhouse?\n=====================\n\nA wheelhouse is a local cache of python packages in wheel format that gets committed with your code\nto your VCS. When installing packages during continuous integration and production, the wheels in\nthe wheelhouse are used instead of depending on PyPI or some other network location.\n\nAdvantages:\n-----------\n\n* Wheels are stored in your DVCS bringing further clarity to exactly what packages are\n needed/expected and how they have changed over time.\n* CI builds are faster and more consistent. Due to the increased speed of installing wheels from\n a local cache instead of pulling them from a network location, we can have tox start with a new\n virtualenv before every run, thereby insuring all dependencies have been specified and installed\n into the wheelhouse correctly.\n* Production deployments are similarly fast and consistent. Since the CI and production servers\n both pull from the same wheelhouse we have higher certainty that our production code is running\n against the exact same packages that have been tested.\n* Since wheels are built on development or build machines, the need for development system packages\n to be installed on production servers is removed.\n* Targeting forks, development versions, unpublished, and/or private software for production is\n much easier than setting up & maintaining a private PyPI server like `devpi`_.\n* Splits the package management process into two distinct steps:\n\n #. Build packages (from various locations, with specified version) and put wheels in the\n wheelhouse.\n #. Install the latest version of a package from the wheelhouse.\n\n.. _devpi: http://doc.devpi.net/latest/\n\nDisadvantages:\n--------------\n\n* Some may be opposed to storing binary packages in version control.\n* More disk space is needed for the binary packages.\n* The wheelhouse will accumulate packages if not cleaned up regularly. The `purge` command can\n help with this.\n\nExample Usage\n===============\n\nBuild/Refresh the Wheelhouse\n----------------------------\n\nThis will build wheels and store them in the wheelhouse for any updated packages::\n\n wheelhouse build\n\nSetting Up an Environment\n-------------------------\n\nCreate a temporary virtualenv with packages installed from the wheelhouse::\n\n vex -mr myproj # or: mktmpenv\n wheelhouse install -- -r requirements/dev-env.txt\n pip install -e .\n\nYour virtualenv now contains the same packages as the wheelhouse. By using temporary environments\nyou force yourself to always work with what is in the wheelhouse. Getting a package into your\ndevelopment environment requires you to go throught the wheelhouse to do it. This means maintaining\nthe project's packages becomes a first-priority issue in every developers workflow.\n\nExample Project\n===============\n\nThe code for this project is rather basic, but it's the concept that counts. Putting the\nconcept of a wheelhouse into practice has made managing dependencies for our projects across dev,\ntesting and production environments much, much easier.\n\nCheckout `Keg`_ to see a project which is using a wheelhouse in conjunction with tox to manage\ndependencies.\n\n.. _Keg: https://github.com/level12/keg\n\n\nCurrent Features:\n=================\n\n* `build`: Will build all packages for all requirements file specified in the\n config file and store in the wheelhouse directory. Can also be passed the names of individual\n packages or aliases.\n* `config`: display the configuration `wheelhouse` is using.\n* `purge`: purge the wheelhouse of any wheel that isn't the most recent version in the wheelhouse\n for that package.\n\nPossible Future Features:\n=========================\n\n* `install`: install a package/wheel from the wheelhouse.\n* `status`: compare the working environment's installed packages with the requirement files, the\n wheelhouse, and package indexes (PyPI) and show where they are out of sync.\n\n\npip Configuration\n=================\n\nOnce you have a wheelhouse (`wheelhouse build`), you can tell pip to install only from the\nwheelhouse. To do that with environment variables and a tox.ini, it would look like::\n\n # tox.ini\n [testenv]\n setenv =\n PIP_USE_WHEEL=true\n PIP_NO_INDEX=true\n PIP_FIND_LINKS=requirements/wheelhouse\n\nor, from the command line::\n\n pip install --use-wheel --no-index --find-links=requirements/wheelhouse -r requirements/testing.txt\n\n\nConfiguration\n===============\n\nYou must place a `wheelhouse.ini` in the base of your project. This is considered the \"project\nroot\" and all relative file paths are calculated from this location.\n\nYou may also place a `wheelhouse.ini` file in a user-specific location to override defaults for\nWheelhouse. See `wheelhouse config` for more information.\n\nConfig files are read by a `SafeConfigParser`_ instance. See the linked docs for interpolation\nsupport available.\n\n.. _SafeConfigParser: https://docs.python.org/2/library/configparser.html#ConfigParser.SafeConfigParser\n\nAn example configuration file follows::\n\n [wheelhouse]\n # These files are relative to the project's requirements directory (default: `requirements/`).\n requirement_files =\n build.txt\n\n # Make sure each package has a wheel built for python 2 & 3.\n pip_bins = pip, pip3.4\n\n [aliases]\n # Shortcuts to be used when specifying projects to `build`.\n keg = https://github.com/level12/keg/zipball/master\n ke = https://github.com/level12/keg-elements/zipball/master\n\n\nIssues & Discussion\n====================\n\nPlease direct questions, comments, bugs, feature requests, etc. to:\nhttps://github.com/level12/wheelhouse/issues\n\nCurrent Status\n==============\n\nVery Beta, expect changes.\n\nDevelopment\n===============\n\nTo develop on this project, begin by running our tests::\n\n git clone https://github.com/level12/wheelhouse wheelhouse-src\n cd wheelhouse-src\n tox\n\nYou can then examine tox.ini for insights into our development process. In particular, we:\n\n* use `py.test` for testing (and coverage analysis)\n* use `flake8` for linting\n* store `pip` requirements files in `requirements/`\n* cache wheels in `requirements/wheelhouse` for faster & more reliable CI builds\n\nDependency Management\n---------------------\n\nAdding a dependency involves:\n\n#. If it's a run-time dependency, add to `setup.py`.\n#. Adding the dependency to one of the requirements files in `requirements/`.\n#. Running `wheelhouse build`.\n\nPreview Readme\n--------------\n\nWhen updating the readme, use `restview --long-description` to preview changes.\n\n\n\nChangelog\n=========\n\n0.1.4 released 2018-10-09\n-------------------------\n\n- prep for pyp (9768bdb_)\n- replace function from missing wheel.install (2699de5_)\n- fix bug with handling multiple reqs files (dc3eb9a_)\n- better default logging (48c49c7_)\n\n.. _9768bdb: https://github.com/level12/wheelhouse/commit/9768bdb\n.. _2699de5: https://github.com/level12/wheelhouse/commit/2699de5\n.. _dc3eb9a: https://github.com/level12/wheelhouse/commit/dc3eb9a\n.. _48c49c7: https://github.com/level12/wheelhouse/commit/48c49c7\n\n\n\n0.1.3 - 2017-05-30\n------------------\n\n* BUG: fix bug in handling multiple requirements files\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/level12/wheelhouse", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "Wheelhouse", "package_url": "https://pypi.org/project/Wheelhouse/", "platform": "", "project_url": "https://pypi.org/project/Wheelhouse/", "project_urls": { "Homepage": "https://github.com/level12/wheelhouse" }, "release_url": "https://pypi.org/project/Wheelhouse/0.1.4/", "requires_dist": [ "pip", "wheel", "click", "pathlib" ], "requires_python": "", "summary": "A utility to help maintain a wheelhouse.", "version": "0.1.4" }, "last_serial": 4622850, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2c2bc496d739eae9a04bc4d9a12eb5e2", "sha256": "bc39954829d6b2b80da8c4f7b66cc0687d7d8e580a0f2463d361d15cdd609e32" }, "downloads": -1, "filename": "Wheelhouse-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2c2bc496d739eae9a04bc4d9a12eb5e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12187, "upload_time": "2015-06-26T02:57:52", "url": "https://files.pythonhosted.org/packages/74/fc/79586df50df460f2b438a1b4bb7cd3e4221e73306135b93a810a85d0f91c/Wheelhouse-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e7d83cd08667d8afe7139eff5b4bd842", "sha256": "205242fe29caac8af79c4fa40fcd4a08f232c9611b3a23ff439c7f78793ba3b4" }, "downloads": -1, "filename": "Wheelhouse-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e7d83cd08667d8afe7139eff5b4bd842", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14323, "upload_time": "2015-06-26T03:34:55", "url": "https://files.pythonhosted.org/packages/96/c4/201f5ded8091e3f230f11829f2a17bc1308770074d8d12469bc595480ac2/Wheelhouse-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8789cc867810354097852a8634a7cde0", "sha256": "a5cc7b29abb49d92832bd7b14ec9a08bfcefa5534f77c2aeec464ad34c65651a" }, "downloads": -1, "filename": "Wheelhouse-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8789cc867810354097852a8634a7cde0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12917, "upload_time": "2017-05-30T17:13:59", "url": "https://files.pythonhosted.org/packages/ef/3c/14325a5876a8ad4fa4402701b363135de27ee94a6cdde0f59df09ad53a11/Wheelhouse-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "362de2519ec1d23317b307292ddb39da", "sha256": "5debb6627d07a654ffd19caa32c039e2eee586d607f6c07c83b6a1f023dbb231" }, "downloads": -1, "filename": "Wheelhouse-0.1.3.tar.gz", "has_sig": false, "md5_digest": "362de2519ec1d23317b307292ddb39da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15711, "upload_time": "2017-05-30T18:35:03", "url": "https://files.pythonhosted.org/packages/ca/53/5a37de3a32993b53be15359a049187177640e8040cf80a6919c0ae01677b/Wheelhouse-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "4c46d604154006d84422bbdefbad470f", "sha256": "c5b95bc1610f8407f7ff4d492598bb4b197cfe704d463042a67954efe2c8e507" }, "downloads": -1, "filename": "Wheelhouse-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4c46d604154006d84422bbdefbad470f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16922, "upload_time": "2018-10-09T19:56:25", "url": "https://files.pythonhosted.org/packages/e5/ae/0cd83de96394943dfe5e0a333d54e2c54ade409d0515638c0233b0db4a26/Wheelhouse-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5977270880c588f3c6e0c3908fc853c5", "sha256": "76ccaf2cf70e7bd9db9705c9ee67b8eebb7fb5e1b292fa003409b95f1e1f449c" }, "downloads": -1, "filename": "Wheelhouse-0.1.4.tar.gz", "has_sig": false, "md5_digest": "5977270880c588f3c6e0c3908fc853c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15340, "upload_time": "2018-10-09T19:56:26", "url": "https://files.pythonhosted.org/packages/23/82/ee80cfb81d9532dcbe7ef8ae35f540ac692a4caa162f19ca7c4befb9f67b/Wheelhouse-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4c46d604154006d84422bbdefbad470f", "sha256": "c5b95bc1610f8407f7ff4d492598bb4b197cfe704d463042a67954efe2c8e507" }, "downloads": -1, "filename": "Wheelhouse-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4c46d604154006d84422bbdefbad470f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16922, "upload_time": "2018-10-09T19:56:25", "url": "https://files.pythonhosted.org/packages/e5/ae/0cd83de96394943dfe5e0a333d54e2c54ade409d0515638c0233b0db4a26/Wheelhouse-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5977270880c588f3c6e0c3908fc853c5", "sha256": "76ccaf2cf70e7bd9db9705c9ee67b8eebb7fb5e1b292fa003409b95f1e1f449c" }, "downloads": -1, "filename": "Wheelhouse-0.1.4.tar.gz", "has_sig": false, "md5_digest": "5977270880c588f3c6e0c3908fc853c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15340, "upload_time": "2018-10-09T19:56:26", "url": "https://files.pythonhosted.org/packages/23/82/ee80cfb81d9532dcbe7ef8ae35f540ac692a4caa162f19ca7c4befb9f67b/Wheelhouse-0.1.4.tar.gz" } ] }