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 bdf41241239 Floor version suffix when referring to other airflow pre-releases (#49373) bdf41241239 is described below commit bdf412412398837fd41562459a79726225b48960 Author: Jarek Potiuk <ja...@potiuk.com> AuthorDate: Wed Apr 16 23:27:39 2025 +0200 Floor version suffix when referring to other airflow pre-releases (#49373) When we are referring to other airflow distribution packages with pre-release suffix, when we have >= comparision we should always floor the suffix version (i.e. if we are preparing rc3, we should have >= ...rc0 ) - this should cover the edge case (like in case of common.messaging) where we have already released final version, and we are not releasing a new RC. This allows to install the latest RC candidate of such already released provider. We were already doing it when preparing providers, in order to allow providers to depend on each other when released together, but we also add the rc suffix also in airflow packages and there we did not floor the pre-release version. --- .../src/airflow_breeze/commands/release_management_commands.py | 6 ++++-- dev/breeze/src/airflow_breeze/global_constants.py | 2 +- dev/breeze/src/airflow_breeze/utils/packages.py | 10 ++++++---- 3 files changed, 11 insertions(+), 7 deletions(-) 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 82a0c98cf68..79c3e53216a 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py @@ -127,6 +127,7 @@ from airflow_breeze.utils.packages import ( PackageSuspendedException, expand_all_provider_distributions, find_matching_long_package_names, + floor_version_suffix, get_available_distributions, get_provider_details, get_provider_distributions_metadata, @@ -421,8 +422,9 @@ def update_version_suffix_in_pyproject_toml(version_suffix: str, pyproject_toml_ if not line.endswith( f'.{version_suffix}"', ): - get_console().print(f"[info]Updating version suffix to {version_suffix} for {line}.") - line = line.rstrip('",') + f'.{version_suffix}",' + floored_version_suffix = floor_version_suffix(version_suffix) + get_console().print(f"[info]Updating version suffix to {floored_version_suffix} for {line}.") + line = line.rstrip('",') + f'.{floored_version_suffix}",' else: get_console().print( f"[info]Not updating version suffix to {version_suffix} for {line} as it already has the " diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py index 18084867964..ccb56e1a11b 100644 --- a/dev/breeze/src/airflow_breeze/global_constants.py +++ b/dev/breeze/src/airflow_breeze/global_constants.py @@ -635,7 +635,7 @@ DEFAULT_EXTRAS = [ # END OF EXTRAS LIST UPDATED BY PRE COMMIT ] -CHICKEN_EGG_PROVIDERS = " ".join(["git", "fab", "standard", "openlineage"]) +CHICKEN_EGG_PROVIDERS = " ".join(["git", "common.messaging", "fab", "standard", "openlineage"]) PROVIDERS_COMPATIBILITY_TESTS_MATRIX: list[dict[str, str | list[str]]] = [ diff --git a/dev/breeze/src/airflow_breeze/utils/packages.py b/dev/breeze/src/airflow_breeze/utils/packages.py index 0a34be721f8..296bd5e4591 100644 --- a/dev/breeze/src/airflow_breeze/utils/packages.py +++ b/dev/breeze/src/airflow_breeze/utils/packages.py @@ -471,6 +471,11 @@ def get_dist_package_name_prefix(provider_id: str) -> str: return "apache_airflow_providers_" + provider_id.replace(".", "_") +def floor_version_suffix(version_suffix: str) -> str: + # always use `pre-release`+ `0` as the version suffix + return version_suffix.rstrip("0123456789") + "0" + + def apply_version_suffix(install_clause: str, version_suffix: str) -> str: # Need to resolve a version suffix based on PyPi versions, but can ignore local version suffix. pypi_version_suffix = remove_local_version_suffix(version_suffix) @@ -492,10 +497,7 @@ def apply_version_suffix(install_clause: str, version_suffix: str) -> str: from packaging.version import Version base_version = Version(version).base_version - # always use `pre-release`+ `0` as the version suffix - pypi_version_suffix = pypi_version_suffix.rstrip("0123456789") + "0" - - target_version = Version(str(base_version) + "." + pypi_version_suffix) + target_version = Version(str(base_version) + "." + floor_version_suffix(pypi_version_suffix)) return prefix + ">=" + str(target_version) return install_clause