apache-airflow-providers-google 9.0.0rc1__py3-none-any.whl → 10.0.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 (123) hide show
  1. airflow/providers/google/cloud/hooks/automl.py +5 -6
  2. airflow/providers/google/cloud/hooks/bigquery.py +5 -6
  3. airflow/providers/google/cloud/hooks/bigquery_dts.py +11 -8
  4. airflow/providers/google/cloud/hooks/bigtable.py +5 -6
  5. airflow/providers/google/cloud/hooks/cloud_build.py +14 -11
  6. airflow/providers/google/cloud/hooks/cloud_composer.py +16 -0
  7. airflow/providers/google/cloud/hooks/cloud_memorystore.py +5 -14
  8. airflow/providers/google/cloud/hooks/cloud_sql.py +5 -7
  9. airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +5 -5
  10. airflow/providers/google/cloud/hooks/compute.py +5 -6
  11. airflow/providers/google/cloud/hooks/compute_ssh.py +8 -12
  12. airflow/providers/google/cloud/hooks/datacatalog.py +5 -9
  13. airflow/providers/google/cloud/hooks/dataflow.py +14 -6
  14. airflow/providers/google/cloud/hooks/dataform.py +8 -0
  15. airflow/providers/google/cloud/hooks/datafusion.py +13 -6
  16. airflow/providers/google/cloud/hooks/dataplex.py +5 -8
  17. airflow/providers/google/cloud/hooks/dataproc.py +13 -8
  18. airflow/providers/google/cloud/hooks/dataproc_metastore.py +8 -0
  19. airflow/providers/google/cloud/hooks/datastore.py +5 -6
  20. airflow/providers/google/cloud/hooks/dlp.py +5 -9
  21. airflow/providers/google/cloud/hooks/functions.py +5 -6
  22. airflow/providers/google/cloud/hooks/gcs.py +6 -6
  23. airflow/providers/google/cloud/hooks/gdm.py +5 -6
  24. airflow/providers/google/cloud/hooks/kms.py +5 -9
  25. airflow/providers/google/cloud/hooks/kubernetes_engine.py +6 -4
  26. airflow/providers/google/cloud/hooks/life_sciences.py +5 -9
  27. airflow/providers/google/cloud/hooks/mlengine.py +8 -0
  28. airflow/providers/google/cloud/hooks/natural_language.py +5 -9
  29. airflow/providers/google/cloud/hooks/os_login.py +5 -6
  30. airflow/providers/google/cloud/hooks/pubsub.py +5 -5
  31. airflow/providers/google/cloud/hooks/secret_manager.py +5 -9
  32. airflow/providers/google/cloud/hooks/spanner.py +5 -6
  33. airflow/providers/google/cloud/hooks/speech_to_text.py +5 -9
  34. airflow/providers/google/cloud/hooks/stackdriver.py +5 -6
  35. airflow/providers/google/cloud/hooks/tasks.py +5 -9
  36. airflow/providers/google/cloud/hooks/text_to_speech.py +5 -9
  37. airflow/providers/google/cloud/hooks/translate.py +5 -6
  38. airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +5 -5
  39. airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +5 -6
  40. airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +5 -6
  41. airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +8 -0
  42. airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +8 -0
  43. airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +5 -6
  44. airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -0
  45. airflow/providers/google/cloud/hooks/video_intelligence.py +5 -9
  46. airflow/providers/google/cloud/hooks/vision.py +5 -6
  47. airflow/providers/google/cloud/hooks/workflows.py +8 -0
  48. airflow/providers/google/cloud/operators/bigquery.py +1 -148
  49. airflow/providers/google/cloud/operators/cloud_build.py +0 -13
  50. airflow/providers/google/cloud/operators/cloud_composer.py +2 -68
  51. airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +0 -21
  52. airflow/providers/google/cloud/operators/dataflow.py +2 -72
  53. airflow/providers/google/cloud/operators/dataform.py +5 -141
  54. airflow/providers/google/cloud/operators/datafusion.py +0 -102
  55. airflow/providers/google/cloud/operators/dataplex.py +3 -61
  56. airflow/providers/google/cloud/operators/dataproc.py +5 -13
  57. airflow/providers/google/cloud/operators/datastore.py +2 -86
  58. airflow/providers/google/cloud/operators/gcs.py +1 -43
  59. airflow/providers/google/cloud/operators/mlengine.py +1 -123
  60. airflow/providers/google/cloud/operators/pubsub.py +0 -61
  61. airflow/providers/google/cloud/operators/stackdriver.py +0 -101
  62. airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +0 -26
  63. airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +0 -41
  64. airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +0 -39
  65. airflow/providers/google/cloud/operators/vertex_ai/dataset.py +0 -71
  66. airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +0 -71
  67. airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +0 -35
  68. airflow/providers/google/cloud/operators/vertex_ai/model_service.py +0 -41
  69. airflow/providers/google/cloud/sensors/bigquery.py +0 -24
  70. airflow/providers/google/cloud/sensors/cloud_composer.py +0 -10
  71. airflow/providers/google/cloud/sensors/dataflow.py +0 -42
  72. airflow/providers/google/cloud/sensors/dataform.py +0 -12
  73. airflow/providers/google/cloud/sensors/datafusion.py +0 -11
  74. airflow/providers/google/cloud/sensors/dataplex.py +0 -10
  75. airflow/providers/google/cloud/sensors/gcs.py +0 -44
  76. airflow/providers/google/cloud/sensors/pubsub.py +0 -11
  77. airflow/providers/google/cloud/transfers/adls_to_gcs.py +0 -12
  78. airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +0 -12
  79. airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +0 -10
  80. airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +0 -11
  81. airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +0 -11
  82. airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +0 -11
  83. airflow/providers/google/cloud/transfers/calendar_to_gcs.py +0 -12
  84. airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +0 -11
  85. airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +0 -13
  86. airflow/providers/google/cloud/transfers/gcs_to_gcs.py +0 -11
  87. airflow/providers/google/cloud/transfers/gcs_to_local.py +0 -11
  88. airflow/providers/google/cloud/transfers/gcs_to_sftp.py +0 -11
  89. airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +0 -12
  90. airflow/providers/google/cloud/transfers/gdrive_to_local.py +0 -11
  91. airflow/providers/google/cloud/transfers/local_to_gcs.py +0 -9
  92. airflow/providers/google/cloud/transfers/s3_to_gcs.py +0 -11
  93. airflow/providers/google/cloud/transfers/sftp_to_gcs.py +0 -11
  94. airflow/providers/google/cloud/transfers/sheets_to_gcs.py +0 -12
  95. airflow/providers/google/cloud/transfers/sql_to_gcs.py +0 -11
  96. airflow/providers/google/cloud/triggers/bigquery_dts.py +0 -12
  97. airflow/providers/google/cloud/triggers/cloud_build.py +0 -11
  98. airflow/providers/google/cloud/triggers/cloud_composer.py +0 -9
  99. airflow/providers/google/cloud/triggers/dataflow.py +0 -7
  100. airflow/providers/google/cloud/triggers/datafusion.py +0 -11
  101. airflow/providers/google/cloud/triggers/dataproc.py +2 -8
  102. airflow/providers/google/cloud/triggers/kubernetes_engine.py +0 -4
  103. airflow/providers/google/cloud/triggers/mlengine.py +0 -3
  104. airflow/providers/google/common/hooks/discovery_api.py +0 -7
  105. airflow/providers/google/firebase/hooks/firestore.py +0 -10
  106. airflow/providers/google/get_provider_info.py +1 -0
  107. airflow/providers/google/marketing_platform/example_dags/example_display_video.py +0 -64
  108. airflow/providers/google/marketing_platform/hooks/campaign_manager.py +3 -3
  109. airflow/providers/google/marketing_platform/hooks/display_video.py +7 -38
  110. airflow/providers/google/marketing_platform/operators/campaign_manager.py +22 -22
  111. airflow/providers/google/marketing_platform/operators/display_video.py +0 -284
  112. airflow/providers/google/marketing_platform/sensors/campaign_manager.py +3 -3
  113. airflow/providers/google/marketing_platform/sensors/display_video.py +0 -65
  114. airflow/providers/google/suite/transfers/gcs_to_gdrive.py +0 -4
  115. airflow/providers/google/suite/transfers/gcs_to_sheets.py +0 -4
  116. airflow/providers/google_vendor/googleads/interceptors/interceptor.py +1 -1
  117. {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/METADATA +34 -4
  118. {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/RECORD +123 -123
  119. {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/LICENSE +0 -0
  120. {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/NOTICE +0 -0
  121. {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/WHEEL +0 -0
  122. {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/entry_points.txt +0 -0
  123. {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -36,9 +36,6 @@ class TemplateJobStartTrigger(BaseTrigger):
36
36
  :param location: Optional. the location where job is executed. If set to None then
37
37
  the value of DEFAULT_DATAFLOW_LOCATION will be used
38
38
  :param gcp_conn_id: The connection ID to use connecting to Google Cloud.
39
- :param delegate_to: The account to impersonate using domain-wide delegation of authority,
40
- if any. For this to work, the service account making the request must have
41
- domain-wide delegation enabled.
42
39
  :param impersonation_chain: Optional. Service account to impersonate using short-term
43
40
  credentials, or chained list of accounts required to get the access_token
44
41
  of the last account in the list, which will be impersonated in the request.
@@ -57,7 +54,6 @@ class TemplateJobStartTrigger(BaseTrigger):
57
54
  project_id: str | None,
58
55
  location: str = DEFAULT_DATAFLOW_LOCATION,
59
56
  gcp_conn_id: str = "google_cloud_default",
60
- delegate_to: str | None = None,
61
57
  poll_sleep: int = 10,
62
58
  impersonation_chain: str | Sequence[str] | None = None,
63
59
  cancel_timeout: int | None = 5 * 60,
@@ -68,7 +64,6 @@ class TemplateJobStartTrigger(BaseTrigger):
68
64
  self.job_id = job_id
69
65
  self.location = location
70
66
  self.gcp_conn_id = gcp_conn_id
71
- self.delegate_to = delegate_to
72
67
  self.poll_sleep = poll_sleep
73
68
  self.impersonation_chain = impersonation_chain
74
69
  self.cancel_timeout = cancel_timeout
@@ -82,7 +77,6 @@ class TemplateJobStartTrigger(BaseTrigger):
82
77
  "job_id": self.job_id,
83
78
  "location": self.location,
84
79
  "gcp_conn_id": self.gcp_conn_id,
85
- "delegate_to": self.delegate_to,
86
80
  "poll_sleep": self.poll_sleep,
87
81
  "impersonation_chain": self.impersonation_chain,
88
82
  "cancel_timeout": self.cancel_timeout,
@@ -143,7 +137,6 @@ class TemplateJobStartTrigger(BaseTrigger):
143
137
  def _get_async_hook(self) -> AsyncDataflowHook:
144
138
  return AsyncDataflowHook(
145
139
  gcp_conn_id=self.gcp_conn_id,
146
- delegate_to=self.delegate_to,
147
140
  poll_sleep=self.poll_sleep,
148
141
  impersonation_chain=self.impersonation_chain,
149
142
  cancel_timeout=self.cancel_timeout,
@@ -17,7 +17,6 @@
17
17
  from __future__ import annotations
18
18
 
19
19
  import asyncio
20
- import warnings
21
20
  from typing import Any, AsyncIterator, Sequence
22
21
 
23
22
  from airflow.providers.google.cloud.hooks.datafusion import DataFusionAsyncHook
@@ -36,9 +35,6 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
36
35
  can create a namespace.
37
36
  :param gcp_conn_id: Reference to google cloud connection id
38
37
  :param poll_interval: polling period in seconds to check for the status
39
- :param delegate_to: The account to impersonate using domain-wide delegation of authority,
40
- if any. For this to work, the service account making the request must have
41
- domain-wide delegation enabled.
42
38
  :param impersonation_chain: Optional service account to impersonate using short-term
43
39
  credentials, or chained list of accounts required to get the access_token
44
40
  of the last account in the list, which will be impersonated in the request.
@@ -58,7 +54,6 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
58
54
  poll_interval: float = 3.0,
59
55
  gcp_conn_id: str = "google_cloud_default",
60
56
  impersonation_chain: str | Sequence[str] | None = None,
61
- delegate_to: str | None = None,
62
57
  success_states: list[str] | None = None,
63
58
  ):
64
59
  super().__init__()
@@ -69,11 +64,6 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
69
64
  self.poll_interval = poll_interval
70
65
  self.gcp_conn_id = gcp_conn_id
71
66
  self.impersonation_chain = impersonation_chain
72
- if delegate_to:
73
- warnings.warn(
74
- "'delegate_to' parameter is deprecated, please use 'impersonation_chain'", DeprecationWarning
75
- )
76
- self.delegate_to = delegate_to
77
67
  self.success_states = success_states
78
68
 
79
69
  def serialize(self) -> tuple[str, dict[str, Any]]:
@@ -131,6 +121,5 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
131
121
  pipeline_name=self.pipeline_name,
132
122
  pipeline_id=self.pipeline_id,
133
123
  gcp_conn_id=self.gcp_conn_id,
134
- delegate_to=self.delegate_to,
135
124
  impersonation_chain=self.impersonation_chain,
136
125
  )
@@ -38,7 +38,6 @@ class DataprocBaseTrigger(BaseTrigger):
38
38
  region: str,
39
39
  project_id: str | None = None,
40
40
  gcp_conn_id: str = "google_cloud_default",
41
- delegate_to: str | None = None,
42
41
  impersonation_chain: str | Sequence[str] | None = None,
43
42
  polling_interval_seconds: int = 30,
44
43
  ):
@@ -48,13 +47,11 @@ class DataprocBaseTrigger(BaseTrigger):
48
47
  self.gcp_conn_id = gcp_conn_id
49
48
  self.impersonation_chain = impersonation_chain
50
49
  self.polling_interval_seconds = polling_interval_seconds
51
- self.delegate_to = delegate_to
52
50
 
53
51
  def get_async_hook(self):
54
52
  return DataprocAsyncHook(
55
53
  gcp_conn_id=self.gcp_conn_id,
56
54
  impersonation_chain=self.impersonation_chain,
57
- delegate_to=self.delegate_to,
58
55
  )
59
56
 
60
57
 
@@ -77,10 +74,9 @@ class DataprocSubmitTrigger(DataprocBaseTrigger):
77
74
  :param polling_interval_seconds: polling period in seconds to check for the status
78
75
  """
79
76
 
80
- def __init__(self, job_id: str, delegate_to: str | None = None, **kwargs):
77
+ def __init__(self, job_id: str, **kwargs):
81
78
  self.job_id = job_id
82
- self.delegate_to = delegate_to
83
- super().__init__(delegate_to=self.delegate_to, **kwargs)
79
+ super().__init__(**kwargs)
84
80
 
85
81
  def serialize(self):
86
82
  return (
@@ -90,7 +86,6 @@ class DataprocSubmitTrigger(DataprocBaseTrigger):
90
86
  "project_id": self.project_id,
91
87
  "region": self.region,
92
88
  "gcp_conn_id": self.gcp_conn_id,
93
- "delegate_to": self.delegate_to,
94
89
  "impersonation_chain": self.impersonation_chain,
95
90
  "polling_interval_seconds": self.polling_interval_seconds,
96
91
  },
@@ -309,7 +304,6 @@ class DataprocWorkflowTrigger(DataprocBaseTrigger):
309
304
  "project_id": self.project_id,
310
305
  "region": self.region,
311
306
  "gcp_conn_id": self.gcp_conn_id,
312
- "delegate_to": self.delegate_to,
313
307
  "impersonation_chain": self.impersonation_chain,
314
308
  "polling_interval_seconds": self.polling_interval_seconds,
315
309
  },
@@ -129,7 +129,6 @@ class GKEOperationTrigger(BaseTrigger):
129
129
  project_id: str | None,
130
130
  location: str,
131
131
  gcp_conn_id: str = "google_cloud_default",
132
- delegate_to: str | None = None,
133
132
  impersonation_chain: str | Sequence[str] | None = None,
134
133
  poll_interval: int = 10,
135
134
  ):
@@ -139,7 +138,6 @@ class GKEOperationTrigger(BaseTrigger):
139
138
  self.project_id = project_id
140
139
  self.location = location
141
140
  self.gcp_conn_id = gcp_conn_id
142
- self.delegate_to = delegate_to
143
141
  self.impersonation_chain = impersonation_chain
144
142
  self.poll_interval = poll_interval
145
143
 
@@ -154,7 +152,6 @@ class GKEOperationTrigger(BaseTrigger):
154
152
  "project_id": self.project_id,
155
153
  "location": self.location,
156
154
  "gcp_conn_id": self.gcp_conn_id,
157
- "delegate_to": self.delegate_to,
158
155
  "impersonation_chain": self.impersonation_chain,
159
156
  "poll_interval": self.poll_interval,
160
157
  },
@@ -209,7 +206,6 @@ class GKEOperationTrigger(BaseTrigger):
209
206
  self._hook = GKEAsyncHook(
210
207
  gcp_conn_id=self.gcp_conn_id,
211
208
  location=self.location,
212
- delegate_to=self.delegate_to,
213
209
  impersonation_chain=self.impersonation_chain,
214
210
  )
215
211
  return self._hook
@@ -49,7 +49,6 @@ class MLEngineStartTrainingJobTrigger(BaseTrigger):
49
49
  labels: dict[str, str] | None = None,
50
50
  gcp_conn_id: str = "google_cloud_default",
51
51
  impersonation_chain: str | Sequence[str] | None = None,
52
- delegate_to: str | None = None,
53
52
  ):
54
53
  super().__init__()
55
54
  self.log.info("Using the connection %s .", conn_id)
@@ -68,7 +67,6 @@ class MLEngineStartTrainingJobTrigger(BaseTrigger):
68
67
  self.labels = labels
69
68
  self.gcp_conn_id = gcp_conn_id
70
69
  self.impersonation_chain = impersonation_chain
71
- self.delegate_to = delegate_to
72
70
 
73
71
  def serialize(self) -> tuple[str, dict[str, Any]]:
74
72
  """Serializes MLEngineStartTrainingJobTrigger arguments and classpath."""
@@ -119,6 +117,5 @@ class MLEngineStartTrainingJobTrigger(BaseTrigger):
119
117
  def _get_async_hook(self) -> MLEngineAsyncHook:
120
118
  return MLEngineAsyncHook(
121
119
  gcp_conn_id=self.conn_id,
122
- delegate_to=self.delegate_to,
123
120
  impersonation_chain=self.impersonation_chain,
124
121
  )
@@ -18,7 +18,6 @@
18
18
  """This module allows you to connect to the Google Discovery API Service and query it."""
19
19
  from __future__ import annotations
20
20
 
21
- import warnings
22
21
  from typing import Sequence
23
22
 
24
23
  from googleapiclient.discovery import Resource, build
@@ -54,16 +53,10 @@ class GoogleDiscoveryApiHook(GoogleBaseHook):
54
53
  api_service_name: str,
55
54
  api_version: str,
56
55
  gcp_conn_id: str = "google_cloud_default",
57
- delegate_to: str | None = None,
58
56
  impersonation_chain: str | Sequence[str] | None = None,
59
57
  ) -> None:
60
- if delegate_to:
61
- warnings.warn(
62
- "'delegate_to' parameter is deprecated, please use 'impersonation_chain'", DeprecationWarning
63
- )
64
58
  super().__init__(
65
59
  gcp_conn_id=gcp_conn_id,
66
- delegate_to=delegate_to,
67
60
  impersonation_chain=impersonation_chain,
68
61
  )
69
62
  self.api_service_name = api_service_name
@@ -19,7 +19,6 @@
19
19
  from __future__ import annotations
20
20
 
21
21
  import time
22
- import warnings
23
22
  from typing import Sequence
24
23
 
25
24
  from googleapiclient.discovery import build, build_from_document
@@ -40,9 +39,6 @@ class CloudFirestoreHook(GoogleBaseHook):
40
39
 
41
40
  :param api_version: API version used (for example v1 or v1beta1).
42
41
  :param gcp_conn_id: The connection ID to use when fetching connection info.
43
- :param delegate_to: The account to impersonate using domain-wide delegation of authority,
44
- if any. For this to work, the service account making the request must have
45
- domain-wide delegation enabled.
46
42
  :param impersonation_chain: Optional service account to impersonate using short-term
47
43
  credentials, or chained list of accounts required to get the access_token
48
44
  of the last account in the list, which will be impersonated in the request.
@@ -59,16 +55,10 @@ class CloudFirestoreHook(GoogleBaseHook):
59
55
  self,
60
56
  api_version: str = "v1",
61
57
  gcp_conn_id: str = "google_cloud_default",
62
- delegate_to: str | None = None,
63
58
  impersonation_chain: str | Sequence[str] | None = None,
64
59
  ) -> None:
65
- if delegate_to:
66
- warnings.warn(
67
- "'delegate_to' parameter is deprecated, please use 'impersonation_chain'", DeprecationWarning
68
- )
69
60
  super().__init__(
70
61
  gcp_conn_id=gcp_conn_id,
71
- delegate_to=delegate_to,
72
62
  impersonation_chain=impersonation_chain,
73
63
  )
74
64
  self.api_version = api_version
@@ -29,6 +29,7 @@ def get_provider_info():
29
29
  "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",
30
30
  "suspended": False,
31
31
  "versions": [
32
+ "10.0.0",
32
33
  "9.0.0",
33
34
  "8.12.0",
34
35
  "8.11.0",
@@ -30,20 +30,16 @@ from airflow.providers.google.cloud.transfers.gcs_to_bigquery import GCSToBigQue
30
30
  from airflow.providers.google.marketing_platform.hooks.display_video import GoogleDisplayVideo360Hook
31
31
  from airflow.providers.google.marketing_platform.operators.display_video import (
32
32
  GoogleDisplayVideo360CreateQueryOperator,
33
- GoogleDisplayVideo360CreateReportOperator,
34
33
  GoogleDisplayVideo360CreateSDFDownloadTaskOperator,
35
34
  GoogleDisplayVideo360DeleteReportOperator,
36
35
  GoogleDisplayVideo360DownloadLineItemsOperator,
37
- GoogleDisplayVideo360DownloadReportOperator,
38
36
  GoogleDisplayVideo360DownloadReportV2Operator,
39
37
  GoogleDisplayVideo360RunQueryOperator,
40
- GoogleDisplayVideo360RunReportOperator,
41
38
  GoogleDisplayVideo360SDFtoGCSOperator,
42
39
  GoogleDisplayVideo360UploadLineItemsOperator,
43
40
  )
44
41
  from airflow.providers.google.marketing_platform.sensors.display_video import (
45
42
  GoogleDisplayVideo360GetSDFDownloadOperationSensor,
46
- GoogleDisplayVideo360ReportSensor,
47
43
  GoogleDisplayVideo360RunQuerySensor,
48
44
  )
49
45
 
@@ -60,24 +56,6 @@ GMP_PARTNER_ID = os.environ.get("GMP_PARTNER_ID", 123)
60
56
  ENTITY_TYPE = os.environ.get("GMP_ENTITY_TYPE", "LineItem")
61
57
  ERF_SOURCE_OBJECT = GoogleDisplayVideo360Hook.erf_uri(GMP_PARTNER_ID, ENTITY_TYPE)
62
58
 
63
- REPORT = {
64
- "kind": "doubleclickbidmanager#query",
65
- "metadata": {
66
- "title": "Polidea Test Report",
67
- "dataRange": "LAST_7_DAYS",
68
- "format": "CSV",
69
- "sendNotification": False,
70
- },
71
- "params": {
72
- "type": "TYPE_GENERAL",
73
- "groupBys": ["FILTER_DATE", "FILTER_PARTNER"],
74
- "filters": [{"type": "FILTER_PARTNER", "value": 1486931}],
75
- "metrics": ["METRIC_IMPRESSIONS", "METRIC_CLICKS"],
76
- "includeInviteData": True,
77
- },
78
- "schedule": {"frequency": "ONE_TIME"},
79
- }
80
-
81
59
  REPORT_V2 = {
82
60
  "metadata": {
83
61
  "title": "Airflow Test Report",
@@ -109,48 +87,6 @@ DOWNLOAD_LINE_ITEMS_REQUEST: dict = {"filterType": ADVERTISER_ID, "format": "CSV
109
87
 
110
88
  START_DATE = datetime(2021, 1, 1)
111
89
 
112
- with models.DAG(
113
- "example_display_video",
114
- start_date=START_DATE,
115
- catchup=False,
116
- ) as dag1:
117
- # [START howto_google_display_video_createquery_report_operator]
118
- create_report = GoogleDisplayVideo360CreateReportOperator(body=REPORT, task_id="create_report")
119
- report_id = cast(str, XComArg(create_report, key="report_id"))
120
- # [END howto_google_display_video_createquery_report_operator]
121
-
122
- # [START howto_google_display_video_runquery_report_operator]
123
- run_report = GoogleDisplayVideo360RunReportOperator(
124
- report_id=report_id, parameters=PARAMETERS, task_id="run_report"
125
- )
126
- # [END howto_google_display_video_runquery_report_operator]
127
-
128
- # [START howto_google_display_video_wait_report_operator]
129
- wait_for_report = GoogleDisplayVideo360ReportSensor(task_id="wait_for_report", report_id=report_id)
130
- # [END howto_google_display_video_wait_report_operator]
131
-
132
- # [START howto_google_display_video_getquery_report_operator]
133
- get_report = GoogleDisplayVideo360DownloadReportOperator(
134
- report_id=report_id,
135
- task_id="get_report",
136
- bucket_name=BUCKET,
137
- report_name="test1.csv",
138
- )
139
- # [END howto_google_display_video_getquery_report_operator]
140
-
141
- # [START howto_google_display_video_deletequery_report_operator]
142
- delete_report = GoogleDisplayVideo360DeleteReportOperator(report_id=report_id, task_id="delete_report")
143
- # [END howto_google_display_video_deletequery_report_operator]
144
-
145
- run_report >> wait_for_report >> get_report >> delete_report
146
-
147
- # Task dependencies created via `XComArgs`:
148
- # create_report >> run_report
149
- # create_report >> wait_for_report
150
- # create_report >> get_report
151
- # create_report >> delete_report
152
-
153
-
154
90
  with models.DAG(
155
91
  "example_display_video_misc",
156
92
  start_date=START_DATE,
@@ -34,7 +34,7 @@ class GoogleCampaignManagerHook(GoogleBaseHook):
34
34
 
35
35
  def __init__(
36
36
  self,
37
- api_version: str = "v3.3",
37
+ api_version: str = "v4",
38
38
  gcp_conn_id: str = "google_cloud_default",
39
39
  delegate_to: str | None = None,
40
40
  impersonation_chain: str | Sequence[str] | None = None,
@@ -236,7 +236,7 @@ class GoogleCampaignManagerHook(GoogleBaseHook):
236
236
 
237
237
  :param profile_id: User profile ID associated with this request.
238
238
  :param conversions: Conversations to insert, should by type of Conversation:
239
- https://developers.google.com/doubleclick-advertisers/v3.3/conversions#resource
239
+ https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchinsert
240
240
  :param encryption_entity_type: The encryption entity type. This should match the encryption
241
241
  configuration for ad serving or Data Transfer.
242
242
  :param encryption_entity_id: The encryption entity ID. This should match the encryption
@@ -280,7 +280,7 @@ class GoogleCampaignManagerHook(GoogleBaseHook):
280
280
 
281
281
  :param profile_id: User profile ID associated with this request.
282
282
  :param conversions: Conversations to update, should by type of Conversation:
283
- https://developers.google.com/doubleclick-advertisers/v3.3/conversions#resource
283
+ https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchupdate
284
284
  :param encryption_entity_type: The encryption entity type. This should match the encryption
285
285
  configuration for ad serving or Data Transfer.
286
286
  :param encryption_entity_id: The encryption entity ID. This should match the encryption
@@ -18,7 +18,6 @@
18
18
  """This module contains Google DisplayVideo hook."""
19
19
  from __future__ import annotations
20
20
 
21
- import warnings
22
21
  from typing import Any, Sequence
23
22
 
24
23
  from googleapiclient.discovery import Resource, build
@@ -43,11 +42,6 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
43
42
  delegate_to=delegate_to,
44
43
  impersonation_chain=impersonation_chain,
45
44
  )
46
- if api_version in ["v1", "v1.1"]:
47
- warnings.warn(
48
- f"API {api_version} is deprecated and shortly will be removed please use v2",
49
- DeprecationWarning,
50
- )
51
45
  self.api_version = api_version
52
46
 
53
47
  def get_conn(self) -> Resource:
@@ -99,10 +93,7 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
99
93
 
100
94
  :param query: Query object to be passed to request body.
101
95
  """
102
- if self.api_version in ["v1", "v1.1"]:
103
- response = self.get_conn().queries().createquery(body=query).execute(num_retries=self.num_retries)
104
- else:
105
- response = self.get_conn().queries().create(body=query).execute(num_retries=self.num_retries)
96
+ response = self.get_conn().queries().create(body=query).execute(num_retries=self.num_retries)
106
97
  return response
107
98
 
108
99
  def delete_query(self, query_id: str) -> None:
@@ -111,10 +102,7 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
111
102
 
112
103
  :param query_id: Query ID to delete.
113
104
  """
114
- if self.api_version in ["v1", "v1.1"]:
115
- self.get_conn().queries().deletequery(queryId=query_id).execute(num_retries=self.num_retries)
116
- else:
117
- self.get_conn().queries().delete(queryId=query_id).execute(num_retries=self.num_retries)
105
+ self.get_conn().queries().delete(queryId=query_id).execute(num_retries=self.num_retries)
118
106
 
119
107
  def get_query(self, query_id: str) -> dict:
120
108
  """
@@ -122,20 +110,12 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
122
110
 
123
111
  :param query_id: Query ID to retrieve.
124
112
  """
125
- if self.api_version in ["v1", "v1.1"]:
126
- response = (
127
- self.get_conn().queries().getquery(queryId=query_id).execute(num_retries=self.num_retries)
128
- )
129
- else:
130
- response = self.get_conn().queries().get(queryId=query_id).execute(num_retries=self.num_retries)
113
+ response = self.get_conn().queries().get(queryId=query_id).execute(num_retries=self.num_retries)
131
114
  return response
132
115
 
133
116
  def list_queries(self) -> list[dict]:
134
117
  """Retrieves stored queries."""
135
- if self.api_version in ["v1", "v1.1"]:
136
- response = self.get_conn().queries().listqueries().execute(num_retries=self.num_retries)
137
- else:
138
- response = self.get_conn().queries().list().execute(num_retries=self.num_retries)
118
+ response = self.get_conn().queries().list().execute(num_retries=self.num_retries)
139
119
  return response.get("queries", [])
140
120
 
141
121
  def run_query(self, query_id: str, params: dict[str, Any] | None) -> dict:
@@ -145,20 +125,9 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
145
125
  :param query_id: Query ID to run.
146
126
  :param params: Parameters for the report.
147
127
  """
148
- if self.api_version in ["v1", "v1.1"]:
149
- return (
150
- self.get_conn()
151
- .queries()
152
- .runquery(queryId=query_id, body=params)
153
- .execute(num_retries=self.num_retries)
154
- )
155
- else:
156
- return (
157
- self.get_conn()
158
- .queries()
159
- .run(queryId=query_id, body=params)
160
- .execute(num_retries=self.num_retries)
161
- )
128
+ return (
129
+ self.get_conn().queries().run(queryId=query_id, body=params).execute(num_retries=self.num_retries)
130
+ )
162
131
 
163
132
  def get_report(self, query_id: str, report_id: str) -> dict:
164
133
  """
@@ -40,7 +40,7 @@ class GoogleCampaignManagerDeleteReportOperator(BaseOperator):
40
40
 
41
41
  .. seealso::
42
42
  Check official API docs:
43
- https://developers.google.com/doubleclick-advertisers/v3.3/reports/delete
43
+ `https://developers.google.com/doubleclick-advertisers/rest/v4/reports/delete`
44
44
 
45
45
  .. seealso::
46
46
  For more information on how to use this operator, take a look at the guide:
@@ -49,7 +49,7 @@ class GoogleCampaignManagerDeleteReportOperator(BaseOperator):
49
49
  :param profile_id: The DFA user profile ID.
50
50
  :param report_name: The name of the report to delete.
51
51
  :param report_id: The ID of the report.
52
- :param api_version: The version of the api that will be requested for example 'v3'.
52
+ :param api_version: The version of the api that will be requested, for example 'v4'.
53
53
  :param gcp_conn_id: The connection ID to use when fetching connection info.
54
54
  :param delegate_to: The account to impersonate using domain-wide delegation of authority,
55
55
  if any. For this to work, the service account making the request must have
@@ -80,7 +80,7 @@ class GoogleCampaignManagerDeleteReportOperator(BaseOperator):
80
80
  profile_id: str,
81
81
  report_name: str | None = None,
82
82
  report_id: str | None = None,
83
- api_version: str = "v3.3",
83
+ api_version: str = "v4",
84
84
  gcp_conn_id: str = "google_cloud_default",
85
85
  delegate_to: str | None = None,
86
86
  impersonation_chain: str | Sequence[str] | None = None,
@@ -127,7 +127,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
127
127
 
128
128
  .. seealso::
129
129
  Check official API docs:
130
- https://developers.google.com/doubleclick-advertisers/v3.3/reports/files/get
130
+ `https://developers.google.com/doubleclick-advertisers/rest/v4/reports/get`
131
131
 
132
132
  .. seealso::
133
133
  For more information on how to use this operator, take a look at the guide:
@@ -140,7 +140,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
140
140
  :param report_name: The report name to set when uploading the local file.
141
141
  :param gzip: Option to compress local file or file data for upload
142
142
  :param chunk_size: File will be downloaded in chunks of this many bytes.
143
- :param api_version: The version of the api that will be requested for example 'v3'.
143
+ :param api_version: The version of the api that will be requested, for example 'v4'.
144
144
  :param gcp_conn_id: The connection ID to use when fetching connection info.
145
145
  :param delegate_to: The account to impersonate using domain-wide delegation of authority,
146
146
  if any. For this to work, the service account making the request must have
@@ -178,7 +178,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
178
178
  report_name: str | None = None,
179
179
  gzip: bool = True,
180
180
  chunk_size: int = 10 * 1024 * 1024,
181
- api_version: str = "v3.3",
181
+ api_version: str = "v4",
182
182
  gcp_conn_id: str = "google_cloud_default",
183
183
  delegate_to: str | None = None,
184
184
  impersonation_chain: str | Sequence[str] | None = None,
@@ -259,7 +259,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
259
259
 
260
260
  .. seealso::
261
261
  Check official API docs:
262
- https://developers.google.com/doubleclick-advertisers/v3.3/reports/insert
262
+ `https://developers.google.com/doubleclick-advertisers/rest/v4/reports/insert`
263
263
 
264
264
  .. seealso::
265
265
  For more information on how to use this operator, take a look at the guide:
@@ -267,7 +267,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
267
267
 
268
268
  :param profile_id: The DFA user profile ID.
269
269
  :param report: Report to be created.
270
- :param api_version: The version of the api that will be requested for example 'v3'.
270
+ :param api_version: The version of the api that will be requested, for example 'v4'.
271
271
  :param gcp_conn_id: The connection ID to use when fetching connection info.
272
272
  :param delegate_to: The account to impersonate using domain-wide delegation of authority,
273
273
  if any. For this to work, the service account making the request must have
@@ -298,7 +298,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
298
298
  *,
299
299
  profile_id: str,
300
300
  report: dict[str, Any],
301
- api_version: str = "v3.3",
301
+ api_version: str = "v4",
302
302
  gcp_conn_id: str = "google_cloud_default",
303
303
  delegate_to: str | None = None,
304
304
  impersonation_chain: str | Sequence[str] | None = None,
@@ -339,7 +339,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
339
339
 
340
340
  .. seealso::
341
341
  Check official API docs:
342
- https://developers.google.com/doubleclick-advertisers/v3.3/reports/run
342
+ `https://developers.google.com/doubleclick-advertisers/rest/v4/reports/run`
343
343
 
344
344
  .. seealso::
345
345
  For more information on how to use this operator, take a look at the guide:
@@ -348,7 +348,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
348
348
  :param profile_id: The DFA profile ID.
349
349
  :param report_id: The ID of the report.
350
350
  :param synchronous: If set and true, tries to run the report synchronously.
351
- :param api_version: The version of the api that will be requested for example 'v3'.
351
+ :param api_version: The version of the api that will be requested, for example 'v4'.
352
352
  :param gcp_conn_id: The connection ID to use when fetching connection info.
353
353
  :param delegate_to: The account to impersonate using domain-wide delegation of authority,
354
354
  if any. For this to work, the service account making the request must have
@@ -379,7 +379,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
379
379
  profile_id: str,
380
380
  report_id: str,
381
381
  synchronous: bool = False,
382
- api_version: str = "v3.3",
382
+ api_version: str = "v4",
383
383
  gcp_conn_id: str = "google_cloud_default",
384
384
  delegate_to: str | None = None,
385
385
  impersonation_chain: str | Sequence[str] | None = None,
@@ -419,15 +419,15 @@ class GoogleCampaignManagerBatchInsertConversionsOperator(BaseOperator):
419
419
 
420
420
  .. seealso::
421
421
  Check official API docs:
422
- https://developers.google.com/doubleclick-advertisers/v3.3/conversions/batchinsert
422
+ `https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchinsert`
423
423
 
424
424
  .. seealso::
425
425
  For more information on how to use this operator, take a look at the guide:
426
426
  :ref:`howto/operator:GoogleCampaignManagerBatchInsertConversionsOperator`
427
427
 
428
428
  :param profile_id: User profile ID associated with this request.
429
- :param conversions: Conversations to insert, should by type of Conversation:
430
- https://developers.google.com/doubleclick-advertisers/v3.3/conversions#resource
429
+ :param conversions: Conversions to insert, should be type of Conversion:
430
+ https://developers.google.com/doubleclick-advertisers/rest/v4/conversions
431
431
  :param encryption_entity_type: The encryption entity type. This should match the encryption
432
432
  configuration for ad serving or Data Transfer.
433
433
  :param encryption_entity_id: The encryption entity ID. This should match the encryption
@@ -435,7 +435,7 @@ class GoogleCampaignManagerBatchInsertConversionsOperator(BaseOperator):
435
435
  :param encryption_source: Describes whether the encrypted cookie was received from ad serving
436
436
  (the %m macro) or from Data Transfer.
437
437
  :param max_failed_inserts: The maximum number of conversions that failed to be inserted
438
- :param api_version: The version of the api that will be requested for example 'v3'.
438
+ :param api_version: The version of the api that will be requested, for example 'v4'.
439
439
  :param gcp_conn_id: The connection ID to use when fetching connection info.
440
440
  :param delegate_to: The account to impersonate using domain-wide delegation of authority,
441
441
  if any. For this to work, the service account making the request must have
@@ -468,7 +468,7 @@ class GoogleCampaignManagerBatchInsertConversionsOperator(BaseOperator):
468
468
  encryption_entity_id: int,
469
469
  encryption_source: str,
470
470
  max_failed_inserts: int = 0,
471
- api_version: str = "v3.3",
471
+ api_version: str = "v4",
472
472
  gcp_conn_id: str = "google_cloud_default",
473
473
  delegate_to: str | None = None,
474
474
  impersonation_chain: str | Sequence[str] | None = None,
@@ -510,15 +510,15 @@ class GoogleCampaignManagerBatchUpdateConversionsOperator(BaseOperator):
510
510
 
511
511
  .. seealso::
512
512
  Check official API docs:
513
- https://developers.google.com/doubleclick-advertisers/v3.3/conversions/batchupdate
513
+ `https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchupdate`
514
514
 
515
515
  .. seealso::
516
516
  For more information on how to use this operator, take a look at the guide:
517
517
  :ref:`howto/operator:GoogleCampaignManagerBatchUpdateConversionsOperator`
518
518
 
519
519
  :param profile_id: User profile ID associated with this request.
520
- :param conversions: Conversations to update, should by type of Conversation:
521
- https://developers.google.com/doubleclick-advertisers/v3.3/conversions#resource
520
+ :param conversions: Conversations to update, should be type of Conversion:
521
+ https://developers.google.com/doubleclick-advertisers/rest/v4/conversions
522
522
  :param encryption_entity_type: The encryption entity type. This should match the encryption
523
523
  configuration for ad serving or Data Transfer.
524
524
  :param encryption_entity_id: The encryption entity ID. This should match the encryption
@@ -526,7 +526,7 @@ class GoogleCampaignManagerBatchUpdateConversionsOperator(BaseOperator):
526
526
  :param encryption_source: Describes whether the encrypted cookie was received from ad serving
527
527
  (the %m macro) or from Data Transfer.
528
528
  :param max_failed_updates: The maximum number of conversions that failed to be updated
529
- :param api_version: The version of the api that will be requested for example 'v3'.
529
+ :param api_version: The version of the api that will be requested, for example 'v4'.
530
530
  :param gcp_conn_id: The connection ID to use when fetching connection info.
531
531
  :param delegate_to: The account to impersonate using domain-wide delegation of authority,
532
532
  if any. For this to work, the service account making the request must have
@@ -559,7 +559,7 @@ class GoogleCampaignManagerBatchUpdateConversionsOperator(BaseOperator):
559
559
  encryption_entity_id: int,
560
560
  encryption_source: str,
561
561
  max_failed_updates: int = 0,
562
- api_version: str = "v3.3",
562
+ api_version: str = "v4",
563
563
  gcp_conn_id: str = "google_cloud_default",
564
564
  delegate_to: str | None = None,
565
565
  impersonation_chain: str | Sequence[str] | None = None,