apache-airflow-providers-google 16.0.0a1__py3-none-any.whl → 16.1.0__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 (172) hide show
  1. airflow/providers/google/__init__.py +1 -1
  2. airflow/providers/google/ads/hooks/ads.py +43 -5
  3. airflow/providers/google/ads/operators/ads.py +1 -1
  4. airflow/providers/google/ads/transfers/ads_to_gcs.py +1 -1
  5. airflow/providers/google/cloud/hooks/bigquery.py +63 -77
  6. airflow/providers/google/cloud/hooks/cloud_sql.py +8 -4
  7. airflow/providers/google/cloud/hooks/datacatalog.py +9 -1
  8. airflow/providers/google/cloud/hooks/dataflow.py +2 -2
  9. airflow/providers/google/cloud/hooks/dataplex.py +1 -1
  10. airflow/providers/google/cloud/hooks/dataprep.py +4 -1
  11. airflow/providers/google/cloud/hooks/gcs.py +5 -5
  12. airflow/providers/google/cloud/hooks/looker.py +10 -1
  13. airflow/providers/google/cloud/hooks/mlengine.py +2 -1
  14. airflow/providers/google/cloud/hooks/secret_manager.py +102 -10
  15. airflow/providers/google/cloud/hooks/spanner.py +2 -2
  16. airflow/providers/google/cloud/hooks/translate.py +1 -1
  17. airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +0 -36
  18. airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +307 -7
  19. airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +44 -80
  20. airflow/providers/google/cloud/hooks/vertex_ai/ray.py +11 -2
  21. airflow/providers/google/cloud/hooks/vision.py +2 -2
  22. airflow/providers/google/cloud/links/alloy_db.py +0 -46
  23. airflow/providers/google/cloud/links/base.py +75 -11
  24. airflow/providers/google/cloud/links/bigquery.py +0 -47
  25. airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
  26. airflow/providers/google/cloud/links/bigtable.py +0 -48
  27. airflow/providers/google/cloud/links/cloud_build.py +0 -73
  28. airflow/providers/google/cloud/links/cloud_functions.py +0 -33
  29. airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
  30. airflow/providers/google/cloud/links/cloud_run.py +27 -0
  31. airflow/providers/google/cloud/links/cloud_sql.py +0 -33
  32. airflow/providers/google/cloud/links/cloud_storage_transfer.py +16 -43
  33. airflow/providers/google/cloud/links/cloud_tasks.py +6 -25
  34. airflow/providers/google/cloud/links/compute.py +0 -58
  35. airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
  36. airflow/providers/google/cloud/links/datacatalog.py +23 -54
  37. airflow/providers/google/cloud/links/dataflow.py +0 -34
  38. airflow/providers/google/cloud/links/dataform.py +0 -64
  39. airflow/providers/google/cloud/links/datafusion.py +1 -96
  40. airflow/providers/google/cloud/links/dataplex.py +0 -154
  41. airflow/providers/google/cloud/links/dataprep.py +0 -24
  42. airflow/providers/google/cloud/links/dataproc.py +14 -90
  43. airflow/providers/google/cloud/links/datastore.py +0 -31
  44. airflow/providers/google/cloud/links/kubernetes_engine.py +5 -59
  45. airflow/providers/google/cloud/links/life_sciences.py +0 -19
  46. airflow/providers/google/cloud/links/managed_kafka.py +0 -70
  47. airflow/providers/google/cloud/links/mlengine.py +0 -70
  48. airflow/providers/google/cloud/links/pubsub.py +0 -32
  49. airflow/providers/google/cloud/links/spanner.py +0 -33
  50. airflow/providers/google/cloud/links/stackdriver.py +0 -30
  51. airflow/providers/google/cloud/links/translate.py +16 -186
  52. airflow/providers/google/cloud/links/vertex_ai.py +8 -224
  53. airflow/providers/google/cloud/links/workflows.py +0 -52
  54. airflow/providers/google/cloud/log/gcs_task_handler.py +4 -4
  55. airflow/providers/google/cloud/operators/alloy_db.py +69 -54
  56. airflow/providers/google/cloud/operators/automl.py +16 -14
  57. airflow/providers/google/cloud/operators/bigquery.py +49 -25
  58. airflow/providers/google/cloud/operators/bigquery_dts.py +2 -4
  59. airflow/providers/google/cloud/operators/bigtable.py +35 -6
  60. airflow/providers/google/cloud/operators/cloud_base.py +21 -1
  61. airflow/providers/google/cloud/operators/cloud_build.py +74 -31
  62. airflow/providers/google/cloud/operators/cloud_composer.py +34 -35
  63. airflow/providers/google/cloud/operators/cloud_memorystore.py +68 -42
  64. airflow/providers/google/cloud/operators/cloud_run.py +9 -1
  65. airflow/providers/google/cloud/operators/cloud_sql.py +11 -15
  66. airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +0 -2
  67. airflow/providers/google/cloud/operators/compute.py +7 -39
  68. airflow/providers/google/cloud/operators/datacatalog.py +156 -20
  69. airflow/providers/google/cloud/operators/dataflow.py +37 -14
  70. airflow/providers/google/cloud/operators/dataform.py +14 -4
  71. airflow/providers/google/cloud/operators/datafusion.py +4 -12
  72. airflow/providers/google/cloud/operators/dataplex.py +180 -96
  73. airflow/providers/google/cloud/operators/dataprep.py +0 -4
  74. airflow/providers/google/cloud/operators/dataproc.py +10 -16
  75. airflow/providers/google/cloud/operators/dataproc_metastore.py +95 -87
  76. airflow/providers/google/cloud/operators/datastore.py +21 -5
  77. airflow/providers/google/cloud/operators/dlp.py +3 -26
  78. airflow/providers/google/cloud/operators/functions.py +15 -6
  79. airflow/providers/google/cloud/operators/gcs.py +1 -7
  80. airflow/providers/google/cloud/operators/kubernetes_engine.py +53 -92
  81. airflow/providers/google/cloud/operators/life_sciences.py +0 -1
  82. airflow/providers/google/cloud/operators/managed_kafka.py +106 -51
  83. airflow/providers/google/cloud/operators/mlengine.py +0 -1
  84. airflow/providers/google/cloud/operators/pubsub.py +4 -5
  85. airflow/providers/google/cloud/operators/spanner.py +0 -4
  86. airflow/providers/google/cloud/operators/speech_to_text.py +0 -1
  87. airflow/providers/google/cloud/operators/stackdriver.py +0 -8
  88. airflow/providers/google/cloud/operators/tasks.py +0 -11
  89. airflow/providers/google/cloud/operators/text_to_speech.py +0 -1
  90. airflow/providers/google/cloud/operators/translate.py +37 -13
  91. airflow/providers/google/cloud/operators/translate_speech.py +0 -1
  92. airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +31 -18
  93. airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +28 -8
  94. airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +38 -25
  95. airflow/providers/google/cloud/operators/vertex_ai/dataset.py +69 -7
  96. airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +42 -8
  97. airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +531 -0
  98. airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +93 -117
  99. airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +10 -8
  100. airflow/providers/google/cloud/operators/vertex_ai/model_service.py +56 -10
  101. airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +29 -6
  102. airflow/providers/google/cloud/operators/vertex_ai/ray.py +9 -6
  103. airflow/providers/google/cloud/operators/workflows.py +1 -9
  104. airflow/providers/google/cloud/sensors/bigquery.py +1 -1
  105. airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -1
  106. airflow/providers/google/cloud/sensors/bigtable.py +15 -3
  107. airflow/providers/google/cloud/sensors/cloud_composer.py +6 -1
  108. airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -1
  109. airflow/providers/google/cloud/sensors/dataflow.py +3 -3
  110. airflow/providers/google/cloud/sensors/dataform.py +6 -1
  111. airflow/providers/google/cloud/sensors/datafusion.py +6 -1
  112. airflow/providers/google/cloud/sensors/dataplex.py +6 -1
  113. airflow/providers/google/cloud/sensors/dataprep.py +6 -1
  114. airflow/providers/google/cloud/sensors/dataproc.py +6 -1
  115. airflow/providers/google/cloud/sensors/dataproc_metastore.py +6 -1
  116. airflow/providers/google/cloud/sensors/gcs.py +9 -3
  117. airflow/providers/google/cloud/sensors/looker.py +6 -1
  118. airflow/providers/google/cloud/sensors/pubsub.py +8 -3
  119. airflow/providers/google/cloud/sensors/tasks.py +6 -1
  120. airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +6 -1
  121. airflow/providers/google/cloud/sensors/workflows.py +6 -1
  122. airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +1 -1
  123. airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +1 -1
  124. airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +10 -7
  125. airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +1 -2
  126. airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +0 -1
  127. airflow/providers/google/cloud/transfers/bigquery_to_sql.py +1 -1
  128. airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
  129. airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +1 -1
  130. airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +2 -2
  131. airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +1 -2
  132. airflow/providers/google/cloud/transfers/gcs_to_gcs.py +1 -1
  133. airflow/providers/google/cloud/transfers/gcs_to_local.py +1 -1
  134. airflow/providers/google/cloud/transfers/gcs_to_sftp.py +1 -1
  135. airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +5 -1
  136. airflow/providers/google/cloud/transfers/gdrive_to_local.py +1 -1
  137. airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
  138. airflow/providers/google/cloud/transfers/local_to_gcs.py +1 -1
  139. airflow/providers/google/cloud/transfers/s3_to_gcs.py +11 -5
  140. airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +1 -1
  141. airflow/providers/google/cloud/transfers/sftp_to_gcs.py +1 -1
  142. airflow/providers/google/cloud/transfers/sheets_to_gcs.py +2 -2
  143. airflow/providers/google/cloud/transfers/sql_to_gcs.py +1 -1
  144. airflow/providers/google/cloud/triggers/bigquery.py +32 -5
  145. airflow/providers/google/cloud/triggers/dataproc.py +62 -10
  146. airflow/providers/google/cloud/utils/field_validator.py +1 -2
  147. airflow/providers/google/common/auth_backend/google_openid.py +2 -1
  148. airflow/providers/google/common/deprecated.py +2 -1
  149. airflow/providers/google/common/hooks/base_google.py +7 -3
  150. airflow/providers/google/common/links/storage.py +0 -22
  151. airflow/providers/google/firebase/operators/firestore.py +1 -1
  152. airflow/providers/google/get_provider_info.py +14 -16
  153. airflow/providers/google/leveldb/hooks/leveldb.py +30 -1
  154. airflow/providers/google/leveldb/operators/leveldb.py +1 -1
  155. airflow/providers/google/marketing_platform/links/analytics_admin.py +3 -6
  156. airflow/providers/google/marketing_platform/operators/analytics_admin.py +0 -1
  157. airflow/providers/google/marketing_platform/operators/campaign_manager.py +4 -4
  158. airflow/providers/google/marketing_platform/operators/display_video.py +6 -6
  159. airflow/providers/google/marketing_platform/operators/search_ads.py +1 -1
  160. airflow/providers/google/marketing_platform/sensors/campaign_manager.py +6 -1
  161. airflow/providers/google/marketing_platform/sensors/display_video.py +6 -1
  162. airflow/providers/google/suite/operators/sheets.py +3 -3
  163. airflow/providers/google/suite/sensors/drive.py +6 -1
  164. airflow/providers/google/suite/transfers/gcs_to_gdrive.py +1 -1
  165. airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
  166. airflow/providers/google/suite/transfers/local_to_drive.py +1 -1
  167. airflow/providers/google/version_compat.py +28 -0
  168. {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/METADATA +35 -35
  169. {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/RECORD +171 -170
  170. airflow/providers/google/cloud/links/automl.py +0 -193
  171. {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/WHEEL +0 -0
  172. {apache_airflow_providers_google-16.0.0a1.dist-info → apache_airflow_providers_google-16.1.0.dist-info}/entry_points.txt +0 -0
@@ -528,10 +528,6 @@ def get_provider_info():
528
528
  "integration-name": "Google Compute Engine",
529
529
  "python-modules": ["airflow.providers.google.cloud.operators.compute"],
530
530
  },
531
- {
532
- "integration-name": "Google Data Catalog",
533
- "python-modules": ["airflow.providers.google.cloud.operators.datacatalog"],
534
- },
535
531
  {
536
532
  "integration-name": "Google Dataflow",
537
533
  "python-modules": ["airflow.providers.google.cloud.operators.dataflow"],
@@ -865,10 +861,6 @@ def get_provider_info():
865
861
  "airflow.providers.google.cloud.hooks.compute_ssh",
866
862
  ],
867
863
  },
868
- {
869
- "integration-name": "Google Data Catalog",
870
- "python-modules": ["airflow.providers.google.cloud.hooks.datacatalog"],
871
- },
872
864
  {
873
865
  "integration-name": "Google Dataflow",
874
866
  "python-modules": ["airflow.providers.google.cloud.hooks.dataflow"],
@@ -1338,6 +1330,12 @@ def get_provider_info():
1338
1330
  "python-module": "airflow.providers.google.cloud.transfers.azure_blob_to_gcs",
1339
1331
  "how-to-guide": "/docs/apache-airflow-providers-google/operators/transfer/azure_blob_to_gcs.rst",
1340
1332
  },
1333
+ {
1334
+ "source-integration-name": "Hypertext Transfer Protocol (HTTP)",
1335
+ "target-integration-name": "Google Cloud Storage (GCS)",
1336
+ "python-module": "airflow.providers.google.cloud.transfers.http_to_gcs",
1337
+ "how-to-guide": "/docs/apache-airflow-providers-google/operators/transfer/http_to_gcs.rst",
1338
+ },
1341
1339
  ],
