apache-airflow-providers-google 14.0.0__py3-none-any.whl → 19.1.0rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
  2. airflow/providers/google/3rd-party-licenses/NOTICE +5 -0
  3. airflow/providers/google/__init__.py +3 -3
  4. airflow/providers/google/_vendor/__init__.py +0 -0
  5. airflow/providers/google/_vendor/json_merge_patch.py +91 -0
  6. airflow/providers/google/ads/hooks/ads.py +52 -43
  7. airflow/providers/google/ads/operators/ads.py +2 -2
  8. airflow/providers/google/ads/transfers/ads_to_gcs.py +3 -19
  9. airflow/providers/google/assets/gcs.py +1 -11
  10. airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
  11. airflow/providers/google/cloud/bundles/gcs.py +161 -0
  12. airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
  13. airflow/providers/google/cloud/hooks/bigquery.py +195 -318
  14. airflow/providers/google/cloud/hooks/bigquery_dts.py +8 -8
  15. airflow/providers/google/cloud/hooks/bigtable.py +3 -2
  16. airflow/providers/google/cloud/hooks/cloud_batch.py +8 -9
  17. airflow/providers/google/cloud/hooks/cloud_build.py +6 -65
  18. airflow/providers/google/cloud/hooks/cloud_composer.py +292 -24
  19. airflow/providers/google/cloud/hooks/cloud_logging.py +109 -0
  20. airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
  21. airflow/providers/google/cloud/hooks/cloud_run.py +20 -11
  22. airflow/providers/google/cloud/hooks/cloud_sql.py +136 -64
  23. airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +35 -15
  24. airflow/providers/google/cloud/hooks/compute.py +7 -6
  25. airflow/providers/google/cloud/hooks/compute_ssh.py +7 -4
  26. airflow/providers/google/cloud/hooks/datacatalog.py +12 -3
  27. airflow/providers/google/cloud/hooks/dataflow.py +87 -242
  28. airflow/providers/google/cloud/hooks/dataform.py +9 -14
  29. airflow/providers/google/cloud/hooks/datafusion.py +7 -9
  30. airflow/providers/google/cloud/hooks/dataplex.py +13 -12
  31. airflow/providers/google/cloud/hooks/dataprep.py +2 -2
  32. airflow/providers/google/cloud/hooks/dataproc.py +76 -74
  33. airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
  34. airflow/providers/google/cloud/hooks/dlp.py +5 -4
  35. airflow/providers/google/cloud/hooks/gcs.py +144 -33
  36. airflow/providers/google/cloud/hooks/gen_ai.py +196 -0
  37. airflow/providers/google/cloud/hooks/kms.py +3 -2
  38. airflow/providers/google/cloud/hooks/kubernetes_engine.py +22 -17
  39. airflow/providers/google/cloud/hooks/looker.py +6 -1
  40. airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
  41. airflow/providers/google/cloud/hooks/mlengine.py +7 -8
  42. airflow/providers/google/cloud/hooks/natural_language.py +3 -2
  43. airflow/providers/google/cloud/hooks/os_login.py +3 -2
  44. airflow/providers/google/cloud/hooks/pubsub.py +6 -6
  45. airflow/providers/google/cloud/hooks/secret_manager.py +105 -12
  46. airflow/providers/google/cloud/hooks/spanner.py +75 -10
  47. airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
  48. airflow/providers/google/cloud/hooks/stackdriver.py +18 -18
  49. airflow/providers/google/cloud/hooks/tasks.py +4 -3
  50. airflow/providers/google/cloud/hooks/text_to_speech.py +3 -2
  51. airflow/providers/google/cloud/hooks/translate.py +8 -17
  52. airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +8 -222
  53. airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +9 -15
  54. airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +33 -283
  55. airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
  56. airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +6 -12
  57. airflow/providers/google/cloud/hooks/vertex_ai/experiment_service.py +202 -0
  58. airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +311 -10
  59. airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +79 -75
  60. airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +7 -13
  61. airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -12
  62. airflow/providers/google/cloud/hooks/vertex_ai/pipeline_job.py +6 -12
  63. airflow/providers/google/cloud/hooks/vertex_ai/prediction_service.py +3 -2
  64. airflow/providers/google/cloud/hooks/vertex_ai/ray.py +223 -0
  65. airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
  66. airflow/providers/google/cloud/hooks/vision.py +7 -7
  67. airflow/providers/google/cloud/hooks/workflows.py +4 -3
  68. airflow/providers/google/cloud/links/alloy_db.py +0 -46
  69. airflow/providers/google/cloud/links/base.py +77 -7
  70. airflow/providers/google/cloud/links/bigquery.py +0 -47
  71. airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
  72. airflow/providers/google/cloud/links/bigtable.py +0 -48
  73. airflow/providers/google/cloud/links/cloud_build.py +0 -73
  74. airflow/providers/google/cloud/links/cloud_functions.py +0 -33
  75. airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
  76. airflow/providers/google/cloud/links/{life_sciences.py → cloud_run.py} +5 -27
  77. airflow/providers/google/cloud/links/cloud_sql.py +0 -33
  78. airflow/providers/google/cloud/links/cloud_storage_transfer.py +17 -46
  79. airflow/providers/google/cloud/links/cloud_tasks.py +7 -26
  80. airflow/providers/google/cloud/links/compute.py +0 -58
  81. airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
  82. airflow/providers/google/cloud/links/datacatalog.py +23 -54
  83. airflow/providers/google/cloud/links/dataflow.py +0 -34
  84. airflow/providers/google/cloud/links/dataform.py +0 -64
  85. airflow/providers/google/cloud/links/datafusion.py +1 -90
  86. airflow/providers/google/cloud/links/dataplex.py +0 -154
  87. airflow/providers/google/cloud/links/dataprep.py +0 -24
  88. airflow/providers/google/cloud/links/dataproc.py +11 -89
  89. airflow/providers/google/cloud/links/datastore.py +0 -31
  90. airflow/providers/google/cloud/links/kubernetes_engine.py +11 -61
  91. airflow/providers/google/cloud/links/managed_kafka.py +11 -51
  92. airflow/providers/google/cloud/links/mlengine.py +0 -70
  93. airflow/providers/google/cloud/links/pubsub.py +0 -32
  94. airflow/providers/google/cloud/links/spanner.py +0 -33
  95. airflow/providers/google/cloud/links/stackdriver.py +0 -30
  96. airflow/providers/google/cloud/links/translate.py +17 -187
  97. airflow/providers/google/cloud/links/vertex_ai.py +28 -195
  98. airflow/providers/google/cloud/links/workflows.py +0 -52
  99. airflow/providers/google/cloud/log/gcs_task_handler.py +166 -118
  100. airflow/providers/google/cloud/log/stackdriver_task_handler.py +14 -9
  101. airflow/providers/google/cloud/openlineage/CloudStorageTransferJobFacet.json +68 -0
  102. airflow/providers/google/cloud/openlineage/CloudStorageTransferRunFacet.json +60 -0
  103. airflow/providers/google/cloud/openlineage/DataFusionRunFacet.json +32 -0
  104. airflow/providers/google/cloud/openlineage/facets.py +141 -40
  105. airflow/providers/google/cloud/openlineage/mixins.py +14 -13
  106. airflow/providers/google/cloud/openlineage/utils.py +19 -3
  107. airflow/providers/google/cloud/operators/alloy_db.py +76 -61
  108. airflow/providers/google/cloud/operators/bigquery.py +104 -667
  109. airflow/providers/google/cloud/operators/bigquery_dts.py +12 -12
  110. airflow/providers/google/cloud/operators/bigtable.py +38 -7
  111. airflow/providers/google/cloud/operators/cloud_base.py +22 -1
  112. airflow/providers/google/cloud/operators/cloud_batch.py +18 -18
  113. airflow/providers/google/cloud/operators/cloud_build.py +80 -36
  114. airflow/providers/google/cloud/operators/cloud_composer.py +157 -71
  115. airflow/providers/google/cloud/operators/cloud_logging_sink.py +341 -0
  116. airflow/providers/google/cloud/operators/cloud_memorystore.py +74 -46
  117. airflow/providers/google/cloud/operators/cloud_run.py +39 -20
  118. airflow/providers/google/cloud/operators/cloud_sql.py +46 -61
  119. airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +92 -14
  120. airflow/providers/google/cloud/operators/compute.py +18 -50
  121. airflow/providers/google/cloud/operators/datacatalog.py +167 -29
  122. airflow/providers/google/cloud/operators/dataflow.py +38 -15
  123. airflow/providers/google/cloud/operators/dataform.py +19 -7
  124. airflow/providers/google/cloud/operators/datafusion.py +43 -43
  125. airflow/providers/google/cloud/operators/dataplex.py +212 -126
  126. airflow/providers/google/cloud/operators/dataprep.py +1 -5
  127. airflow/providers/google/cloud/operators/dataproc.py +134 -207
  128. airflow/providers/google/cloud/operators/dataproc_metastore.py +102 -84
  129. airflow/providers/google/cloud/operators/datastore.py +22 -6
  130. airflow/providers/google/cloud/operators/dlp.py +24 -45
  131. airflow/providers/google/cloud/operators/functions.py +21 -14
  132. airflow/providers/google/cloud/operators/gcs.py +15 -12
  133. airflow/providers/google/cloud/operators/gen_ai.py +389 -0
  134. airflow/providers/google/cloud/operators/kubernetes_engine.py +115 -106
  135. airflow/providers/google/cloud/operators/looker.py +1 -1
  136. airflow/providers/google/cloud/operators/managed_kafka.py +362 -40
  137. airflow/providers/google/cloud/operators/natural_language.py +5 -3
  138. airflow/providers/google/cloud/operators/pubsub.py +69 -21
  139. airflow/providers/google/cloud/operators/spanner.py +53 -45
  140. airflow/providers/google/cloud/operators/speech_to_text.py +5 -4
  141. airflow/providers/google/cloud/operators/stackdriver.py +5 -11
  142. airflow/providers/google/cloud/operators/tasks.py +6 -15
  143. airflow/providers/google/cloud/operators/text_to_speech.py +4 -3
  144. airflow/providers/google/cloud/operators/translate.py +46 -20
  145. airflow/providers/google/cloud/operators/translate_speech.py +4 -3
  146. airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +44 -34
  147. airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +34 -12
  148. airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +62 -53
  149. airflow/providers/google/cloud/operators/vertex_ai/dataset.py +75 -11
  150. airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +48 -12
  151. airflow/providers/google/cloud/operators/vertex_ai/experiment_service.py +435 -0
  152. airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +532 -1
  153. airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +135 -116
  154. airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +16 -12
  155. airflow/providers/google/cloud/operators/vertex_ai/model_service.py +62 -14
  156. airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +35 -10
  157. airflow/providers/google/cloud/operators/vertex_ai/ray.py +393 -0
  158. airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
  159. airflow/providers/google/cloud/operators/vision.py +7 -5
  160. airflow/providers/google/cloud/operators/workflows.py +24 -19
  161. airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
  162. airflow/providers/google/cloud/sensors/bigquery.py +2 -2
  163. airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -4
  164. airflow/providers/google/cloud/sensors/bigtable.py +14 -6
  165. airflow/providers/google/cloud/sensors/cloud_composer.py +535 -33
  166. airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -5
  167. airflow/providers/google/cloud/sensors/dataflow.py +27 -10
  168. airflow/providers/google/cloud/sensors/dataform.py +2 -2
  169. airflow/providers/google/cloud/sensors/datafusion.py +4 -4
  170. airflow/providers/google/cloud/sensors/dataplex.py +7 -5
  171. airflow/providers/google/cloud/sensors/dataprep.py +2 -2
  172. airflow/providers/google/cloud/sensors/dataproc.py +10 -9
  173. airflow/providers/google/cloud/sensors/dataproc_metastore.py +4 -3
  174. airflow/providers/google/cloud/sensors/gcs.py +22 -21
  175. airflow/providers/google/cloud/sensors/looker.py +5 -5
  176. airflow/providers/google/cloud/sensors/pubsub.py +20 -20
  177. airflow/providers/google/cloud/sensors/tasks.py +2 -2
  178. airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +2 -2
  179. airflow/providers/google/cloud/sensors/workflows.py +6 -4
  180. airflow/providers/google/cloud/transfers/adls_to_gcs.py +1 -1
  181. airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +2 -2
  182. airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +2 -2
  183. airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +11 -8
  184. airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +14 -13
  185. airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +7 -3
  186. airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +12 -1
  187. airflow/providers/google/cloud/transfers/bigquery_to_postgres.py +24 -10
  188. airflow/providers/google/cloud/transfers/bigquery_to_sql.py +104 -5
  189. airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
  190. airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +18 -22
  191. airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +4 -5
  192. airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +45 -38
  193. airflow/providers/google/cloud/transfers/gcs_to_gcs.py +2 -2
  194. airflow/providers/google/cloud/transfers/gcs_to_local.py +5 -3
  195. airflow/providers/google/cloud/transfers/gcs_to_sftp.py +10 -4
  196. airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +6 -2
  197. airflow/providers/google/cloud/transfers/gdrive_to_local.py +2 -2
  198. airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
  199. airflow/providers/google/cloud/transfers/local_to_gcs.py +2 -2
  200. airflow/providers/google/cloud/transfers/mssql_to_gcs.py +1 -1
  201. airflow/providers/google/cloud/transfers/oracle_to_gcs.py +36 -11
  202. airflow/providers/google/cloud/transfers/postgres_to_gcs.py +44 -12
  203. airflow/providers/google/cloud/transfers/s3_to_gcs.py +12 -6
  204. airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +2 -2
  205. airflow/providers/google/cloud/transfers/sftp_to_gcs.py +36 -14
  206. airflow/providers/google/cloud/transfers/sheets_to_gcs.py +3 -3
  207. airflow/providers/google/cloud/transfers/sql_to_gcs.py +10 -10
  208. airflow/providers/google/cloud/triggers/bigquery.py +75 -34
  209. airflow/providers/google/cloud/triggers/bigquery_dts.py +2 -1
  210. airflow/providers/google/cloud/triggers/cloud_batch.py +2 -1
  211. airflow/providers/google/cloud/triggers/cloud_build.py +3 -2
  212. airflow/providers/google/cloud/triggers/cloud_composer.py +303 -47
  213. airflow/providers/google/cloud/triggers/cloud_run.py +2 -2
  214. airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +96 -5
  215. airflow/providers/google/cloud/triggers/dataflow.py +125 -2
  216. airflow/providers/google/cloud/triggers/datafusion.py +1 -1
  217. airflow/providers/google/cloud/triggers/dataplex.py +16 -3
  218. airflow/providers/google/cloud/triggers/dataproc.py +124 -53
  219. airflow/providers/google/cloud/triggers/kubernetes_engine.py +46 -28
  220. airflow/providers/google/cloud/triggers/mlengine.py +1 -1
  221. airflow/providers/google/cloud/triggers/pubsub.py +17 -20
  222. airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
  223. airflow/providers/google/cloud/utils/bigquery.py +5 -7
  224. airflow/providers/google/cloud/utils/bigquery_get_data.py +1 -1
  225. airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
  226. airflow/providers/google/cloud/utils/dataform.py +1 -1
  227. airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
  228. airflow/providers/google/cloud/utils/field_validator.py +1 -2
  229. airflow/providers/google/cloud/utils/validators.py +43 -0
  230. airflow/providers/google/common/auth_backend/google_openid.py +26 -9
  231. airflow/providers/google/common/consts.py +2 -1
  232. airflow/providers/google/common/deprecated.py +2 -1
  233. airflow/providers/google/common/hooks/base_google.py +40 -43
  234. airflow/providers/google/common/hooks/operation_helpers.py +78 -0
  235. airflow/providers/google/common/links/storage.py +0 -22
  236. airflow/providers/google/common/utils/get_secret.py +31 -0
  237. airflow/providers/google/common/utils/id_token_credentials.py +4 -5
  238. airflow/providers/google/firebase/operators/firestore.py +2 -2
  239. airflow/providers/google/get_provider_info.py +61 -216
  240. airflow/providers/google/go_module_utils.py +35 -3
  241. airflow/providers/google/leveldb/hooks/leveldb.py +30 -6
  242. airflow/providers/google/leveldb/operators/leveldb.py +2 -2
  243. airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
  244. airflow/providers/google/marketing_platform/hooks/display_video.py +3 -109
  245. airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
  246. airflow/providers/google/marketing_platform/links/analytics_admin.py +4 -5
  247. airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -6
  248. airflow/providers/google/marketing_platform/operators/campaign_manager.py +5 -5
  249. airflow/providers/google/marketing_platform/operators/display_video.py +28 -489
  250. airflow/providers/google/marketing_platform/operators/search_ads.py +2 -2
  251. airflow/providers/google/marketing_platform/sensors/campaign_manager.py +2 -2
  252. airflow/providers/google/marketing_platform/sensors/display_video.py +4 -64
  253. airflow/providers/google/suite/hooks/calendar.py +1 -1
  254. airflow/providers/google/suite/hooks/drive.py +2 -2
  255. airflow/providers/google/suite/hooks/sheets.py +15 -1
  256. airflow/providers/google/suite/operators/sheets.py +8 -3
  257. airflow/providers/google/suite/sensors/drive.py +2 -2
  258. airflow/providers/google/suite/transfers/gcs_to_gdrive.py +2 -2
  259. airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
  260. airflow/providers/google/suite/transfers/local_to_drive.py +3 -3
  261. airflow/providers/google/suite/transfers/sql_to_sheets.py +5 -4
  262. airflow/providers/google/version_compat.py +15 -1
  263. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/METADATA +117 -72
  264. apache_airflow_providers_google-19.1.0rc1.dist-info/RECORD +331 -0
  265. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/WHEEL +1 -1
  266. apache_airflow_providers_google-19.1.0rc1.dist-info/licenses/NOTICE +5 -0
  267. airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
  268. airflow/providers/google/cloud/hooks/automl.py +0 -679
  269. airflow/providers/google/cloud/hooks/life_sciences.py +0 -159
  270. airflow/providers/google/cloud/links/automl.py +0 -193
  271. airflow/providers/google/cloud/operators/automl.py +0 -1360
  272. airflow/providers/google/cloud/operators/life_sciences.py +0 -119
  273. airflow/providers/google/cloud/operators/mlengine.py +0 -1515
  274. airflow/providers/google/cloud/utils/mlengine_operator_utils.py +0 -273
  275. apache_airflow_providers_google-14.0.0.dist-info/RECORD +0 -318
  276. /airflow/providers/google/cloud/{example_dags → bundles}/__init__.py +0 -0
  277. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/entry_points.txt +0 -0
  278. {airflow/providers/google → apache_airflow_providers_google-19.1.0rc1.dist-info/licenses}/LICENSE +0 -0
