3636from tests_common .test_utils .asserts import assert_queries_count
3737from tests_common .test_utils .markers import skip_if_force_lowest_dependencies_marker
3838from tests_common .test_utils .paths import AIRFLOW_PROVIDERS_ROOT_PATH , AIRFLOW_ROOT_PATH
39+ from tests_common .test_utils .providers import get_suspended_providers_folders
3940
4041CURRENT_PYTHON_VERSION = f"{ sys .version_info .major } .{ sys .version_info .minor } "
4142PROVIDERS_PREFIXES = ["providers/" ]
6263 # Deprecated Operators/Hooks, which replaced by common.sql Operators/Hooks
6364)
6465
66+ IGNORE_EXAMPLE_DAGS : tuple [str , ...] = (
67+ # These example dags require suspended providers, eg: google dataflow dependent on the Apache Beam provider,
68+ # but it's in the suspended list, we can't import the dag
69+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_go.py" ,
70+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_java_streaming.py" ,
71+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_native_java.py" ,
72+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_native_python.py" ,
73+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_native_python_async.py" ,
74+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_pipeline.py" ,
75+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_pipeline_streaming.py" ,
76+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_sensors_deferrable.py" ,
77+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_streaming_python.py" ,
78+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_template.py" ,
79+ "providers/google/tests/system/google/cloud/dataflow/example_dataflow_yaml.py" ,
80+ "providers/google/tests/system/google/cloud/gcs/example_firestore.py" ,
81+ )
82+
6583LONGER_IMPORT_TIMEOUTS : dict [str , float ] = {
6684 "providers/google/tests/system/google/cloud/gen_ai/example_gen_ai_generative_model.py" : 60
6785}
@@ -79,19 +97,6 @@ def match_optional_dependencies(distribution_name: str, specifier: str | None) -
7997 return True , ""
8098
8199
82- def get_suspended_providers_folders () -> list [str ]:
83- """
84- Returns a list of suspended providers folders that should be
85- skipped when running tests (without any prefix - for example apache/beam, yandex, google etc.).
86- """
87- suspended_providers = []
88- for provider_path in AIRFLOW_PROVIDERS_ROOT_PATH .rglob ("provider.yaml" ):
89- provider_yaml = yaml .safe_load (provider_path .read_text ())
90- if provider_yaml ["state" ] == "suspended" :
91- suspended_providers .append (provider_path .parent .resolve ().as_posix ())
92- return suspended_providers
93-
94-
95100def get_python_excluded_providers_folders () -> list [str ]:
96101 """
97102 Returns a list of providers folders that should be excluded for current Python version and
@@ -127,6 +132,13 @@ def example_not_excluded_dags(xfail_db_exception: bool = False):
127132 if candidate .startswith (tuple (suspended_providers_folders )):
128133 param_marks .append (pytest .mark .skip (reason = "Suspended provider" ))
129134
135+ if candidate .endswith (IGNORE_EXAMPLE_DAGS ):
136+ param_marks .append (
137+ pytest .mark .skip (
138+ reason = "Excluded from imports, these examples require suspended providers"
139+ )
140+ )
141+
130142 if candidate .startswith (tuple (current_python_excluded_providers_folders )):
131143 param_marks .append (
132144 pytest .mark .skip (reason = f"Not supported for Python { CURRENT_PYTHON_VERSION } " )
0 commit comments