1342
1340
  "connection-types": [
1343
1341
  {
@@ -1368,6 +1366,14 @@ def get_provider_info():
1368
1366
  "hook-class-name": "airflow.providers.google.leveldb.hooks.leveldb.LevelDBHook",
1369
1367
  "connection-type": "leveldb",
1370
1368
  },
1369
+ {
1370
+ "hook-class-name": "airflow.providers.google.ads.hooks.ads.GoogleAdsHook",
1371
+ "connection-type": "google_ads",
1372
+ },
1373
+ {
1374
+ "hook-class-name": "airflow.providers.google.cloud.hooks.looker.LookerHook",
1375
+ "connection-type": "gcp_looker",
1376
+ },
1371
1377
  ],
1372
1378
  "extra-links": [
1373
1379
  "airflow.providers.google.cloud.links.alloy_db.AlloyDBBackupsLink",
@@ -1400,9 +1406,6 @@ def get_provider_info():
1400
1406
  "airflow.providers.google.cloud.links.compute.ComputeInstanceGroupManagerDetailsLink",
1401
1407
  "airflow.providers.google.cloud.links.cloud_tasks.CloudTasksQueueLink",
1402
1408
  "airflow.providers.google.cloud.links.cloud_tasks.CloudTasksLink",
1403
- "airflow.providers.google.cloud.links.datacatalog.DataCatalogEntryGroupLink",
1404
- "airflow.providers.google.cloud.links.datacatalog.DataCatalogEntryLink",
1405
- "airflow.providers.google.cloud.links.datacatalog.DataCatalogTagTemplateLink",
1406
1409
  "airflow.providers.google.cloud.links.dataproc.DataprocLink",
1407
1410
  "airflow.providers.google.cloud.links.dataproc.DataprocListLink",
1408
1411
  "airflow.providers.google.cloud.links.dataproc.DataprocClusterLink",
@@ -1461,11 +1464,6 @@ def get_provider_info():
1461
1464
  "airflow.providers.google.cloud.links.cloud_build.CloudBuildListLink",
1462
1465
  "airflow.providers.google.cloud.links.cloud_build.CloudBuildTriggersListLink",
1463
1466
  "airflow.providers.google.cloud.links.cloud_build.CloudBuildTriggerDetailsLink",
1464
- "airflow.providers.google.cloud.links.automl.AutoMLDatasetLink",
1465
- "airflow.providers.google.cloud.links.automl.AutoMLDatasetListLink",
1466
- "airflow.providers.google.cloud.links.automl.AutoMLModelLink",
1467
- "airflow.providers.google.cloud.links.automl.AutoMLModelTrainLink",
1468
- "airflow.providers.google.cloud.links.automl.AutoMLModelPredictLink",
1469
1467
  "airflow.providers.google.cloud.links.life_sciences.LifeSciencesLink",
1470
1468
  "airflow.providers.google.cloud.links.cloud_functions.CloudFunctionsDetailsLink",
1471
1469
  "airflow.providers.google.cloud.links.cloud_functions.CloudFunctionsListLink",
@@ -18,8 +18,14 @@
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
+
25
+ try:
26
+ from airflow.sdk import BaseHook
27
+ except ImportError:
28
+ from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]
23
29
 
