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")