依赖机器人
定期更新依赖项被视为最佳实践,这样可以避免暴露于漏洞中、限制依赖项之间的不兼容性,并避免在从过旧版本升级时遇到复杂的升级问题。各种工具可以通过创建自动拉取请求 (Pull Request) 来帮助保持更新。其中一些工具已经支持 uv,或者正在开发对 uv 的支持。
Renovate
uv 已得到 Renovate 的支持。
uv.lock 输出
Renovate 通过检查是否存在 uv.lock 文件来判断项目是否使用 uv 管理依赖,并将建议升级 项目依赖、可选依赖 和 开发依赖。Renovate 将同时更新 pyproject.toml 和 uv.lock 文件。
您还可以通过启用 lockFileMaintenance 选项,定期刷新锁文件(例如用于更新传递依赖项)。
{
$schema: "https://docs.renovatebot.com/renovate-schema.json",
lockFileMaintenance: {
enabled: true,
},
}
内联脚本元数据
Renovate 支持更新使用 内联脚本元数据 定义的依赖项。
由于它无法自动检测哪些 Python 文件使用了内联脚本元数据,因此需要使用 managerFilePatterns 显式定义其位置,如下所示:
{
$schema: "https://docs.renovatebot.com/renovate-schema.json",
pep723: {
managerFilePatterns: [
"docs/build.py",
"scripts/**/*.py",
],
},
}
注意
Renovate 尚不支持更新与脚本关联的锁文件(https://github.com/renovatebot/renovate/issues/33591),因此如果您在脚本中依赖此功能,则需要手动更新锁文件。
依赖项冷却时间
如果您使用了 exclude-newer 选项,建议在 Renovate 中设置对应的 minimumReleaseAge 选项,以避免出现 uv 无法锁定依赖项的拉取请求。
例如,如果您将 exclude-newer 设置为 1 week,您可以设置:
{
$schema: "https://docs.renovatebot.com/renovate-schema.json",
// Enable only for PyPI.
packageRules: [
{
matchDatasources: ["pypi"],
minimumReleaseAge: "1 week",
},
],
// Or enable for every ecosystem.
minimumReleaseAge: "1 week",
}
Dependabot
Dependabot 已宣布支持 uv,但仍有一些用例尚未正常工作。有关更新,请参阅 astral-sh/uv#2512。
Dependabot 支持更新 uv.lock 文件。要启用此功能,请在 dependabot.yml 的 updates 列表中添加 uv package-ecosystem。
version: 2
updates:
- package-ecosystem: "uv"
directory: "/"
schedule:
interval: "weekly"
依赖项冷却时间
如果您使用了 exclude-newer 选项,建议在 Dependabot 中设置对应的 cooldown 选项,以避免出现 uv 无法锁定依赖项的拉取请求。
例如,如果您将 exclude-newer 设置为 1 week,您可以设置: