devpi-timemachine 帮助您从过去某个时间点管理您的Python依赖项
项目描述
devpi-timemachine
devpi-timemachine
是一个 devpi
插件,允许您像在之前的日期一样安装包,使用 pip install
(和其他类似的Python包安装命令)。不支持(尚不支持)穿越到未来安装尚未发布的包。
用法
- 安装
devpi
和devpi-timemachine
。 - 创建一个新的
devpi
索引。这里有三个重要的选项。下面是一个示例命令和这些选项的解释。 - 在使用pip时指定您的新索引。
$ devpi index -c 20200101 type=timemachine bases=/root/pypi
$ pip install --index-url http://localhost:3141/root/20200101/+simple/ requests
$ pip list # Notice that these installed versions are from 2019, not 2023
Package Version
---------- ----------
certifi 2019.11.28
chardet 3.0.4
idna 2.8
pip 23.1.2
requests 2.22.0
setuptools 67.7.2
urllib3 1.25.7
wheel 0.40.0
这些选项执行以下操作
-
索引名称(本例中的“20200101”)必须是可以由
datetime.fromisoformat
解析的日期。此日期用作通过代理允许包版本的截止日期。这是配置devpi-timemachine
(以及唯一的实际配置选项)的机制。时间旅行插件使用此日期和PyPI文件上传时间来选择要筛选的发布版本,并模拟在特定时间点上PyPI上可用的内容。 -
type=timemachine
指示devpi使用“timemachine”类型创建索引,这会自动加载devpi-timemachine
插件。无需其他配置即可启用插件。 -
bases=/root/pypi
配置索引从/root/pypi
索引继承。我建议使用此选项(或使用继承自 PyPI 的其他基础),因为日期筛选基于 PyPI 元数据,但理论上也可以与其他基础一起使用。
动机
理想情况下,项目依赖项的升级应尽早和经常进行,以减少任何给定点的升级负担。这并不总是可能的,一次性将一个旧项目升级数年可能会很困难。您可以通过显式升级主要依赖项到中间版本,直到达到目标依赖项集,来分批次进行这些更改,但这可能会导致安装不兼容的依赖项,尤其是在依赖项 X 为其依赖项 Y 设置最低版本但没有设置最高版本的情况下。devpi-timemachine
方法允许您将所有依赖项升级到您选择的日历日期,以减少这种可能性;此插件可用于模拟您希望按时间间隔升级依赖项的预期实践,例如每月一次。
状态
目前这是一个概念验证。轶事测试和开发表明它按预期工作,但我确信这里没有考虑到局限性、错误和边缘情况。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源分布
构建分布
devpi_timemachine-0.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 98a72a8226039801589562ff21cd2ee1380c27e9fd1337b1f03809caeaad850e |
|
MD5 | 7e998555257858ae226f7e2634454c2c |
|
BLAKE2b-256 | 857cf1884a8f8a1780218e4d8f29ba0aef1d13efecc42f16f9d3c299aca702f2 |
devpi_timemachine-0.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 683aa10bb7727e1f5a70a0a488776360ee8729a7d77a4047aa4ce4d69294f492 |
|
MD5 | c94a11dc21e530ab6b3e00bb7f5fd68a |
|
BLAKE2b-256 | 6bee8b58396db928bf7e3afddd1d0025eced9a40e6c9e4d00ae53cd3dd0f85ed |