1919
2020import asyncio
2121import logging
22- import sys
23- import types
2422from unittest import mock
2523
2624import pytest
2725from google .api_core .exceptions import ServiceUnavailable
2826from google .cloud .dataflow_v1beta3 import Job , JobState , JobType
2927
30-
31- # While the apache-beam provider is suspended (#61926),
32- # `airflow.providers.google.cloud.hooks.dataflow` cannot be imported because it
33- # does `from airflow.providers.apache.beam.hooks.beam import ...` at module
34- # scope. Probe-import the real module first (which also triggers Airflow's
35- # provider-entry-point discovery while the real `airflow.providers.apache`
36- # namespace package is still intact) and only fall back to stubs when the
37- # probe fails. The stubs deliberately cover only the missing beam-specific
38- # subtree — we never overwrite `airflow.providers.apache` itself, otherwise
39- # sibling providers such as `airflow.providers.apache.pig` would be unreachable
40- # via the namespace package's `__path__`.
41- def _beam_module_stubs () -> dict [str , types .ModuleType ]:
42- beam_package = types .ModuleType ("airflow.providers.apache.beam" )
43- beam_package .__path__ = []
44- hooks_package = types .ModuleType ("airflow.providers.apache.beam.hooks" )
45- hooks_package .__path__ = []
46-
47- class BeamRunnerType :
48- DataflowRunner = "DataflowRunner"
49-
50- class BeamModule (types .ModuleType ):
51- BeamHook : object
52- BeamRunnerType : object
53- beam_options_to_args : object
54-
55- beam_module = BeamModule ("airflow.providers.apache.beam.hooks.beam" )
56- beam_module .BeamHook = mock .MagicMock ()
57- beam_module .BeamRunnerType = BeamRunnerType
58- beam_module .beam_options_to_args = mock .MagicMock (return_value = [])
59-
60- return {
61- "airflow.providers.apache.beam" : beam_package ,
62- "airflow.providers.apache.beam.hooks" : hooks_package ,
63- "airflow.providers.apache.beam.hooks.beam" : beam_module ,
64- }
65-
66-
67- try :
68- import airflow .providers .apache .beam .hooks .beam # noqa: F401
69- except ImportError :
70- sys .modules .update (_beam_module_stubs ())
71-
72- from airflow .providers .google .cloud .hooks .dataflow import DataflowJobStatus # noqa: E402
73- from airflow .providers .google .cloud .triggers .dataflow import ( # noqa: E402
28+ from airflow .providers .google .cloud .hooks .dataflow import DataflowJobStatus
29+ from airflow .providers .google .cloud .triggers .dataflow import (
7430 DataflowJobAutoScalingEventTrigger ,
7531 DataflowJobMessagesTrigger ,
7632 DataflowJobMetricsTrigger ,
@@ -79,7 +35,7 @@ class BeamModule(types.ModuleType):
7935 DataflowStartYamlJobTrigger ,
8036 TemplateJobStartTrigger ,
8137)
82- from airflow .triggers .base import TriggerEvent # noqa: E402
38+ from airflow .triggers .base import TriggerEvent
8339
8440PROJECT_ID = "test-project-id"
8541JOB_ID = "test_job_id_2012-12-23-10:00"
0 commit comments