@@ -35,12 +35,11 @@ import json
35
35
  import os
36
36
  from typing import TYPE_CHECKING
37
37
 
38
- import google.auth.transport
39
38
  from google.auth import credentials as google_auth_credentials, environment_vars, exceptions
40
- from google.oauth2 import credentials as oauth2_credentials, service_account # type: ignore[attr-defined]
39
+ from google.oauth2 import credentials as oauth2_credentials, service_account
41
40
 
42
41
  if TYPE_CHECKING:
43
- import google.oauth2
42
+ import google.auth.transport
44
43
 
45
44
  # Valid types accepted for file-based credentials.
46
45
  # They are taken from "google.auth._default" and since they are all "protected" and the imports might
@@ -111,7 +110,7 @@ def _load_credentials_from_file(
111
110
 
112
111
  return current_credentials
113
112
 
114
- elif credential_type == _SERVICE_ACCOUNT_TYPE:
113
+ if credential_type == _SERVICE_ACCOUNT_TYPE:
115
114
  try:
116
115
  return service_account.IDTokenCredentials.from_service_account_info(
117
116
  info, target_audience=target_audience
@@ -147,7 +146,7 @@ def _get_gcloud_sdk_credentials(
147
146
  target_audience: str | None,
148
147
  ) -> google_auth_credentials.Credentials | None:
149
148
  """Get the credentials and project ID from the Cloud SDK."""
150
- from google.auth import _cloud_sdk # type: ignore[attr-defined]
149
+ from google.auth import _cloud_sdk
151
150
 
152
151
  # Check if application default credentials exist.
153
152
  credentials_filename = _cloud_sdk.get_application_default_credentials_path()
@@ -20,12 +20,12 @@ from collections.abc import Sequence
20
20
  from typing import TYPE_CHECKING
21
21
 
22
22
  from airflow.exceptions import AirflowException
23
- from airflow.models import BaseOperator
24
23
  from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
25
24
  from airflow.providers.google.firebase.hooks.firestore import CloudFirestoreHook
25
+ from airflow.providers.google.version_compat import BaseOperator
26
26
 
27
27
  if TYPE_CHECKING:
28
- from airflow.utils.context import Context
28
+ from airflow.providers.common.compat.sdk import Context
29
29
 
30
30
 
31
31
  class CloudFirestoreExportDatabaseOperator(BaseOperator):
@@ -26,77 +26,6 @@ def get_provider_info():
26
26
  "package-name": "apache-airflow-providers-google",
27
27
  "name": "Google",
28
28
  "description": "Google services including:\n\n - `Google Ads <https://ads.google.com/>`__\n - `Google Cloud (GCP) <https://cloud.google.com/>`__\n - `Google Firebase <https://firebase.google.com/>`__\n - `Google LevelDB <https://github.com/google/leveldb/>`__\n - `Google Marketing Platform <https://marketingplatform.google.com/>`__\n - `Google Workspace <https://workspace.google.com/>`__ (formerly Google Suite)\n",
29
- "state": "ready",
30
- "source-date-epoch": 1739963477,
31
- "versions": [
32
- "14.0.0",
33
- "12.0.0",
34
- "11.0.0",
35
- "10.26.0",
36
- "10.25.0",
37
- "10.24.0",
38
- "10.23.0",
39
- "10.22.0",
40
- "10.21.1",
41
- "10.21.0",
42
- "10.20.0",
43
- "10.19.0",
44
- "10.18.0",
45
- "10.17.0",
46
- "10.16.0",
47
- "10.15.0",
48
- "10.14.0",
49
- "10.13.1",
50
- "10.13.0",
51
- "10.12.0",
52
- "10.11.1",
53
- "10.11.0",
54
- "10.10.1",
55
- "10.10.0",
56
- "10.9.0",
57
- "10.8.0",
58
- "10.7.0",
59
- "10.6.0",
60
- "10.5.0",
61
- "10.4.0",
62
- "10.3.0",
63
- "10.2.0",
64
- "10.1.1",
65
- "10.1.0",
66
- "10.0.0",
67
- "9.0.0",
68
- "8.12.0",
69
- "8.11.0",
70
- "8.10.0",
71
- "8.9.0",
72
- "8.8.0",
73
- "8.7.0",
74
- "8.6.0",
75
- "8.5.0",
76
- "8.4.0",
77
- "8.3.0",
78
- "8.2.0",
79
- "8.1.0",
80
- "8.0.0",
81
- "7.0.0",
82
- "6.8.0",
83
- "6.7.0",
84
- "6.6.0",
85
- "6.5.0",
86
- "6.4.0",
87
- "6.3.0",
88
- "6.2.0",
89
- "6.1.0",
90
- "6.0.0",
91
- "5.1.0",
92
- "5.0.0",
93
- "4.0.0",
94
- "3.0.0",
95
- "2.2.0",
96
- "2.1.0",
97
- "2.0.0",
98
- "1.0.0",
99
- ],
100
29
  "integrations": [
101
30
  {
102
31
  "integration-name": "Google Analytics (GA4)",
@@ -114,13 +43,6 @@ def get_provider_info():
114
43
  "how-to-guide": ["/docs/apache-airflow-providers-google/operators/ads.rst"],
115
44
  "tags": ["gmp"],
116
45
  },
117
- {
118
- "integration-name": "Google AutoML",
119
- "external-doc-url": "https://cloud.google.com/automl/",
120
- "how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/automl.rst"],
121
- "logo": "/docs/integration-logos/Cloud-AutoML.png",
122
- "tags": ["gcp"],
123
- },
124
46
  {
125
47
  "integration-name": "Google BigQuery Data Transfer Service",
126
48
  "external-doc-url": "https://cloud.google.com/bigquery/transfer/",
@@ -214,13 +136,6 @@ def get_provider_info():
214
136
  "logo": "/docs/integration-logos/Key-Management-Service.png",
215
137
  "tags": ["gcp"],
216
138
  },
217
- {
218
- "integration-name": "Google Cloud Life Sciences",
219
- "external-doc-url": "https://cloud.google.com/life-sciences/",
220
- "how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/life_sciences.rst"],
221
- "logo": "/docs/integration-logos/Google-Cloud-Life-Sciences.png",
222
- "tags": ["gcp"],
223
- },
224
139
  {
225
140
  "integration-name": "Google Cloud Managed Service for Apache Kafka",
226
141
  "external-doc-url": "https://cloud.google.com/managed-service-for-apache-kafka/docs/",
@@ -297,7 +212,10 @@ def get_provider_info():
297
212
  {
298
213
  "integration-name": "Google Cloud Tasks",
299
214
  "external-doc-url": "https://cloud.google.com/tasks/",
300
- "how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/tasks.rst"],
215
+ "how-to-guide": [
216
+ "/docs/apache-airflow-providers-google/operators/cloud/tasks.rst",
217
+ "/docs/apache-airflow-providers-google/sensors/google-cloud-tasks.rst",
218
+ ],
301
219
  "logo": "/docs/integration-logos/Cloud-Tasks.png",
302
220
  "tags": ["gcp"],
303
221
  },
@@ -541,6 +459,21 @@ def get_provider_info():
541
459
  "how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/looker.rst"],
