{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Plugins", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "devpi-constrained: releases filter for devpi-server\n===================================================\n\nThis plugin adds a *constrained* index to `devpi-server`_.\nThe *constrained* index is read-only and filters releases from its bases similar to `Constraints Files`_ in `pip`_.\n\n.. _devpi-server: http://pypi.python.org/pypi/devpi-server\n.. _Constraints Files: https://pip.pypa.io/en/stable/user_guide/#constraints-files\n.. _pip: https://pip.pypa.io/\n\n\nInstallation\n------------\n\n``devpi-constrained`` needs to be installed alongside ``devpi-server`` to enable *constrained* indexes.\n\nYou can install it with::\n\n pip install devpi-constrained\n\nThere is no configuration needed as ``devpi-server`` will automatically discover the plugin through calling hooks using the setuptools entry points mechanism.\n\n\nMotivation\n----------\n\nIt is often useful to filter Python packages available for installation.\nFor example:\n\n- Filter package versions with known security issues\n- Provide a \"Known Good Set\" of packages which have been tested\n- Prevent installation of packages with incompatible licenses\n- Only allowing vetted packages\n- Block package versions with breaking changes\n\nWith ``devpi-constrained`` it is possible to provide a package index which enables all of the above and more.\n\n\nUsage\n-----\n\nCreate a *constrained* index with ``root/pypi`` as base:\n\n.. code-block::\n\n $ devpi index -c prod/devpi type=constrained bases=root/pypi\n https://example.com/prod/devpi:\n type=constrained\n bases=root/pypi\n volatile=True\n acl_upload=root\n acl_toxresult_upload=:ANONYMOUS:\n constraints=\n mirror_whitelist=\n\n $ devpi use prod/devpi\n\nWith no constraints set, all releases are available from ``root/pypi``.\n\nLets add a constraint for ``pip``:\n\n.. code-block::\n\n $ devpi index constraints+=\"pip==6.0\"\n /prod/devpi constraints+=pip==6.0\n https://example.com/prod/devpi?no_projects=:\n type=constrained\n bases=root/pypi\n volatile=True\n acl_upload=root\n acl_toxresult_upload=:ANONYMOUS:\n constraints=pip==6.0\n mirror_whitelist=\n\nNow only ``pip 6.0`` will be listed when looking for releases of ``pip``:\n\n.. code-block::\n\n $ devpi list --all pip\n http://localhost:3141/root/pypi/+f/610/3897f1bb68d3f/pip-6.0.tar.gz\n http://localhost:3141/root/pypi/+f/5ec/6732505bd8be4/pip-6.0-py2.py3-none-any.whl\n\nAll other packages are still unconstrained.\n\nTo block everything else we add the ``*`` constraint:\n\n.. code-block::\n\n $ devpi index constraints+=\"*\"\n /prod/devpi constraints+=*\n https://example.com/prod/devpi?no_projects=:\n type=constrained\n bases=root/pypi\n volatile=True\n acl_upload=root\n acl_toxresult_upload=:ANONYMOUS:\n constraints=pip==6.0,*\n mirror_whitelist=\n\nThis is the difference to ``pip`` constraints, where this isn't possible.\n\n.. code-block::\n\n $ devpi list --all devpi-server\n GET https://example.com/prod/devpi/devpi-server/\n 404 Not Found: no project 'devpi-server'\n\nThe ``constraints`` option can be set in bulk from a file.\nCreate a file ``constraints.txt`` with each constraint in one line::\n\n pip<8,>4\n # a comment\n devpi-server>=4\n\nSet the ``constraints`` option on your index from the file::\n\n $ devpi index constraints=\"$(cat constraints.txt)\"\n\nChangelog\n=========\n\n1.0.0 - 2019-08-05\n------------------\n\n- Initial release.\n [fschulze (Florian Schulze)]\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "devpi-constrained", "package_url": "https://pypi.org/project/devpi-constrained/", "platform": "", "project_url": "https://pypi.org/project/devpi-constrained/", "project_urls": null, "release_url": "https://pypi.org/project/devpi-constrained/1.0.0/", "requires_dist": [ "devpi-common", "devpi-server (>=5.1.0)" ], "requires_python": ">=3.5", "summary": "\"devpi-constrained: an index for devpi-server that provides a constrained list of packages from it's bases\"", "version": "1.0.0" }, "last_serial": 5634334, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "3c124ca648e62dcf1e2bf51020050229", "sha256": "d7e03ccd72871ba6bcdf80a8972f8239db33928cc644ee9584089358330f089b" }, "downloads": -1, "filename": "devpi_constrained-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3c124ca648e62dcf1e2bf51020050229", "packagetype": "bdist_wheel", "python_version": "3", "requires_python": ">=3.5", "size": 5390, "upload_time": "2019-08-05T13:29:53", "url": "https://files.pythonhosted.org/packages/97/ba/034299429c0852dcdca77534464ba8b6988fa155bfe28015903ada14c522/devpi_constrained-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "161d69909d284a98a168fbccdb77f823", "sha256": "39ef575a8b93ba15d8cc386eeee69b9406b83d4066ca7a3fde6711e3b9bdfa92" }, "downloads": -1, "filename": "devpi-constrained-1.0.0.tar.gz", "has_sig": false, "md5_digest": "161d69909d284a98a168fbccdb77f823", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6362, "upload_time": "2019-08-05T13:29:51", "url": "https://files.pythonhosted.org/packages/86/59/fc3e8f79e9a5336d72b443c359360604e5fa7b3cd47371119f466ac2a9a3/devpi-constrained-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3c124ca648e62dcf1e2bf51020050229", "sha256": "d7e03ccd72871ba6bcdf80a8972f8239db33928cc644ee9584089358330f089b" }, "downloads": -1, "filename": "devpi_constrained-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3c124ca648e62dcf1e2bf51020050229", "packagetype": "bdist_wheel", "python_version": "3", "requires_python": ">=3.5", "size": 5390, "upload_time": "2019-08-05T13:29:53", "url": "https://files.pythonhosted.org/packages/97/ba/034299429c0852dcdca77534464ba8b6988fa155bfe28015903ada14c522/devpi_constrained-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "161d69909d284a98a168fbccdb77f823", "sha256": "39ef575a8b93ba15d8cc386eeee69b9406b83d4066ca7a3fde6711e3b9bdfa92" }, "downloads": -1, "filename": "devpi-constrained-1.0.0.tar.gz", "has_sig": false, "md5_digest": "161d69909d284a98a168fbccdb77f823", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6362, "upload_time": "2019-08-05T13:29:51", "url": "https://files.pythonhosted.org/packages/86/59/fc3e8f79e9a5336d72b443c359360604e5fa7b3cd47371119f466ac2a9a3/devpi-constrained-1.0.0.tar.gz" } ] }