renovate/lib/modules/datasource/python-version
Sergei Zharinov 94f9d76329
refactor: Rename `EndoflifeDatePackagesource` to `EndoflifeDateDatasource` (#30898)
2024-08-20 04:55:57 +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 feat(datasource): Add python-version datasource (#27583) 2024-05-16 10:00:07 +00:00
index.ts refactor: Rename `EndoflifeDatePackagesource` to `EndoflifeDateDatasource` (#30898) 2024-08-20 04:55:57 +00:00
readme.md feat(datasource): Add python-version datasource (#27583) 2024-05-16 10:00:07 +00:00
schema.ts feat(datasource): Add python-version datasource (#27583) 2024-05-16 10:00:07 +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"
    }
  ]
}