542
460
  "tags": ["gcp"],
543
461
  },
462
+ {
463
+ "integration-name": "Google Cloud Logging Sink",
464
+ "external-doc-url": "https://cloud.google.com/logging",
465
+ "logo": "/docs/integration-logos/Cloud-Logging-Sink.png",
466
+ "how-to-guide": [
467
+ "/docs/apache-airflow-providers-google/operators/cloud/cloud_logging_sink.rst"
468
+ ],
469
+ "tags": ["gcp"],
470
+ },
471
+ {
472
+ "integration-name": "Google Cloud Generative AI",
473
+ "external-doc-url": "https://cloud.google.com/generative-ai-studio",
474
+ "how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/gen_ai.rst"],
475
+ "tags": ["gcp"],
476
+ },
544
477
  ],
545
478
  "operators": [
546
479
  {
@@ -555,10 +488,6 @@ def get_provider_info():
555
488
  "integration-name": "Google Cloud AlloyDB",
556
489
  "python-modules": ["airflow.providers.google.cloud.operators.alloy_db"],
557
490
  },
558
- {
559
- "integration-name": "Google AutoML",
560
- "python-modules": ["airflow.providers.google.cloud.operators.automl"],
561
- },
562
491
  {
563
492
  "integration-name": "Google BigQuery",
564
493
  "python-modules": ["airflow.providers.google.cloud.operators.bigquery"],
@@ -599,10 +528,6 @@ def get_provider_info():
599
528
  "integration-name": "Google Compute Engine",
600
529
  "python-modules": ["airflow.providers.google.cloud.operators.compute"],
601
530
  },
602
- {
603
- "integration-name": "Google Data Catalog",
604
- "python-modules": ["airflow.providers.google.cloud.operators.datacatalog"],
605
- },
606
531
  {
607
532
  "integration-name": "Google Dataflow",
608
533
  "python-modules": ["airflow.providers.google.cloud.operators.dataflow"],
@@ -647,14 +572,6 @@ def get_provider_info():
647
572
  "integration-name": "Google Kubernetes Engine",
648
573
  "python-modules": ["airflow.providers.google.cloud.operators.kubernetes_engine"],
649
574
  },
650
- {
651
- "integration-name": "Google Cloud Life Sciences",
652
- "python-modules": ["airflow.providers.google.cloud.operators.life_sciences"],
653
- },
654
- {
655
- "integration-name": "Google Machine Learning Engine",
656
- "python-modules": ["airflow.providers.google.cloud.operators.mlengine"],
657
- },
658
575
  {
659
576
  "integration-name": "Google Cloud Natural Language",
660
577
  "python-modules": ["airflow.providers.google.cloud.operators.natural_language"],
@@ -741,11 +658,13 @@ def get_provider_info():
741
658
  "airflow.providers.google.cloud.operators.vertex_ai.auto_ml",
742
659
  "airflow.providers.google.cloud.operators.vertex_ai.batch_prediction_job",
743
660
  "airflow.providers.google.cloud.operators.vertex_ai.endpoint_service",
661
+ "airflow.providers.google.cloud.operators.vertex_ai.experiment_service",
744
662
  "airflow.providers.google.cloud.operators.vertex_ai.hyperparameter_tuning_job",
745
663
  "airflow.providers.google.cloud.operators.vertex_ai.model_service",
746
664
  "airflow.providers.google.cloud.operators.vertex_ai.pipeline_job",
747
665
  "airflow.providers.google.cloud.operators.vertex_ai.generative_model",
748
666
  "airflow.providers.google.cloud.operators.vertex_ai.feature_store",
667
+ "airflow.providers.google.cloud.operators.vertex_ai.ray",
749
668
  ],
750
669
  },
