From 52e84220e5a3b99140e5fc1b36468065c8950775 Mon Sep 17 00:00:00 2001
From: Clark Boylan <clark.boylan@gmail.com>
Date: Wed, 4 May 2022 14:09:56 -0700
Subject: [PATCH] Make note of python_version being a string value

The type of the python_version variable matters when we interpret it
after yaml deserialization. If it is interpreted as a float then 3.1 ==
3.10 and those python versions are very different. Instead make note
that it should be a string and then update all of the tox jobs to set
this variable as a string.

Change-Id: I55bbc70526a13e6bd4c3c32da8590ad2af76fe7c
---
 roles/ensure-python/README.rst |  6 ++++++
 zuul.d/python-jobs.yaml        | 14 +++++++-------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/roles/ensure-python/README.rst b/roles/ensure-python/README.rst
index 26c0cdc03..b1cfce851 100644
--- a/roles/ensure-python/README.rst
+++ b/roles/ensure-python/README.rst
@@ -16,16 +16,21 @@ There are three ways to install the python interpreter:
 **Role Variables**
 
 .. zuul:rolevar:: python_version
+   :type: str
 
    Optional version of python interpreter to install, such as ``3.7``.
+   Note that you should use a string value for this variable rather than
+   a float. This avoids problems with 3.10 being evaluated as 3.1.
 
 .. zuul:rolevar:: python_use_pyenv
+   :type: bool
    :default: False
 
    Whether to optionally use ``pyenv`` to install python instead of distro
    packages.
 
 .. zuul:rolevar:: python_use_stow
+   :type: bool
    :default: False
 
    In case you have image with already prepared python versions, for example used the
@@ -33,6 +38,7 @@ There are three ways to install the python interpreter:
    by setting this variable to ``true``.
 
 .. zuul:rolevar:: python_stow_dir
+   :type: str
    :default: /usr/local/stow
 
    Sets the target directory for stow. This should be the path to the
diff --git a/zuul.d/python-jobs.yaml b/zuul.d/python-jobs.yaml
index 5fe00ab2a..95722442c 100644
--- a/zuul.d/python-jobs.yaml
+++ b/zuul.d/python-jobs.yaml
@@ -105,7 +105,7 @@
       Uses tox with the ``py27`` environment.
     vars:
       tox_envlist: py27
-      python_version: 2.7
+      python_version: "2.7"
 
 - job:
     name: tox-py34
@@ -120,7 +120,7 @@
       compatibility.
     vars:
       tox_envlist: py34
-      python_version: 3.4
+      python_version: "3.4"
 
 - job:
     name: tox-py35
@@ -135,7 +135,7 @@
       compatibility.
     vars:
       tox_envlist: py35
-      python_version: 3.5
+      python_version: "3.5"
 
 - job:
     name: tox-py36
@@ -146,7 +146,7 @@
       Uses tox with the ``py36`` environment.
     vars:
       tox_envlist: py36
-      python_version: 3.6
+      python_version: "3.6"
 
 - job:
     name: tox-py37
@@ -157,7 +157,7 @@
       Uses tox with the ``py37`` environment.
     vars:
       tox_envlist: py37
-      python_version: 3.7
+      python_version: "3.7"
 
 - job:
     name: tox-py38
@@ -168,7 +168,7 @@
       Uses tox with the ``py38`` environment.
     vars:
       tox_envlist: py38
-      python_version: 3.8
+      python_version: "3.8"
 
 - job:
     name: tox-py39
@@ -179,7 +179,7 @@
       Uses tox with the ``py39`` environment.
     vars:
       tox_envlist: py39
-      python_version: 3.9
+      python_version: "3.9"
 
 - job:
     name: tox-py310