24
30
  try:
25
31
  import plyvel
@@ -46,6 +52,29 @@ class LevelDBHook(BaseHook):
46
52
  conn_type = "leveldb"
47
53
  hook_name = "LevelDB"
48
54
 
55
+ @classmethod
56
+ def get_connection_form_widgets(cls) -> dict[str, Any]:
57
+ """Return connection widgets to add to LevelDB connection form."""
58
+ from flask_babel import lazy_gettext
59
+ from wtforms import BooleanField
60
+
61
+ return {
62
+ "create_if_missing": BooleanField(
63
+ lazy_gettext("Create a database if it does not exist"), default=False
64
+ ),
65
+ "error_if_exists": BooleanField(
66
+ lazy_gettext("Raise an exception if the database already exists"), default=False
67
+ ),
68
+ }
69
+
70
+ @classmethod
71
+ def get_ui_field_behaviour(cls) -> dict[str, Any]:
72
+ """Return custom UI field behaviour for LevelDB connection."""
73
+ return {
74
+ "hidden_fields": ["login", "password", "schema", "port"],
75
+ "relabeling": {},
76
+ }
77
+
49
78
  def __init__(self, leveldb_conn_id: str = default_conn_name):
50
79
  super().__init__()
51
80
  self.leveldb_conn_id = leveldb_conn_id