751
670
  {
@@ -764,6 +683,14 @@ def get_provider_info():
764
683
  "integration-name": "Google Cloud Managed Service for Apache Kafka",
765
684
  "python-modules": ["airflow.providers.google.cloud.operators.managed_kafka"],
766
685
  },
686
+ {
687
+ "integration-name": "Google Cloud Logging Sink",
688
+ "python-modules": ["airflow.providers.google.cloud.operators.cloud_logging_sink"],
689
+ },
690
+ {
691
+ "integration-name": "Google Cloud Generative AI",
692
+ "python-modules": ["airflow.providers.google.cloud.operators.gen_ai"],
693
+ },
767
694
  ],
768
695
  "sensors": [
769
696
  {
@@ -884,10 +811,6 @@ def get_provider_info():
884
811
  ],
885
812
  "hooks": [
886
813
  {"integration-name": "Google Ads", "python-modules": ["airflow.providers.google.ads.hooks.ads"]},
887
- {
888
- "integration-name": "Google AutoML",
889
- "python-modules": ["airflow.providers.google.cloud.hooks.automl"],
890
- },
891
814
  {
892
815
  "integration-name": "Google BigQuery",
893
816
  "python-modules": ["airflow.providers.google.cloud.hooks.bigquery"],
@@ -935,10 +858,6 @@ def get_provider_info():
935
858
  "airflow.providers.google.cloud.hooks.compute_ssh",
936
859
  ],
937
860
  },
938
- {
939
- "integration-name": "Google Data Catalog",
940
- "python-modules": ["airflow.providers.google.cloud.hooks.datacatalog"],
941
- },
942
861
  {
943
862
  "integration-name": "Google Dataflow",
944
863
  "python-modules": ["airflow.providers.google.cloud.hooks.dataflow"],
@@ -991,10 +910,6 @@ def get_provider_info():
991
910
  "integration-name": "Google Kubernetes Engine",
992
911
  "python-modules": ["airflow.providers.google.cloud.hooks.kubernetes_engine"],
993
912
  },
994
- {
995
- "integration-name": "Google Cloud Life Sciences",
996
- "python-modules": ["airflow.providers.google.cloud.hooks.life_sciences"],
997
- },
998
913
  {
999
914
  "integration-name": "Google Machine Learning Engine",
1000
915
  "python-modules": ["airflow.providers.google.cloud.hooks.mlengine"],
@@ -1053,7 +968,10 @@ def get_provider_info():
1053
968
  },
1054
969
  {
1055
970
  "integration-name": "Google",
1056
- "python-modules": ["airflow.providers.google.common.hooks.base_google"],
971
+ "python-modules": [
972
+ "airflow.providers.google.common.hooks.base_google",
973
+ "airflow.providers.google.common.hooks.operation_helpers",
974
+ ],
1057
975
  },
1058
976
  {
1059
977
  "integration-name": "Google Discovery API",
@@ -1103,12 +1021,14 @@ def get_provider_info():
1103
1021
  "airflow.providers.google.cloud.hooks.vertex_ai.auto_ml",
1104
1022
  "airflow.providers.google.cloud.hooks.vertex_ai.batch_prediction_job",
1105
1023
  "airflow.providers.google.cloud.hooks.vertex_ai.endpoint_service",
1024
+ "airflow.providers.google.cloud.hooks.vertex_ai.experiment_service",
1106
1025
  "airflow.providers.google.cloud.hooks.vertex_ai.hyperparameter_tuning_job",
1107
1026
  "airflow.providers.google.cloud.hooks.vertex_ai.model_service",
1108
1027
  "airflow.providers.google.cloud.hooks.vertex_ai.pipeline_job",
1109
1028
  "airflow.providers.google.cloud.hooks.vertex_ai.generative_model",
1110
1029
  "airflow.providers.google.cloud.hooks.vertex_ai.prediction_service",
1111
1030
  "airflow.providers.google.cloud.hooks.vertex_ai.feature_store",
1031
+ "airflow.providers.google.cloud.hooks.vertex_ai.ray",
1112
1032
  ],
1113
1033
  },
