This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 9264a4b4e2 Add version check for k8s setup venv command (#36673)
9264a4b4e2 is described below

commit 9264a4b4e21702a2bc71bb77ee3cc4ada9dfd5e7
Author: Jarek Potiuk <[email protected]>
AuthorDate: Mon Jan 8 23:23:41 2024 +0100

    Add version check for k8s setup venv command (#36673)
    
    This command install airflow in k8s venv and in case version of
    Python is not yet supported by Airflow, it might fail.
    
    We do not have check it lower-bound because breeze supports the
    same minimum version of Airflow as Airflow itself.
    
    The command prints instructions on how to reinstall breeze with
    different Python version in such case.
---
 .../src/airflow_breeze/utils/kubernetes_utils.py   | 28 +++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py 
b/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py
index b7002add2a..8a8db025d5 100644
--- a/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py
@@ -32,7 +32,13 @@ from time import sleep
 from typing import Any, NamedTuple
 from urllib import request
 
-from airflow_breeze.global_constants import ALLOWED_ARCHITECTURES, 
HELM_VERSION, KIND_VERSION, PIP_VERSION
+from airflow_breeze.global_constants import (
+    ALLOWED_ARCHITECTURES,
+    ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
+    HELM_VERSION,
+    KIND_VERSION,
+    PIP_VERSION,
+)
 from airflow_breeze.utils.console import Output, get_console
 from airflow_breeze.utils.host_info_utils import Architecture, 
get_host_architecture, get_host_os
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, 
BUILD_CACHE_DIR
@@ -330,6 +336,26 @@ def create_virtualenv(force_venv_setup: bool) -> 
RunCommandResult:
         get_console().print(f"[info]Dry run - would be removing 
{K8S_ENV_PATH}")
     else:
         shutil.rmtree(K8S_ENV_PATH, ignore_errors=True)
+    max_python_version = ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[-1]
+    max_python_version_tuple = tuple(int(x) for x in 
max_python_version.split("."))
+    higher_python_version_tuple = max_python_version_tuple[0], 
max_python_version_tuple[1] + 1
+    if sys.version_info >= higher_python_version_tuple:
+        get_console().print(
+            f"[red]This is not supported in Python 
{higher_python_version_tuple} and above[/]\n"
+        )
+        get_console().print(f"[warning]Please use Python version before 
{higher_python_version_tuple}[/]\n")
+        get_console().print(
+            "[info]You can uninstall breeze and install it again with earlier 
Python "
+            "version. For example:[/]\n"
+        )
+        get_console().print("pipx uninstall apache-airflow-breeze")
+        get_console().print("pipx install --python PYTHON_PATH -e 
./dev/breeze\n")
+        get_console().print(
+            f"[info]PYTHON_PATH - path to your Python binary(< 
{higher_python_version_tuple})[/]\n"
+        )
+        get_console().print("[info]Then recreate your k8s virtualenv 
with:[/]\n")
+        get_console().print("breeze k8s setup-env --force-venv-setup\n")
+        sys.exit(1)
     venv_command_result = run_command(
         [sys.executable, "-m", "venv", str(K8S_ENV_PATH)],
         check=False,

Reply via email to