@@ -18,8 +18,8 @@ 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
25
  from airflow.utils.context import Context
@@ -18,13 +18,12 @@ from __future__ import annotations
18
18
 
19
19
  from typing import TYPE_CHECKING, ClassVar
20
20
 
21
+ from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS, BaseOperator
22
+
21
23
  if TYPE_CHECKING:
22
- from airflow.models import BaseOperator
23
24
  from airflow.models.taskinstancekey import TaskInstanceKey
24
25
  from airflow.utils.context import Context
25
26
 
26
- from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS
27
-
28
27
  if AIRFLOW_V_3_0_PLUS:
29
28
  from airflow.sdk import BaseOperatorLink
30
29
  from airflow.sdk.execution_time.xcom import XCom
@@ -64,11 +63,9 @@ class GoogleAnalyticsPropertyLink(GoogleAnalyticsBaseLink):
64
63
  @staticmethod
65
64
  def persist(
66
65
  context: Context,
67
- task_instance: BaseOperator,
68
66
  property_id: str,
69
67
  ):
70
- task_instance.xcom_push(
71
- context,
68
+ context["task_instance"].xcom_push(
72
69
  key=GoogleAnalyticsPropertyLink.key,
73
70
  value={"property_id": property_id},
74
71
  )
@@ -194,7 +194,6 @@ class GoogleAnalyticsAdminCreatePropertyOperator(GoogleCloudBaseOperator):
194
194
  self.log.info("The Google Analytics property %s was created successfully.", prop.name)
195
195
  GoogleAnalyticsPropertyLink.persist(
196
196
  context=context,
197
- task_instance=self,
198
197
  property_id=prop.name.lstrip("properties/"),
199
198
  )
200
199
 
@@ -28,9 +28,9 @@ from typing import TYPE_CHECKING, Any
28
28
  from googleapiclient import http
29
29
 
30
30
  from airflow.exceptions import AirflowException
31
- from airflow.models import BaseOperator
32
31
  from airflow.providers.google.cloud.hooks.gcs import GCSHook
33
32
  from airflow.providers.google.marketing_platform.hooks.campaign_manager import GoogleCampaignManagerHook
33
+ from airflow.providers.google.version_compat import BaseOperator
34
34
 
35
35
  if TYPE_CHECKING:
36
36
  from airflow.utils.context import Context
@@ -237,7 +237,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
237
237
  mime_type="text/csv",
238
238
  )
239
239
 
240
- self.xcom_push(context, key="report_name", value=report_name)
240
+ context["task_instance"].xcom_push(key="report_name", value=report_name)
241
241
 
242
242
 
243
243
  class GoogleCampaignManagerInsertReportOperator(BaseOperator):
@@ -308,7 +308,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
308
308
  self.log.info("Inserting Campaign Manager report.")
309
309
  response = hook.insert_report(profile_id=self.profile_id, report=self.report)
310
310
  report_id = response.get("id")
311
- self.xcom_push(context, key="report_id", value=report_id)
311
+ context["task_instance"].xcom_push(key="report_id", value=report_id)
312
312
  self.log.info("Report successfully inserted. Report id: %s", report_id)
313
313
  return response
314
314
 
@@ -381,7 +381,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
381
381
  synchronous=self.synchronous,
382
382
  )
383
383
  file_id = response.get("id")
384
- self.xcom_push(context, key="file_id", value=file_id)
384
+ context["task_instance"].xcom_push(key="file_id", value=file_id)
385
385
  self.log.info("Report file id: %s", file_id)
386
386
  return response
387
387
 
@@ -29,9 +29,9 @@ from typing import TYPE_CHECKING, Any
29
29
  from urllib.parse import urlsplit
30
30
 
31
31
  from airflow.exceptions import AirflowException
32
- from airflow.models import BaseOperator
33
32
  from airflow.providers.google.cloud.hooks.gcs import GCSHook
34
33
  from airflow.providers.google.marketing_platform.hooks.display_video import GoogleDisplayVideo360Hook
34
+ from airflow.providers.google.version_compat import BaseOperator
35
35
 
36
36
  if TYPE_CHECKING:
37
37
  from airflow.utils.context import Context
@@ -99,7 +99,7 @@ class GoogleDisplayVideo360CreateQueryOperator(BaseOperator):
99
99
  self.log.info("Creating Display & Video 360 query.")
100
100
  response = hook.create_query(query=self.body)
101
101
  query_id = response["queryId"]
