"devpi-constrained:为devpi-server提供从其基础库中提供的受限包列表的索引"
项目描述
devpi-constrained: devpi-server的发布过滤器
此插件向devpi-server添加了一个受限索引。受限索引为只读,并从其基础库中过滤发布版本,类似于约束文件在pip中。
安装
devpi-constrained需要与devpi-server一起安装,以启用受限索引。
您可以使用以下命令进行安装
pip install devpi-constrained
无需配置,因为devpi-server将通过使用setuptools入口点机制调用钩子自动发现该插件。
动机
通常需要过滤可用于安装的Python包。例如
过滤已知存在安全问题的包版本
提供经过测试的“已知良好集”的包
防止安装具有不兼容许可的包
仅允许经过审查的包
阻止带有破坏性变更的块包版本
使用 devpi-constrained,可以提供一个索引包,它能够实现上述所有功能,甚至更多。
用法
使用 root/pypi 作为基础创建一个 受限 的索引
$ devpi index -c prod/devpi type=constrained bases=root/pypi
https://example.com/prod/devpi:
type=constrained
bases=root/pypi
volatile=True
acl_upload=root
acl_toxresult_upload=:ANONYMOUS:
constraints=
mirror_whitelist=
$ devpi use prod/devpi
如果没有设置限制,所有版本都将从 root/pypi 中可用。
让我们为 pip 添加一个限制
$ devpi index constraints+="pip==6.0"
/prod/devpi constraints+=pip==6.0
https://example.com/prod/devpi?no_projects=:
type=constrained
bases=root/pypi
volatile=True
acl_upload=root
acl_toxresult_upload=:ANONYMOUS:
constraints=pip==6.0
mirror_whitelist=
现在在查找 pip 的版本时,只会列出 pip 6.0
$ devpi list --all pip
http://localhost:3141/root/pypi/+f/610/3897f1bb68d3f/pip-6.0.tar.gz
http://localhost:3141/root/pypi/+f/5ec/6732505bd8be4/pip-6.0-py2.py3-none-any.whl
其他所有包仍然是未受限的。
要阻止所有其他内容,我们添加 * 限制
$ devpi index constraints+="*"
/prod/devpi constraints+=*
https://example.com/prod/devpi?no_projects=:
type=constrained
bases=root/pypi
volatile=True
acl_upload=root
acl_toxresult_upload=:ANONYMOUS:
constraints=pip==6.0,*
mirror_whitelist=
这与 pip 限制不同,在 pip 中这是不可能的。
$ devpi list --all devpi-server
GET https://example.com/prod/devpi/devpi-server/
404 Not Found: no project 'devpi-server'
可以从文件中批量设置 constraints 选项。创建一个名为 constraints.txt 的文件,每行一个限制
pip<8,>4 # a comment devpi-server>=4
从文件中设置索引的 constraints 选项
$ devpi index constraints="$(cat constraints.txt)"
变更日志
2.0.1 - 2023-03-18
修复简单链接页面过滤。 [EvaSDK (Gilles Dartiguelongue)]
2.0.0 - 2023-02-21
移除对 Python <= 3.6 的支持。
添加对 Python 3.8、3.9、3.10、3.11 和 PyPy-3.7 的测试。
要求 devpi-server >= 6.2.0。
1.0.0 - 2019-08-05
初始发布。 [fschulze (Florian Schulze)]