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
 

Reply via email to