跳转到主要内容

devpi-timemachine 帮助您从过去某个时间点管理您的Python依赖项

项目描述

devpi-timemachine

devpi-timemachine 是一个 devpi 插件,允许您像在之前的日期一样安装包,使用 pip install(和其他类似的Python包安装命令)。不支持(尚不支持)穿越到未来安装尚未发布的包。

用法

  1. 安装 devpidevpi-timemachine
  2. 创建一个新的 devpi 索引。这里有三个重要的选项。下面是一个示例命令和这些选项的解释。
  3. 在使用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 (5.0 kB 查看哈希值)

上传时间

构建分布

devpi_timemachine-0.0.1-py3-none-any.whl (5.5 kB 查看哈希值)

上传时间 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面