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 b1667f3e25c Skip Airflow 2 constraints for providers released after 
May 2025 (#62800)
b1667f3e25c is described below

commit b1667f3e25c8878e4a9152dadfbcbee4424ea8a4
Author: Jarek Potiuk <[email protected]>
AuthorDate: Tue Mar 3 18:35:20 2026 +0100

    Skip Airflow 2 constraints for providers released after May 2025 (#62800)
    
    Providers released from May 2025 onward only target Airflow 3,
    so scanning Airflow 2.x constraint files for them is unnecessary work
    and can produce misleading associations.
    
    The fab provider 1.5.* series is exempt because it still ships
    backport fixes for Airflow 2.
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 .../src/airflow_breeze/utils/provider_dependencies.py   | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/dev/breeze/src/airflow_breeze/utils/provider_dependencies.py 
b/dev/breeze/src/airflow_breeze/utils/provider_dependencies.py
index f7af453c68d..d7aa55a0727 100644
--- a/dev/breeze/src/airflow_breeze/utils/provider_dependencies.py
+++ b/dev/breeze/src/airflow_breeze/utils/provider_dependencies.py
@@ -324,9 +324,20 @@ def generate_providers_metadata_for_provider(
             get_console().print(
                 f"[info]Checking provider {provider_id} version 
{current_provider_version} released on {provider_date_released}"
             )
-        airflow_date_released = airflow_release_dates[all_airflow_releases[0]]
+        # For providers released after May 2025, skip Airflow 2.x constraint 
files —
+        # those providers only target Airflow 3.  The fab provider 1.5.* 
series is exempt
+        # because it still ships backport fixes for Airflow 2.
+        skip_airflow_2 = provider_date_released >= "2025-05-01" and not (
+            provider_id == "fab" and 
current_provider_version.startswith("1.5.")
+        )
+        effective_airflow_releases = (
+            [v for v in all_airflow_releases if not v.startswith("2.")]
+            if skip_airflow_2
+            else all_airflow_releases
+        )
+        airflow_date_released = 
airflow_release_dates[effective_airflow_releases[0]]
         last_airflow_version = START_AIRFLOW_VERSION_FROM
-        for airflow_version in all_airflow_releases:
+        for airflow_version in effective_airflow_releases:
             airflow_date_released = airflow_release_dates[airflow_version]
             if get_verbose():
                 get_console().print(
@@ -379,7 +390,7 @@ def generate_providers_metadata_for_provider(
         if last_airflow_version == START_AIRFLOW_VERSION_FROM:
             # If we did not find any Airflow version that is associated with 
this provider version
             # we will add the latest released Airflow version
-            last_airflow_version = all_airflow_releases[-1]
+            last_airflow_version = effective_airflow_releases[-1]
         old_provider_metadata_for_version = 
old_provider_metadata.get(current_provider_version, {})
         new_provider_metadata_for_version = {
             "associated_airflow_version": last_airflow_version,

Reply via email to