跳转至

Renovate

定期更新依赖被广泛认为是最佳实践,这样可以避免暴露于安全漏洞、减少依赖之间的不兼容性,以及避免从过旧版本进行复杂的升级。

uv 已获得 Renovate 的支持。

uv.lock 输出

Renovate 通过检测 uv.lock 文件的存在来判断项目是否使用 uv 管理依赖,并会为项目依赖(project dependencies)可选依赖(optional dependencies)开发依赖(development dependencies)建议升级。Renovate 会同时更新 pyproject.tomluv.lock 文件。

还可以通过启用 lockFileMaintenance 选项来定期刷新锁文件(例如更新传递依赖):

renovate.json5
{
  $schema: "https://docs.renovatebot.com/renovate-schema.json",
  lockFileMaintenance: {
    enabled: true,
  },
}

内联脚本元数据

Renovate 支持更新通过内联脚本元数据(inline script metadata)定义的依赖。

由于 Renovate 无法自动检测哪些 Python 文件使用了内联脚本元数据,因此需要通过 managerFilePatterns 显式指定这些文件的位置,示例如下:

renovate.json5
{
  $schema: "https://docs.renovatebot.com/renovate-schema.json",
  pep723: {
    managerFilePatterns: [
      "docs/build.py",
      "scripts/**/*.py",
    ],
  },
}

Note

Renovate 尚不支持更新与脚本关联的锁文件(https://github.com/renovatebot/renovate/issues/33591),因此如果你在脚本中依赖此功能,则需要手动更新锁文件。

依赖冷却期

如果你使用了 exclude-newer 选项,建议同时在 Renovate 中设置等效的 minimumReleaseAge 选项,以避免出现 uv 无法锁定依赖的拉取请求。

例如,如果你已将 exclude-newer 设置为 1 week,可以进行如下配置:

renovate.json5
{
  $schema: "https://docs.renovatebot.com/renovate-schema.json",

  // 仅为 PyPI 启用。
  packageRules: [
    {
      matchDatasources: ["pypi"],
      minimumReleaseAge: "1 week",
    },
  ],

  // 或为所有生态系统启用。
  minimumReleaseAge: "1 week",
}