1114
1034
  {
@@ -1127,6 +1047,14 @@ def get_provider_info():
1127
1047
  "integration-name": "Google Cloud Managed Service for Apache Kafka",
1128
1048
  "python-modules": ["airflow.providers.google.cloud.hooks.managed_kafka"],
1129
1049
  },
1050
+ {
1051
+ "integration-name": "Google Cloud Logging Sink",
1052
+ "python-modules": ["airflow.providers.google.cloud.hooks.cloud_logging"],
1053
+ },
1054
+ {
1055
+ "integration-name": "Google Cloud Generative AI",
1056
+ "python-modules": ["airflow.providers.google.cloud.hooks.gen_ai"],
1057
+ },
1130
1058
  ],
1131
1059
  "triggers": [
1132
1060
  {
@@ -1404,6 +1332,12 @@ def get_provider_info():
1404
1332
  "python-module": "airflow.providers.google.cloud.transfers.azure_blob_to_gcs",
1405
1333
  "how-to-guide": "/docs/apache-airflow-providers-google/operators/transfer/azure_blob_to_gcs.rst",
1406
1334
  },
1335
+ {
1336
+ "source-integration-name": "Hypertext Transfer Protocol (HTTP)",
1337
+ "target-integration-name": "Google Cloud Storage (GCS)",
1338
+ "python-module": "airflow.providers.google.cloud.transfers.http_to_gcs",
1339
+ "how-to-guide": "/docs/apache-airflow-providers-google/operators/transfer/http_to_gcs.rst",
1340
+ },
1407
1341
  ],