102
- self.xcom_push(context, key="query_id", value=query_id)
102
+ context["task_instance"].xcom_push(key="query_id", value=query_id)
103
103
  self.log.info("Created query with ID: %s", query_id)
104
104
  return response
105
105
 
@@ -295,7 +295,7 @@ class GoogleDisplayVideo360DownloadReportV2Operator(BaseOperator):
295
295
  self.bucket_name,
296
296
  report_name,
297
297
  )
298
- self.xcom_push(context, key="report_name", value=report_name)
298
+ context["task_instance"].xcom_push(key="report_name", value=report_name)
299
299
 
300
300
 
301
301
  class GoogleDisplayVideo360RunQueryOperator(BaseOperator):
@@ -360,8 +360,8 @@ class GoogleDisplayVideo360RunQueryOperator(BaseOperator):
360
360
  self.parameters,
361
361
  )
362
362
  response = hook.run_query(query_id=self.query_id, params=self.parameters)
363
- self.xcom_push(context, key="query_id", value=response["key"]["queryId"])
364
- self.xcom_push(context, key="report_id", value=response["key"]["reportId"])
363
+ context["task_instance"].xcom_push(key="query_id", value=response["key"]["queryId"])
364
+ context["task_instance"].xcom_push(key="report_id", value=response["key"]["reportId"])
365
365
  return response
366
366
 
367
367
 
@@ -564,7 +564,7 @@ class GoogleDisplayVideo360CreateSDFDownloadTaskOperator(BaseOperator):
564
564
  operation = hook.create_sdf_download_operation(body_request=self.body_request)
565
565
 
566
566
  name = operation["name"]
567
- self.xcom_push(context, key="name", value=name)
567
+ context["task_instance"].xcom_push(key="name", value=name)
568
568
  self.log.info("Created SDF operation with name: %s", name)
569
569
 
570
570
  return operation
@@ -23,8 +23,8 @@ from collections.abc import Sequence
23
23
  from functools import cached_property
24
24
  from typing import TYPE_CHECKING, Any
25
25
 
26
- from airflow.models import BaseOperator
27
26
  from airflow.providers.google.marketing_platform.hooks.search_ads import GoogleSearchAdsReportingHook
27
+ from airflow.providers.google.version_compat import BaseOperator
28
28
 
29
29
  if TYPE_CHECKING:
30
30
  from airflow.utils.context import Context
@@ -23,7 +23,12 @@ from collections.abc import Sequence
23
23
  from typing import TYPE_CHECKING
24
24
 
25
25
  from airflow.providers.google.marketing_platform.hooks.campaign_manager import GoogleCampaignManagerHook
26
- from airflow.sensors.base import BaseSensorOperator
26
+ from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS
27
+
28
+ if AIRFLOW_V_3_0_PLUS:
29
+ from airflow.sdk import BaseSensorOperator
30
+ else:
31
+ from airflow.sensors.base import BaseSensorOperator # type: ignore[no-redef]
27
32
 
28
33
  if TYPE_CHECKING:
29
34
  from airflow.utils.context import Context
@@ -23,7 +23,12 @@ from typing import TYPE_CHECKING
23
23
 
24
24
  from airflow.exceptions import AirflowException
25
25
  from airflow.providers.google.marketing_platform.hooks.display_video import GoogleDisplayVideo360Hook
26
- from airflow.sensors.base import BaseSensorOperator
26
+ from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS
27
+
28
+ if AIRFLOW_V_3_0_PLUS:
29
+ from airflow.sdk import BaseSensorOperator
30
+ else:
31
+ from airflow.sensors.base import BaseSensorOperator # type: ignore[no-redef]
27
32
 
28
33
  if TYPE_CHECKING:
29
34
  from airflow.utils.context import Context
@@ -19,8 +19,8 @@ from __future__ import annotations
19
19
  from collections.abc import Sequence
20
20
  from typing import Any
21
21
 
22
- from airflow.models import BaseOperator
23
22
  from airflow.providers.google.suite.hooks.sheets import GSheetsHook
23
+ from airflow.providers.google.version_compat import BaseOperator
24
24
 
25
25
 
26
26
  class GoogleSheetsCreateSpreadsheetOperator(BaseOperator):
@@ -68,6 +68,6 @@ class GoogleSheetsCreateSpreadsheetOperator(BaseOperator):
68
68
  impersonation_chain=self.impersonation_chain,
69
69
  )
70
70
  spreadsheet = hook.create_spreadsheet(spreadsheet=self.spreadsheet)
71
- self.xcom_push(context, "spreadsheet_id", spreadsheet["spreadsheetId"])
72
- self.xcom_push(context, "spreadsheet_url", spreadsheet["spreadsheetUrl"])
71
+ context["task_instance"].xcom_push(key="spreadsheet_id", value=spreadsheet["spreadsheetId"])
72
+ context["task_instance"].xcom_push(key="spreadsheet_url", value=spreadsheet["spreadsheetUrl"])
73
73
  return spreadsheet
@@ -23,7 +23,12 @@ from collections.abc import Sequence
23
23
  from typing import TYPE_CHECKING
24
24
 
25
25
  from airflow.providers.google.suite.hooks.drive import GoogleDriveHook
26
- from airflow.sensors.base import BaseSensorOperator
26
+ from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS
27
+
28
+ if AIRFLOW_V_3_0_PLUS:
29
+ from airflow.sdk import BaseSensorOperator
30
+ else:
31
+ from airflow.sensors.base import BaseSensorOperator # type: ignore[no-redef]
27
32
 
28
33
  if TYPE_CHECKING:
29
34
  from airflow.utils.context import Context
@@ -24,9 +24,9 @@ from collections.abc import Sequence
24
24
  from typing import TYPE_CHECKING
25
25
 
26
26
  from airflow.exceptions import AirflowException
