renovate/lib/modules/datasource/python-version
Michael Kriese 19c115c813
test: cleanup (#34785)
2025-03-13 17:52:09 +00:00
..
__fixtures__ feat(datasource): Add python-version datasource (#27583) 2024-05-16 10:00:07 +00:00
common.ts feat(datasource): Add python-version datasource (#27583) 2024-05-16 10:00:07 +00:00
index.spec.ts test: cleanup (#34785) 2025-03-13 17:52:09 +00:00
index.ts fix: improve coverage (#34667) 2025-03-06 17:05:19 +00:00
readme.md feat(datasource): Add python-version datasource (#27583) 2024-05-16 10:00:07 +00:00
schema.ts feat: Switch to `Timestamp` type (#33648) 2025-01-22 20:15:25 +00:00

readme.md

This datasource returns Python releases from the python.org API.

It also fetches deprecated versions from the Endoflife Date datasource.

Because Renovate depends on containerbase/python-prebuild it will also fetch releases from the GitHub API.

Example custom manager

Below is a custom regex manager to update the Python versions in a Dockerfile. Python versions sometimes drop the dot that separate the major and minor number: so 3.11 becomes 311. The example below handles this case.

ARG PYTHON_VERSION=311
FROM image-python${PYTHON_VERSION}-builder:1.0.0
{
  "customManagers": [
    {
      "customType": "regex",
      "fileMatch": ["^Dockerfile$"],
      "matchStringsStrategy": "any",
      "matchStrings": [
        "ARG PYTHON_VERSION=\"?(?<currentValue>3(?<minor>\\d+))\"?\\s"
      ],
      "autoReplaceStringTemplate": "ARG PYTHON_VERSION={{{replace '\\.' '' newValue}}}\n",
      "currentValueTemplate": "3.{{{minor}}}",
      "datasourceTemplate": "python-version",
      "versioningTemplate": "python",
      "depNameTemplate": "python"
    }
  ]
}