1408
1342
  "connection-types": [
1409
1343
  {
@@ -1434,6 +1368,14 @@ def get_provider_info():
1434
1368
  "hook-class-name": "airflow.providers.google.leveldb.hooks.leveldb.LevelDBHook",
1435
1369
  "connection-type": "leveldb",
1436
1370
  },
1371
+ {
1372
+ "hook-class-name": "airflow.providers.google.ads.hooks.ads.GoogleAdsHook",
1373
+ "connection-type": "google_ads",
1374
+ },
1375
+ {
1376
+ "hook-class-name": "airflow.providers.google.cloud.hooks.looker.LookerHook",
1377
+ "connection-type": "gcp_looker",
1378
+ },
1437
1379
  ],
1438
1380
  "extra-links": [
1439
1381
  "airflow.providers.google.cloud.links.alloy_db.AlloyDBBackupsLink",
@@ -1464,11 +1406,9 @@ def get_provider_info():
1464
1406
  "airflow.providers.google.cloud.links.compute.ComputeInstanceDetailsLink",
1465
1407
  "airflow.providers.google.cloud.links.compute.ComputeInstanceTemplateDetailsLink",
1466
1408
  "airflow.providers.google.cloud.links.compute.ComputeInstanceGroupManagerDetailsLink",
1409
+ "airflow.providers.google.cloud.links.cloud_run.CloudRunJobLoggingLink",
1467
1410
  "airflow.providers.google.cloud.links.cloud_tasks.CloudTasksQueueLink",
1468
1411
  "airflow.providers.google.cloud.links.cloud_tasks.CloudTasksLink",
1469
- "airflow.providers.google.cloud.links.datacatalog.DataCatalogEntryGroupLink",
1470
- "airflow.providers.google.cloud.links.datacatalog.DataCatalogEntryLink",
1471
- "airflow.providers.google.cloud.links.datacatalog.DataCatalogTagTemplateLink",
1472
1412
  "airflow.providers.google.cloud.links.dataproc.DataprocLink",
1473
1413
  "airflow.providers.google.cloud.links.dataproc.DataprocListLink",
1474
1414
  "airflow.providers.google.cloud.links.dataproc.DataprocClusterLink",
@@ -1495,6 +1435,8 @@ def get_provider_info():
1495
1435
  "airflow.providers.google.cloud.links.vertex_ai.VertexAIEndpointListLink",
1496
1436
  "airflow.providers.google.cloud.links.vertex_ai.VertexAIPipelineJobLink",
1497
1437
  "airflow.providers.google.cloud.links.vertex_ai.VertexAIPipelineJobListLink",
1438
+ "airflow.providers.google.cloud.links.vertex_ai.VertexAIRayClusterLink",
1439
+ "airflow.providers.google.cloud.links.vertex_ai.VertexAIRayClusterListLink",
1498
1440
  "airflow.providers.google.cloud.links.workflows.WorkflowsWorkflowDetailsLink",
1499
1441
  "airflow.providers.google.cloud.links.workflows.WorkflowsListOfWorkflowsLink",
1500
1442
  "airflow.providers.google.cloud.links.workflows.WorkflowsExecutionLink",
@@ -1525,12 +1467,6 @@ def get_provider_info():
1525
1467
  "airflow.providers.google.cloud.links.cloud_build.CloudBuildListLink",
1526
1468
  "airflow.providers.google.cloud.links.cloud_build.CloudBuildTriggersListLink",
1527
1469
  "airflow.providers.google.cloud.links.cloud_build.CloudBuildTriggerDetailsLink",
1528
- "airflow.providers.google.cloud.links.automl.AutoMLDatasetLink",
1529
- "airflow.providers.google.cloud.links.automl.AutoMLDatasetListLink",
1530
- "airflow.providers.google.cloud.links.automl.AutoMLModelLink",
1531
- "airflow.providers.google.cloud.links.automl.AutoMLModelTrainLink",
1532
- "airflow.providers.google.cloud.links.automl.AutoMLModelPredictLink",
1533
- "airflow.providers.google.cloud.links.life_sciences.LifeSciencesLink",
1534
1470
  "airflow.providers.google.cloud.links.cloud_functions.CloudFunctionsDetailsLink",
1535
1471
  "airflow.providers.google.cloud.links.cloud_functions.CloudFunctionsListLink",
1536
1472
  "airflow.providers.google.cloud.links.cloud_storage_transfer.CloudStorageTransferListLink",
@@ -1570,6 +1506,7 @@ def get_provider_info():
1570
1506
  "airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaClusterLink",
1571
1507
  "airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaClusterListLink",
1572
1508
  "airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaTopicLink",
1509
+ "airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaConsumerGroupLink",
1573
1510
  ],