27
- from airflow.models import BaseOperator
28
27
  from airflow.providers.google.cloud.hooks.gcs import GCSHook
29
28
  from airflow.providers.google.suite.hooks.drive import GoogleDriveHook
29
+ from airflow.providers.google.version_compat import BaseOperator
30
30
 
31
31
  if TYPE_CHECKING:
32
32
  from airflow.utils.context import Context
@@ -21,9 +21,9 @@ from collections.abc import Sequence
21
21
  from tempfile import NamedTemporaryFile
22
22
  from typing import Any
23
23
 
24
- from airflow.models import BaseOperator
25
24
  from airflow.providers.google.cloud.hooks.gcs import GCSHook
26
25
  from airflow.providers.google.suite.hooks.sheets import GSheetsHook
26
+ from airflow.providers.google.version_compat import BaseOperator
27
27
 
28
28
 
29
29
  class GCSToGoogleSheetsOperator(BaseOperator):
@@ -24,8 +24,8 @@ from pathlib import Path
24
24
  from typing import TYPE_CHECKING
25
25
 
26
26
  from airflow.exceptions import AirflowFailException
27
- from airflow.models import BaseOperator
28
27
  from airflow.providers.google.suite.hooks.drive import GoogleDriveHook
28
+ from airflow.providers.google.version_compat import BaseOperator
29
29
 
30
30
  if TYPE_CHECKING:
31
31
  from airflow.utils.context import Context
@@ -33,3 +33,31 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
33
33
 
34
34
 
35
35
  AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
36
+ AIRFLOW_V_3_1_PLUS = get_base_airflow_version_tuple() >= (3, 1, 0)
37
+
38
+ # Version-compatible imports
39
+ # BaseOperator: Use 3.1+ due to xcom_push method missing in SDK BaseOperator 3.0.x
40
+ # This is needed for DecoratedOperator compatibility
41
+ if AIRFLOW_V_3_1_PLUS:
42
+ from airflow.sdk import BaseOperator
43
+ else:
44
+ from airflow.models import BaseOperator
45
+
46
+ # Other SDK components: Available since 3.0+
47
+ if AIRFLOW_V_3_0_PLUS:
48
+ from airflow.sdk import (
49
+ BaseOperatorLink,
50
+ BaseSensorOperator,
51
+ )
52
+ else:
53
+ from airflow.models import BaseOperatorLink # type: ignore[no-redef]
54
+ from airflow.sensors.base import BaseSensorOperator # type: ignore[no-redef]
55
+
56
+ # Explicitly export these imports to protect them from being removed by linters
57
+ __all__ = [
58
+ "AIRFLOW_V_3_0_PLUS",
59
+ "AIRFLOW_V_3_1_PLUS",
60
+ "BaseOperator",
61
+ "BaseSensorOperator",
62
+ "BaseOperatorLink",
63
+ ]
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-google
3
- Version: 16.0.0a1
3
+ Version: 16.1.0
4
4
  Summary: Provider package apache-airflow-providers-google for Apache Airflow
5
5
  Keywords: airflow-provider,google,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
7
7
  Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
8
- Requires-Python: ~=3.9
8
+ Requires-Python: ~=3.10
9
9
  Description-Content-Type: text/x-rst
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
@@ -15,14 +15,13 @@ Classifier: Intended Audience :: System Administrators
15
15
  Classifier: Framework :: Apache Airflow
16
16
  Classifier: Framework :: Apache Airflow :: Provider
17
17
  Classifier: License :: OSI Approved :: Apache Software License
18
- Classifier: Programming Language :: Python :: 3.9
19
18
  Classifier: Programming Language :: Python :: 3.10
20
19
  Classifier: Programming Language :: Python :: 3.11
21
20
  Classifier: Programming Language :: Python :: 3.12
22
21
  Classifier: Topic :: System :: Monitoring
23
- Requires-Dist: apache-airflow>=2.10.0a1
24
- Requires-Dist: apache-airflow-providers-common-compat>=1.4.0a1
25
- Requires-Dist: apache-airflow-providers-common-sql>=1.20.0a1
22
+ Requires-Dist: apache-airflow>=2.10.0
23
+ Requires-Dist: apache-airflow-providers-common-compat>=1.4.0
24
+ Requires-Dist: apache-airflow-providers-common-sql>=1.27.0
26
25
  Requires-Dist: asgiref>=3.5.2
27
26
  Requires-Dist: dill>=0.2.3
28
27
  Requires-Dist: gcloud-aio-auth>=5.2.0
@@ -37,11 +36,11 @@ Requires-Dist: google-auth>=2.29.0
37
36
  Requires-Dist: google-auth-httplib2>=0.0.1
38
37
  Requires-Dist: google-cloud-aiplatform[evaluation, ray]>=1.73.0;python_version < '3.12'
39
38
  Requires-Dist: google-cloud-aiplatform[evaluation]>=1.73.0;python_version >= '3.12'
40
- Requires-Dist: ray[default]>=2.42.0 ; python_version >= '3.12'
39
+ Requires-Dist: ray[default]>=2.42.0 ; python_version >= '3.12' and python_version < '3.13'
41
40
  Requires-Dist: google-cloud-bigquery-storage>=2.31.0; python_version >= '3.12'
42
41
  Requires-Dist: google-cloud-alloydb>=0.4.0
43
42
  Requires-Dist: google-cloud-automl>=2.12.0
44
- Requires-Dist: google-cloud-bigquery>=3.4.0,!=3.21.*,!=3.22.0,!=3.23.*
43
+ Requires-Dist: google-cloud-bigquery>=3.24.0
45
44
  Requires-Dist: google-cloud-bigquery-datatransfer>=3.13.0
