From 5c842b805bff83f7a6fd3f0607d073db5420d9e4 Mon Sep 17 00:00:00 2001 From: Mariam Ahhttouche Date: Mon, 16 Feb 2026 14:33:33 +0100 Subject: [PATCH] uv_python module: handle case when provided python version does not exist in latest state --- plugins/modules/uv_python.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/plugins/modules/uv_python.py b/plugins/modules/uv_python.py index 9b5bcd9a81..7f58925610 100644 --- a/plugins/modules/uv_python.py +++ b/plugins/modules/uv_python.py @@ -70,9 +70,9 @@ class UV: self.python_version = StrictVersion(python_version) self.python_version_str = self.python_version.__str__() except ValueError: - module.fail_json( + self.module.fail_json( msg=( - f"Invalid version '{python_version}'. " + f"Invalid version {python_version}. " "Expected formats are X.Y or X.Y.Z" ) ) @@ -126,11 +126,23 @@ class UV: return rc, out, err def _get_latest_patch_release(self): + """ + Returns latest available patch release for a given python version + """ _, out, _ = self._list_python() # uv returns versions in descending order but we sort them just in case future uv behavior changes - results = json.loads(out) - versions = [StrictVersion(result["version"]) for result in results] - return max(versions).__str__() - + latest_version = "" + try: + results = json.loads(out) + versions = [StrictVersion(result["version"]) for result in results] + latest_version = max(versions).__str__() + except ValueError: + self.module.fail_json( + msg=( + f"Version {self.python_version_str} does not exist. " + ) + ) + return latest_version + def main(): module = AnsibleModule(