1574
1511
  "secrets-backends": [
1575
1512
  "airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend"
@@ -1579,96 +1516,4 @@ def get_provider_info():
1579
1516
  "airflow.providers.google.cloud.log.gcs_task_handler.GCSTaskHandler",
1580
1517
  "airflow.providers.google.cloud.log.stackdriver_task_handler.StackdriverTaskHandler",
1581
1518
  ],
1582
- "dependencies": [
1583
- "apache-airflow>=2.9.0",
1584
- "apache-airflow-providers-common-compat>=1.4.0",
1585
- "apache-airflow-providers-common-sql>=1.20.0",
1586
- "asgiref>=3.5.2",
1587
- "dill>=0.2.3",
1588
- "gcloud-aio-auth>=5.2.0",
1589
- "gcloud-aio-bigquery>=6.1.2",
1590
- "gcloud-aio-storage>=9.0.0",
1591
- "gcsfs>=2023.10.0",
1592
- "google-ads>=25.1.0",
1593
- "google-analytics-admin>=0.9.0",
1594
- "google-api-core>=2.11.0,!=2.16.0,!=2.18.0",
1595
- "google-api-python-client>=2.0.2",
1596
- "google-auth>=2.29.0",
1597
- "google-auth-httplib2>=0.0.1",
1598
- "google-cloud-aiplatform[evaluation]>=1.73.0",
1599
- "google-cloud-alloydb>=0.4.0",
1600
- "google-cloud-automl>=2.12.0",
1601
- "google-cloud-bigquery>=3.4.0,!=3.21.*,!=3.22.0,!=3.23.*",
1602
- "google-cloud-bigquery-datatransfer>=3.13.0",
1603
- "google-cloud-bigtable>=2.17.0",
1604
- "google-cloud-build>=3.31.0",
1605
- "google-cloud-compute>=1.10.0",
1606
- "google-cloud-container>=2.17.4",
1607
- "google-cloud-datacatalog>=3.23.0",
1608
- "google-cloud-dataflow-client>=0.8.6",
1609
- "google-cloud-dataform>=0.5.0",
1610
- "google-cloud-dataplex>=2.6.0",
1611
- "google-cloud-dataproc>=5.12.0",
1612
- "google-cloud-dataproc-metastore>=1.12.0",
1613
- "google-cloud-dlp>=3.12.0",
1614
- "google-cloud-kms>=2.15.0",
1615
- "google-cloud-language>=2.9.0",
1616
- "google-cloud-logging>=3.5.0",
1617
- "google-cloud-managedkafka>=0.1.6",
1618
- "google-cloud-memcache>=1.7.0",
1619
- "google-cloud-monitoring>=2.18.0",
1620
- "google-cloud-orchestration-airflow>=1.10.0",
1621
- "google-cloud-os-login>=2.9.1",
1622
- "google-cloud-pubsub>=2.19.0",
1623
- "google-cloud-redis>=2.12.0",
1624
- "google-cloud-secret-manager>=2.16.0",
1625
- "google-cloud-spanner>=3.11.1,!=3.49.0",
1626
- "google-cloud-speech>=2.18.0",
1627
- "google-cloud-storage>=2.7.0",
1628
- "google-cloud-storage-transfer>=1.4.1",
1629
- "google-cloud-tasks>=2.13.0",
1630
- "google-cloud-texttospeech>=2.14.1",
1631
- "google-cloud-translate>=3.16.0",
1632
- "google-cloud-videointelligence>=2.11.0",
1633
- "google-cloud-vision>=3.4.0",
1634
- "google-cloud-workflows>=1.10.0",
1635
- "google-cloud-run>=0.10.0",
1636
- "google-cloud-batch>=0.13.0",
1637
- "grpcio-gcp>=0.2.2",
1638
- "httpx>=0.25.0",
1639
- "json-merge-patch>=0.2",
1640
- "looker-sdk>=22.4.0,!=24.18.0",
1641
- "pandas-gbq>=0.7.0",
1642
- "pandas>=2.1.2,<2.2",
1643
- "proto-plus>=1.19.6",
1644
- "pyarrow>=14.0.1",
1645
- "python-slugify>=7.0.0",
1646
- "PyOpenSSL>=23.0.0",
1647
- "sqlalchemy-bigquery>=1.2.1",
1648
- "sqlalchemy-spanner>=1.6.2",
1649
- "tenacity>=8.1.0",
1650
- "immutabledict>=4.2.0",
1651
- ],
1652
- "optional-dependencies": {
1653
- "apache.beam": [
1654
- 'apache-beam[gcp]>=2.53.0; python_version < "3.12"',
1655
- 'apache-beam[gcp]>=2.57.0; python_version >= "3.12"',
1656
- ],
1657
- "cncf.kubernetes": ["apache-airflow-providers-cncf-kubernetes>=10.1.0"],
1658
- "leveldb": ["plyvel>=1.5.1"],
1659
- "oracle": ["apache-airflow-providers-oracle>=3.1.0"],
1660
- "facebook": ["apache-airflow-providers-facebook>=2.2.0"],
1661
- "amazon": ["apache-airflow-providers-amazon>=2.6.0"],
1662
- "apache.cassandra": ["apache-airflow-providers-apache-cassandra"],
1663
- "microsoft.azure": ["apache-airflow-providers-microsoft-azure"],
1664
- "microsoft.mssql": ["apache-airflow-providers-microsoft-mssql"],
1665
- "mysql": ["apache-airflow-providers-mysql"],
1666
- "openlineage": ["apache-airflow-providers-openlineage"],
1667
- "postgres": ["apache-airflow-providers-postgres"],
1668
- "presto": ["apache-airflow-providers-presto"],
1669
- "salesforce": ["apache-airflow-providers-salesforce"],
1670
- "sftp": ["apache-airflow-providers-sftp"],
1671
- "ssh": ["apache-airflow-providers-ssh"],
1672
- "trino": ["apache-airflow-providers-trino"],
1673
- },
1674
1519
  }