46
45
  Requires-Dist: google-cloud-bigtable>=2.17.0
47
46
  Requires-Dist: google-cloud-build>=3.31.0
@@ -65,7 +64,7 @@ Requires-Dist: google-cloud-os-login>=2.9.1
65
64
  Requires-Dist: google-cloud-pubsub>=2.21.3
66
65
  Requires-Dist: google-cloud-redis>=2.12.0
67
66
  Requires-Dist: google-cloud-secret-manager>=2.16.0
68
- Requires-Dist: google-cloud-spanner>=3.11.1,!=3.49.0
67
+ Requires-Dist: google-cloud-spanner>=3.50.0
69
68
  Requires-Dist: google-cloud-speech>=2.18.0
70
69
  Requires-Dist: google-cloud-storage>=2.7.0
71
70
  Requires-Dist: google-cloud-storage-transfer>=1.4.1
@@ -81,29 +80,29 @@ Requires-Dist: grpcio-gcp>=0.2.2
81
80
  Requires-Dist: httpx>=0.25.0
82
81
  Requires-Dist: looker-sdk>=22.4.0,!=24.18.0
83
82
  Requires-Dist: pandas-gbq>=0.7.0
84
- Requires-Dist: pandas>=2.1.2,<2.2
85
83
  Requires-Dist: proto-plus>=1.19.6
86
- Requires-Dist: pyarrow>=14.0.1
84
+ Requires-Dist: pyarrow>=16.1.0
87
85
  Requires-Dist: python-slugify>=7.0.0
88
86
  Requires-Dist: PyOpenSSL>=23.0.0
89
87
  Requires-Dist: sqlalchemy-bigquery>=1.2.1
90
88
  Requires-Dist: sqlalchemy-spanner>=1.6.2
91
- Requires-Dist: tenacity>=8.1.0
89
+ Requires-Dist: tenacity>=8.3.0
92
90
  Requires-Dist: immutabledict>=4.2.0
93
91
  Requires-Dist: types-protobuf!=5.29.1.20250402,>=5.27.0
94
- Requires-Dist: apache-airflow-providers-amazon>=2.6.0a1 ; extra == "amazon"
92
+ Requires-Dist: apache-airflow-providers-amazon>=2.6.0 ; extra == "amazon"
95
93
  Requires-Dist: apache-beam[gcp]>=2.53.0 ; extra == "apache-beam" and ( python_version < "3.12")
96
94
  Requires-Dist: apache-beam[gcp]>=2.57.0 ; extra == "apache-beam" and ( python_version >= "3.12")
97
95
  Requires-Dist: apache-airflow-providers-apache-cassandra ; extra == "apache-cassandra"
98
- Requires-Dist: apache-airflow-providers-cncf-kubernetes>=10.1.0a1 ; extra == "cncf-kubernetes"
99
- Requires-Dist: apache-airflow-providers-fab>=2.0.0a1 ; extra == "fab"
100
- Requires-Dist: apache-airflow-providers-facebook>=2.2.0a1 ; extra == "facebook"
96
+ Requires-Dist: apache-airflow-providers-cncf-kubernetes>=10.1.0 ; extra == "cncf-kubernetes"
97
+ Requires-Dist: apache-airflow-providers-fab>=2.0.0 ; extra == "fab"
98
+ Requires-Dist: apache-airflow-providers-facebook>=2.2.0 ; extra == "facebook"
99
+ Requires-Dist: apache-airflow-providers-http ; extra == "http"
101
100
  Requires-Dist: plyvel>=1.5.1 ; extra == "leveldb"
102
101
  Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == "microsoft-azure"
103
102
  Requires-Dist: apache-airflow-providers-microsoft-mssql ; extra == "microsoft-mssql"
104
103
  Requires-Dist: apache-airflow-providers-mysql ; extra == "mysql"
105
104
  Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
106
- Requires-Dist: apache-airflow-providers-oracle>=3.1.0a1 ; extra == "oracle"
105
+ Requires-Dist: apache-airflow-providers-oracle>=3.1.0 ; extra == "oracle"
107
106
  Requires-Dist: apache-airflow-providers-postgres ; extra == "postgres"
108
107
  Requires-Dist: apache-airflow-providers-presto ; extra == "presto"
109
108
  Requires-Dist: apache-airflow-providers-salesforce ; extra == "salesforce"
@@ -111,8 +110,8 @@ Requires-Dist: apache-airflow-providers-sftp ; extra == "sftp"
111
110
  Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
112
111
  Requires-Dist: apache-airflow-providers-trino ; extra == "trino"
113
112
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
114
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-google/16.0.0/changelog.html
115
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-google/16.0.0
113
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-google/16.1.0/changelog.html
114
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-google/16.1.0
116
115
  Project-URL: Mastodon, https://fosstodon.org/@airflow
117
116
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
118
117
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -123,6 +122,7 @@ Provides-Extra: apache-cassandra
123
122
  Provides-Extra: cncf-kubernetes
124
123
  Provides-Extra: fab
125
124
  Provides-Extra: facebook
125
+ Provides-Extra: http
126
126
  Provides-Extra: leveldb
127
127
  Provides-Extra: microsoft-azure
128
128
  Provides-Extra: microsoft-mssql
@@ -161,7 +161,7 @@ Provides-Extra: trino
161
161
 
162
162
  Package ``apache-airflow-providers-google``
163
163
 
164
- Release: ``15.1.0``
164
+ Release: ``16.1.0``
165
165
 
166
166
 
167
167
  Google services including:
@@ -181,7 +181,7 @@ This is a provider package for ``google`` provider. All classes for this provide
181
181
  are in ``airflow.providers.google`` python package.
182
182
 
183
183
  You can find package information and changelog for the provider
