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 4e2f74333f Check if Python 3.12 is used for release management 
commands as well (#37615)
4e2f74333f is described below

commit 4e2f74333fec2ef2e86ac2c36b348a75c25102f7
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Thu Feb 22 11:01:56 2024 +0100

    Check if Python 3.12 is used for release management commands as well 
(#37615)
    
    We've been checking - for reproducibility - if python version used is
    Python 3.9 or above, but since we are also rebuilding sdist packages,
    we need to check if sdist packages can be converted to wheel packages
    as well so we need to check python version used.
---
 .../airflow_breeze/commands/release_candidate_command.py  |  6 +++---
 .../commands/release_management_commands.py               | 10 +++++-----
 dev/breeze/src/airflow_breeze/utils/python_versions.py    | 15 +++++++++++----
 dev/breeze/src/airflow_breeze/utils/reproducible.py       |  6 +++---
 4 files changed, 22 insertions(+), 15 deletions(-)

diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py 
b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
index 16f3dd18a9..df8d64bcc6 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
@@ -26,7 +26,7 @@ from airflow_breeze.commands.release_management_group import 
release_management
 from airflow_breeze.utils.confirm import confirm_action
 from airflow_breeze.utils.console import console_print
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, DIST_DIR, 
OUT_DIR
-from airflow_breeze.utils.python_versions import check_python_3_9_or_above
+from airflow_breeze.utils.python_versions import check_python_version
 from airflow_breeze.utils.reproducible import get_source_date_epoch, 
repack_deterministically
 from airflow_breeze.utils.run_utils import run_command
 
@@ -311,7 +311,7 @@ def remove_old_releases(version, repo_root):
     "--version", required=True, help="The release candidate version e.g. 
2.4.3rc1", envvar="VERSION"
 )
 def prepare_airflow_tarball(version: str):
-    check_python_3_9_or_above()
+    check_python_version()
     from packaging.version import Version
 
     airflow_version = Version(version)
@@ -337,7 +337,7 @@ def prepare_airflow_tarball(version: str):
 )
 @option_answer
 def publish_release_candidate(version, previous_version, github_token):
-    check_python_3_9_or_above()
+    check_python_version()
     from packaging.version import Version
 
     airflow_version = Version(version)
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 5a966b25d4..656a1c6e02 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -144,7 +144,7 @@ from airflow_breeze.utils.provider_dependencies import (
     generate_providers_metadata_for_package,
     get_related_providers,
 )
-from airflow_breeze.utils.python_versions import check_python_3_9_or_above, 
get_python_version_list
+from airflow_breeze.utils.python_versions import check_python_version, 
get_python_version_list
 from airflow_breeze.utils.reproducible import get_source_date_epoch, 
repack_deterministically
 from airflow_breeze.utils.run_utils import (
     run_command,
@@ -511,7 +511,7 @@ def prepare_airflow_packages(
     version_suffix_for_pypi: str,
     use_local_hatch: bool,
 ):
-    check_python_3_9_or_above()
+    check_python_version()
     perform_environment_checks()
     fix_ownership_using_docker()
     cleanup_python_generated_files()
@@ -760,7 +760,7 @@ def prepare_provider_packages(
     skip_tag_check: bool,
     version_suffix_for_pypi: str,
 ):
-    check_python_3_9_or_above()
+    check_python_version()
     perform_environment_checks()
     fix_ownership_using_docker()
     cleanup_python_generated_files()
@@ -2619,7 +2619,7 @@ def prepare_helm_chart_tarball(
 ) -> None:
     import yaml
 
-    check_python_3_9_or_above()
+    check_python_version()
     chart_yaml_file_content = CHART_YAML_FILE.read_text()
     chart_yaml_dict = yaml.safe_load(chart_yaml_file_content)
     version_in_chart = chart_yaml_dict["version"]
@@ -2761,7 +2761,7 @@ def prepare_helm_chart_tarball(
 @option_dry_run
 @option_verbose
 def prepare_helm_chart_package(sign_email: str):
-    check_python_3_9_or_above()
+    check_python_version()
 
     import yaml
 
diff --git a/dev/breeze/src/airflow_breeze/utils/python_versions.py 
b/dev/breeze/src/airflow_breeze/utils/python_versions.py
index b06eb63c0f..3571bebb24 100644
--- a/dev/breeze/src/airflow_breeze/utils/python_versions.py
+++ b/dev/breeze/src/airflow_breeze/utils/python_versions.py
@@ -45,12 +45,19 @@ def get_python_version_list(python_versions: str) -> 
list[str]:
     return python_version_list
 
 
-def check_python_3_9_or_above():
+def check_python_version():
+    error = False
     if not sys.version_info >= (3, 9):
-        get_console().print("[error]Python 3.9 or later is required to prepare 
reproducible archives.\n")
+        get_console().print("[error]At least Python 3.9 is required to prepare 
reproducible archives.\n")
+        error = True
+    elif not sys.version_info < (3, 12):
+        get_console().print("[error]Python 3.12 is not supported.\n")
+        error = True
+    if error:
         get_console().print(
-            "[warning]Please reinstall Breeze in Python3.9+ environment. For 
example:[/]\n\n"
-            "pipx uninstall apache-airflow-breeze\n\n"
+            "[warning]Please reinstall Breeze using Python 3.9 - 3.11 
environment.[/]\n\n"
+            "For example:\n\n"
+            "pipx uninstall apache-airflow-breeze\n"
             "pipx install --python $(which python3.9) -e ./dev/breeze 
--force\n"
         )
         sys.exit(1)
diff --git a/dev/breeze/src/airflow_breeze/utils/reproducible.py 
b/dev/breeze/src/airflow_breeze/utils/reproducible.py
index 418d5b2079..1429333d64 100644
--- a/dev/breeze/src/airflow_breeze/utils/reproducible.py
+++ b/dev/breeze/src/airflow_breeze/utils/reproducible.py
@@ -43,7 +43,7 @@ from pathlib import Path
 from subprocess import CalledProcessError, CompletedProcess
 
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, OUT_DIR, 
REPRODUCIBLE_DIR
-from airflow_breeze.utils.python_versions import check_python_3_9_or_above
+from airflow_breeze.utils.python_versions import check_python_version
 from airflow_breeze.utils.run_utils import run_command
 
 
@@ -91,7 +91,7 @@ def repack_deterministically(
         tarinfo.mtime = timestamp
         return tarinfo
 
-    check_python_3_9_or_above()
+    check_python_version()
     OUT_DIR.mkdir(exist_ok=True)
     shutil.rmtree(REPRODUCIBLE_DIR, ignore_errors=True)
     REPRODUCIBLE_DIR.mkdir(exist_ok=True)
@@ -149,7 +149,7 @@ def repack_deterministically(
 
 
 def main():
-    check_python_3_9_or_above()
+    check_python_version()
     parser = ArgumentParser()
     parser.add_argument("-a", "--archive", help="archive to repack")
     parser.add_argument("-o", "--out", help="archive destination")

Reply via email to