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,