184
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-google/15.1.0/>`_.
184
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-google/16.1.0/>`_.
185
185
 
186
186
  Installation
187
187
  ------------
@@ -190,17 +190,17 @@ You can install this package on top of an existing Airflow 2 installation (see `
190
190
  for the minimum Airflow version supported) via
191
191
  ``pip install apache-airflow-providers-google``
192
192
 
193
- The package supports the following python versions: 3.9,3.10,3.11,3.12
193
+ The package supports the following python versions: 3.10,3.11,3.12
194
194
 
195
195
  Requirements
196
196
  ------------
197
197
 
198
- =========================================== ======================================
198
+ =========================================== ==================================================================
199
199
  PIP package Version required
200
- =========================================== ======================================
200
+ =========================================== ==================================================================
201
201
  ``apache-airflow`` ``>=2.10.0``
202
202
  ``apache-airflow-providers-common-compat`` ``>=1.4.0``
203
- ``apache-airflow-providers-common-sql`` ``>=1.20.0``
203
+ ``apache-airflow-providers-common-sql`` ``>=1.27.0``
204
204
  ``asgiref`` ``>=3.5.2``
205
205
  ``dill`` ``>=0.2.3``
206
206
  ``gcloud-aio-auth`` ``>=5.2.0``
@@ -215,11 +215,11 @@ PIP package Version required
215
215
  ``google-auth-httplib2`` ``>=0.0.1``
216
216
  ``google-cloud-aiplatform[evaluation,ray]`` ``>=1.73.0; python_version < "3.12"``
217
217
  ``google-cloud-aiplatform[evaluation]`` ``>=1.73.0; python_version >= "3.12"``
218
- ``ray[default]`` ``==2.42.0; python_version >= "3.12"``
219
- ``google-cloud-bigquery-storage`` ``==2.31.0; python_version >= "3.12"``
218
+ ``ray[default]`` ``>=2.42.0; python_version >= "3.12" and python_version < "3.13"``
219
+ ``google-cloud-bigquery-storage`` ``>=2.31.0; python_version >= "3.12"``
220
220
  ``google-cloud-alloydb`` ``>=0.4.0``
221
221
  ``google-cloud-automl`` ``>=2.12.0``
222
- ``google-cloud-bigquery`` ``!=3.21.*,!=3.22.0,!=3.23.*,>=3.4.0``
222
+ ``google-cloud-bigquery`` ``>=3.24.0``
223
223
  ``google-cloud-bigquery-datatransfer`` ``>=3.13.0``
224
224
  ``google-cloud-bigtable`` ``>=2.17.0``
225
225
  ``google-cloud-build`` ``>=3.31.0``
@@ -243,7 +243,7 @@ PIP package Version required
243
243
  ``google-cloud-pubsub`` ``>=2.21.3``
244
244
  ``google-cloud-redis`` ``>=2.12.0``
245
245
  ``google-cloud-secret-manager`` ``>=2.16.0``
246
- ``google-cloud-spanner`` ``>=3.11.1,!=3.49.0``
246
+ ``google-cloud-spanner`` ``>=3.50.0``
247
247
  ``google-cloud-speech`` ``>=2.18.0``
248
248
  ``google-cloud-storage`` ``>=2.7.0``
249
249
  ``google-cloud-storage-transfer`` ``>=1.4.1``
@@ -259,17 +259,16 @@ PIP package Version required
259
259
  ``httpx`` ``>=0.25.0``
260
260
  ``looker-sdk`` ``>=22.4.0,!=24.18.0``
261
261
  ``pandas-gbq`` ``>=0.7.0``
262
- ``pandas`` ``>=2.1.2,<2.2``
263
262
  ``proto-plus`` ``>=1.19.6``
264
- ``pyarrow`` ``>=14.0.1``
263
+ ``pyarrow`` ``>=16.1.0``
265
264
  ``python-slugify`` ``>=7.0.0``
266
265
  ``PyOpenSSL`` ``>=23.0.0``
267
266
  ``sqlalchemy-bigquery`` ``>=1.2.1``
268
267
  ``sqlalchemy-spanner`` ``>=1.6.2``
269
- ``tenacity`` ``>=8.1.0``
268
+ ``tenacity`` ``>=8.3.0``
270
269
  ``immutabledict`` ``>=4.2.0``
271
- ``types-protobuf`` ``!=5.29.1.20250402``
272
- =========================================== ======================================
270
+ ``types-protobuf`` ``>=5.27.0,!=5.29.1.20250402``
271
+ =========================================== ==================================================================
273
272
 
274
273
  Cross provider package dependencies
275
274
  -----------------------------------
@@ -294,6 +293,7 @@ Dependent package
294
293
  `apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
295
294
  `apache-airflow-providers-common-sql <https://airflow.apache.org/docs/apache-airflow-providers-common-sql>`_ ``common.sql``
296
295
  `apache-airflow-providers-facebook <https://airflow.apache.org/docs/apache-airflow-providers-facebook>`_ ``facebook``
296
+ `apache-airflow-providers-http <https://airflow.apache.org/docs/apache-airflow-providers-http>`_ ``http``
297
297
  `apache-airflow-providers-microsoft-azure <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure>`_ ``microsoft.azure``
298
298
  `apache-airflow-providers-microsoft-mssql <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-mssql>`_ ``microsoft.mssql``
299
299
  `apache-airflow-providers-mysql <https://airflow.apache.org/docs/apache-airflow-providers-mysql>`_ ``mysql``
@@ -308,5 +308,5 @@ Dependent package
308
308
  ======================================================================================================================== ====================
309
309
 
310
310
  The changelog for the provider package can be found in the
311
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-google/15.1.0/changelog.html>`_.
311
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-google/16.1.0/changelog.html>`_.
312
312