@@ -19,9 +19,41 @@
19
19
 
20
20
  from __future__ import annotations
21
21
 
22
+ import logging
22
23
  import os
24
+ import shlex
25
+ import subprocess
23
26
 
24
- from airflow.utils.process_utils import execute_in_subprocess
27
+
28
+ def _execute_in_subprocess(cmd: list[str], cwd: str | None = None, env: dict[str, str] | None = None) -> None:
29
+ """
30
+ Execute a process and stream output to logger.
31
+
32
+ :param cmd: command and arguments to run
33
+ :param cwd: Current working directory passed to the Popen constructor
34
+ :param env: Additional environment variables to set for the subprocess.
35
+ """
36
+ log = logging.getLogger(__name__)
37
+
38
+ log.info("Executing cmd: %s", " ".join(shlex.quote(c) for c in cmd))
39
+ with subprocess.Popen(
40
+ cmd,
41
+ stdout=subprocess.PIPE,
42
+ stderr=subprocess.STDOUT,
43
+ bufsize=0,
44
+ close_fds=True,
45
+ cwd=cwd,
46
+ env=env,
47
+ ) as proc:
48
+ log.info("Output:")
49
+ if proc.stdout:
50
+ with proc.stdout:
51
+ for line in iter(proc.stdout.readline, b""):
52
+ log.info("%s", line.decode().rstrip())
53
+
54
+ exit_code = proc.wait()
55
+ if exit_code != 0:
56
+ raise subprocess.CalledProcessError(exit_code, cmd)
25
57
 
26
58
 
27
59
  def init_module(go_module_name: str, go_module_path: str) -> None:
@@ -36,7 +68,7 @@ def init_module(go_module_name: str, go_module_path: str) -> None:
36
68
  if os.path.isfile(os.path.join(go_module_path, "go.mod")):
37
69
  return
38
70
  go_mod_init_cmd = ["go", "mod", "init", go_module_name]
39
- execute_in_subprocess(go_mod_init_cmd, cwd=go_module_path)
71
+ _execute_in_subprocess(go_mod_init_cmd, cwd=go_module_path)
40
72
 
41
73
 
42
74
  def install_dependencies(go_module_path: str) -> None:
@@ -46,4 +78,4 @@ def install_dependencies(go_module_path: str) -> None:
46
78
  :param go_module_path: The path to the directory containing the Go module.
47
79
  """
48
80
  go_mod_tidy = ["go", "mod", "tidy"]
49
- execute_in_subprocess(go_mod_tidy, cwd=go_module_path)
81
+ _execute_in_subprocess(go_mod_tidy, cwd=go_module_path)
@@ -18,8 +18,10 @@
18
18
 
19
19
  from __future__ import annotations
20
20
 
21
+ from typing import Any
22
+
21
23
  from airflow.exceptions import AirflowException, AirflowOptionalProviderFeatureException
22
- from airflow.hooks.base import BaseHook
24
+ from airflow.providers.common.compat.sdk import BaseHook
23
25
 
24
26
  try:
25
27
  import plyvel
@@ -46,6 +48,29 @@ class LevelDBHook(BaseHook):
46
48
  conn_type = "leveldb"
47
49
  hook_name = "LevelDB"
48
50
 
51
+ @classmethod
52
+ def get_connection_form_widgets(cls) -> dict[str, Any]:
53
+ """Return connection widgets to add to LevelDB connection form."""
54
+ from flask_babel import lazy_gettext
55
+ from wtforms import BooleanField
56
+
57
+ return {
58
+ "create_if_missing": BooleanField(
59
+ lazy_gettext("Create a database if it does not exist"), default=False
60
+ ),
61
+ "error_if_exists": BooleanField(
62
+ lazy_gettext("Raise an exception if the database already exists"), default=False
63
+ ),
64
+ }
65
+
66
+ @classmethod
67
+ def get_ui_field_behaviour(cls) -> dict[str, Any]:
68
+ """Return custom UI field behaviour for LevelDB connection."""
69
+ return {
70
+ "hidden_fields": ["login", "password", "schema", "port"],
71
+ "relabeling": {},
72
+ }
73
+
49
74
  def __init__(self, leveldb_conn_id: str = default_conn_name):
50
75
  super().__init__()
51
76
  self.leveldb_conn_id = leveldb_conn_id
@@ -96,18 +121,17 @@ class LevelDBHook(BaseHook):
96
121
  if not value:
97
122
  raise ValueError("Please provide `value`!")
98
123
  return self.put(key, value)
99
- elif command == "get":
124
+ if command == "get":
100
125
  return self.get(key)
101
- elif command == "delete":
126
+ if command == "delete":
102
127
  return self.delete(key)
103
- elif command == "write_batch":
128
+ if command == "write_batch":
104
129
  if not keys:
105
130
  raise ValueError("Please provide `keys`!")
106
131
  if not values:
107
132
  raise ValueError("Please provide `values`!")
108
133
  return self.write_batch(keys, values)
109
- else:
110
- raise LevelDBHookException("Unknown command for LevelDB hook")
134
+ raise LevelDBHookException("Unknown command for LevelDB hook")
111
135
 
112
136
  def put(self, key: bytes, value: bytes):
113
137
  """
@@ -18,11 +18,11 @@ from __future__ import annotations
18
18
 
19
19
  from typing import TYPE_CHECKING, Any
20
20
 
21
- from airflow.models import BaseOperator
22
21
  from airflow.providers.google.leveldb.hooks.leveldb import LevelDBHook
22
+ from airflow.providers.google.version_compat import BaseOperator
23
23
 
24
24
  if TYPE_CHECKING:
25
- from airflow.utils.context import Context
25
+ from airflow.providers.common.compat.sdk import Context
26
26
 
27
27
 
28
28
  class LevelDBOperator(BaseOperator):
@@ -30,8 +30,6 @@ from __future__ import annotations
30
30
  from collections.abc import Sequence
31
31
  from typing import TYPE_CHECKING
32
32
 
33
- from airflow.providers.google.common.consts import CLIENT_INFO
34
- from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
35
33
  from google.analytics.admin_v1beta import (
36
34
  AnalyticsAdminServiceClient,
37
35
  DataStream,
@@ -39,6 +37,9 @@ from google.analytics.admin_v1beta import (
39
37
  )
40
38
  from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
41
39
 
40
+ from airflow.providers.google.common.consts import CLIENT_INFO
41
+ from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
42
+
42
43
  if TYPE_CHECKING:
43
44
  from google.analytics.admin_v1beta.services.analytics_admin_service.pagers import (
44
45
  ListAccountsPager,