apache-airflow-providers-google 10.7.0__py3-none-any.whl → 10.8.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.
- airflow/providers/google/__init__.py +1 -1
- airflow/providers/google/ads/hooks/ads.py +10 -6
- airflow/providers/google/cloud/_internal_client/secret_manager_client.py +4 -1
- airflow/providers/google/cloud/example_dags/example_cloud_sql_query.py +31 -34
- airflow/providers/google/cloud/hooks/automl.py +11 -9
- airflow/providers/google/cloud/hooks/bigquery.py +30 -36
- airflow/providers/google/cloud/hooks/bigquery_dts.py +5 -3
- airflow/providers/google/cloud/hooks/bigtable.py +11 -8
- airflow/providers/google/cloud/hooks/cloud_batch.py +5 -3
- airflow/providers/google/cloud/hooks/cloud_build.py +6 -4
- airflow/providers/google/cloud/hooks/cloud_composer.py +14 -10
- airflow/providers/google/cloud/hooks/cloud_memorystore.py +5 -3
- airflow/providers/google/cloud/hooks/cloud_run.py +5 -3
- airflow/providers/google/cloud/hooks/cloud_sql.py +11 -14
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +8 -6
- airflow/providers/google/cloud/hooks/compute.py +5 -3
- airflow/providers/google/cloud/hooks/compute_ssh.py +1 -1
- airflow/providers/google/cloud/hooks/datacatalog.py +5 -3
- airflow/providers/google/cloud/hooks/dataflow.py +8 -11
- airflow/providers/google/cloud/hooks/dataform.py +4 -2
- airflow/providers/google/cloud/hooks/datafusion.py +24 -6
- airflow/providers/google/cloud/hooks/dataplex.py +75 -6
- airflow/providers/google/cloud/hooks/dataproc.py +9 -7
- airflow/providers/google/cloud/hooks/dataproc_metastore.py +8 -6
- airflow/providers/google/cloud/hooks/dlp.py +139 -137
- airflow/providers/google/cloud/hooks/gcs.py +15 -20
- airflow/providers/google/cloud/hooks/kms.py +4 -2
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +34 -34
- airflow/providers/google/cloud/hooks/looker.py +4 -1
- airflow/providers/google/cloud/hooks/mlengine.py +8 -6
- airflow/providers/google/cloud/hooks/natural_language.py +4 -2
- airflow/providers/google/cloud/hooks/os_login.py +9 -7
- airflow/providers/google/cloud/hooks/pubsub.py +13 -11
- airflow/providers/google/cloud/hooks/spanner.py +7 -5
- airflow/providers/google/cloud/hooks/speech_to_text.py +4 -2
- airflow/providers/google/cloud/hooks/stackdriver.py +6 -5
- airflow/providers/google/cloud/hooks/tasks.py +5 -3
- airflow/providers/google/cloud/hooks/text_to_speech.py +4 -2
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +7 -5
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +6 -4
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +11 -9
- airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +12 -10
- airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +8 -6
- airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +6 -4
- airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +7 -5
- airflow/providers/google/cloud/hooks/video_intelligence.py +5 -3
- airflow/providers/google/cloud/hooks/vision.py +5 -3
- airflow/providers/google/cloud/hooks/workflows.py +8 -6
- airflow/providers/google/cloud/links/bigquery.py +1 -1
- airflow/providers/google/cloud/links/bigquery_dts.py +1 -1
- airflow/providers/google/cloud/links/cloud_functions.py +1 -1
- airflow/providers/google/cloud/links/cloud_memorystore.py +1 -1
- airflow/providers/google/cloud/links/cloud_sql.py +1 -1
- airflow/providers/google/cloud/links/cloud_tasks.py +1 -1
- airflow/providers/google/cloud/links/compute.py +1 -1
- airflow/providers/google/cloud/links/datacatalog.py +1 -1
- airflow/providers/google/cloud/links/dataflow.py +1 -1
- airflow/providers/google/cloud/links/dataform.py +1 -1
- airflow/providers/google/cloud/links/pubsub.py +1 -1
- airflow/providers/google/cloud/links/spanner.py +1 -1
- airflow/providers/google/cloud/links/stackdriver.py +1 -1
- airflow/providers/google/cloud/links/workflows.py +2 -2
- airflow/providers/google/cloud/log/gcs_task_handler.py +5 -7
- airflow/providers/google/cloud/log/stackdriver_task_handler.py +8 -4
- airflow/providers/google/cloud/operators/automl.py +2 -1
- airflow/providers/google/cloud/operators/bigquery.py +6 -2
- airflow/providers/google/cloud/operators/bigquery_dts.py +2 -1
- airflow/providers/google/cloud/operators/bigtable.py +5 -3
- airflow/providers/google/cloud/operators/cloud_batch.py +6 -3
- airflow/providers/google/cloud/operators/cloud_build.py +2 -1
- airflow/providers/google/cloud/operators/cloud_composer.py +3 -2
- airflow/providers/google/cloud/operators/cloud_memorystore.py +3 -2
- airflow/providers/google/cloud/operators/cloud_run.py +3 -2
- airflow/providers/google/cloud/operators/cloud_sql.py +157 -152
- airflow/providers/google/cloud/operators/compute.py +59 -61
- airflow/providers/google/cloud/operators/datacatalog.py +3 -2
- airflow/providers/google/cloud/operators/dataflow.py +3 -1
- airflow/providers/google/cloud/operators/dataform.py +2 -1
- airflow/providers/google/cloud/operators/datafusion.py +1 -1
- airflow/providers/google/cloud/operators/dataplex.py +110 -8
- airflow/providers/google/cloud/operators/dataproc.py +39 -18
- airflow/providers/google/cloud/operators/dataproc_metastore.py +2 -1
- airflow/providers/google/cloud/operators/dlp.py +3 -2
- airflow/providers/google/cloud/operators/functions.py +46 -46
- airflow/providers/google/cloud/operators/gcs.py +4 -6
- airflow/providers/google/cloud/operators/kubernetes_engine.py +2 -1
- airflow/providers/google/cloud/operators/natural_language.py +3 -2
- airflow/providers/google/cloud/operators/pubsub.py +2 -1
- airflow/providers/google/cloud/operators/speech_to_text.py +3 -2
- airflow/providers/google/cloud/operators/stackdriver.py +2 -1
- airflow/providers/google/cloud/operators/tasks.py +3 -2
- airflow/providers/google/cloud/operators/text_to_speech.py +3 -2
- airflow/providers/google/cloud/operators/translate_speech.py +2 -1
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +2 -1
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +3 -2
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +2 -1
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +3 -2
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +4 -4
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +3 -2
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +2 -1
- airflow/providers/google/cloud/operators/video_intelligence.py +2 -1
- airflow/providers/google/cloud/operators/vision.py +3 -2
- airflow/providers/google/cloud/operators/workflows.py +7 -5
- airflow/providers/google/cloud/secrets/secret_manager.py +2 -2
- airflow/providers/google/cloud/sensors/bigquery_dts.py +2 -1
- airflow/providers/google/cloud/sensors/dataplex.py +2 -1
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +2 -2
- airflow/providers/google/cloud/sensors/gcs.py +2 -1
- airflow/providers/google/cloud/sensors/workflows.py +2 -1
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +24 -10
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +2 -1
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +2 -1
- airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +1 -4
- airflow/providers/google/cloud/transfers/bigquery_to_postgres.py +1 -4
- airflow/providers/google/cloud/transfers/bigquery_to_sql.py +1 -1
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +4 -2
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +1 -3
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +2 -1
- airflow/providers/google/cloud/transfers/presto_to_gcs.py +5 -4
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/trino_to_gcs.py +5 -4
- airflow/providers/google/cloud/triggers/bigquery.py +30 -36
- airflow/providers/google/cloud/triggers/bigquery_dts.py +9 -10
- airflow/providers/google/cloud/triggers/cloud_batch.py +6 -8
- airflow/providers/google/cloud/triggers/cloud_build.py +5 -6
- airflow/providers/google/cloud/triggers/cloud_run.py +4 -3
- airflow/providers/google/cloud/triggers/cloud_sql.py +10 -10
- airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +1 -1
- airflow/providers/google/cloud/triggers/dataflow.py +5 -6
- airflow/providers/google/cloud/triggers/datafusion.py +5 -6
- airflow/providers/google/cloud/triggers/dataplex.py +110 -0
- airflow/providers/google/cloud/triggers/dataproc.py +18 -20
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +14 -13
- airflow/providers/google/cloud/triggers/mlengine.py +5 -5
- airflow/providers/google/cloud/triggers/pubsub.py +2 -2
- airflow/providers/google/cloud/utils/bigquery_get_data.py +6 -3
- airflow/providers/google/cloud/utils/credentials_provider.py +1 -1
- airflow/providers/google/cloud/utils/field_validator.py +13 -13
- airflow/providers/google/cloud/utils/mlengine_operator_utils.py +5 -3
- airflow/providers/google/cloud/utils/mlengine_prediction_summary.py +1 -1
- airflow/providers/google/common/hooks/base_google.py +10 -2
- airflow/providers/google/common/links/storage.py +1 -1
- airflow/providers/google/common/utils/id_token_credentials.py +4 -1
- airflow/providers/google/get_provider_info.py +5 -0
- airflow/providers/google/marketing_platform/hooks/campaign_manager.py +4 -2
- airflow/providers/google/marketing_platform/sensors/display_video.py +6 -3
- airflow/providers/google/suite/hooks/calendar.py +4 -2
- {apache_airflow_providers_google-10.7.0.dist-info → apache_airflow_providers_google-10.8.0.dist-info}/METADATA +6 -6
- {apache_airflow_providers_google-10.7.0.dist-info → apache_airflow_providers_google-10.8.0.dist-info}/RECORD +155 -173
- {apache_airflow_providers_google-10.7.0.dist-info → apache_airflow_providers_google-10.8.0.dist-info}/WHEEL +1 -1
- airflow/providers/google/ads/_vendor/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/interceptors/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/common/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/common/types/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/enums/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/enums/types/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/errors/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/errors/types/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/resources/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/resources/types/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/services/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/services/services/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/services/services/customer_service/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/services/services/customer_service/transports/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/services/services/google_ads_service/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/services/services/google_ads_service/transports/__init__.py +0 -16
- airflow/providers/google/ads/_vendor/googleads/v12/services/types/__init__.py +0 -16
- {apache_airflow_providers_google-10.7.0.dist-info → apache_airflow_providers_google-10.8.0.dist-info}/LICENSE +0 -0
- {apache_airflow_providers_google-10.7.0.dist-info → apache_airflow_providers_google-10.8.0.dist-info}/NOTICE +0 -0
- {apache_airflow_providers_google-10.7.0.dist-info → apache_airflow_providers_google-10.8.0.dist-info}/entry_points.txt +0 -0
- {apache_airflow_providers_google-10.7.0.dist-info → apache_airflow_providers_google-10.8.0.dist-info}/top_level.txt +0 -0
@@ -158,20 +158,20 @@ def _int_greater_than_zero(value):
|
|
158
158
|
|
159
159
|
|
160
160
|
EXAMPLE_VALIDATION_SPECIFICATION = [
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
name
|
167
|
-
type
|
168
|
-
fields
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
161
|
+
{"name": "name", "allow_empty": False},
|
162
|
+
{"name": "description", "allow_empty": False, "optional": True},
|
163
|
+
{"name": "availableMemoryMb", "custom_validation": _int_greater_than_zero, "optional": True},
|
164
|
+
{"name": "labels", "optional": True, "type": "dict"},
|
165
|
+
{
|
166
|
+
"name": "an_union",
|
167
|
+
"type": "union",
|
168
|
+
"fields": [
|
169
|
+
{"name": "variant_1", "regexp": r"^.+$"},
|
170
|
+
{"name": "variant_2", "regexp": r"^.+$", "api_version": "v1beta2"},
|
171
|
+
{"name": "variant_3", "type": "dict", "fields": [{"name": "url", "regexp": r"^.+$"}]},
|
172
|
+
{"name": "variant_4"},
|
173
173
|
],
|
174
|
-
|
174
|
+
},
|
175
175
|
]
|
176
176
|
|
177
177
|
|
@@ -21,12 +21,11 @@ import base64
|
|
21
21
|
import json
|
22
22
|
import os
|
23
23
|
import re
|
24
|
-
from typing import Callable, Iterable, TypeVar
|
24
|
+
from typing import TYPE_CHECKING, Callable, Iterable, TypeVar
|
25
25
|
from urllib.parse import urlsplit
|
26
26
|
|
27
27
|
import dill
|
28
28
|
|
29
|
-
from airflow import DAG
|
30
29
|
from airflow.exceptions import AirflowException
|
31
30
|
from airflow.operators.python import PythonOperator
|
32
31
|
from airflow.providers.apache.beam.hooks.beam import BeamRunnerType
|
@@ -34,6 +33,9 @@ from airflow.providers.apache.beam.operators.beam import BeamRunPythonPipelineOp
|
|
34
33
|
from airflow.providers.google.cloud.hooks.gcs import GCSHook
|
35
34
|
from airflow.providers.google.cloud.operators.mlengine import MLEngineStartBatchPredictionJobOperator
|
36
35
|
|
36
|
+
if TYPE_CHECKING:
|
37
|
+
from airflow import DAG
|
38
|
+
|
37
39
|
T = TypeVar("T", bound=Callable)
|
38
40
|
|
39
41
|
|
@@ -191,7 +193,7 @@ def create_evaluate_ops(
|
|
191
193
|
|
192
194
|
# Verify that task_prefix doesn't have any special characters except hyphen
|
193
195
|
# '-', which is the only allowed non-alphanumeric character by Dataflow.
|
194
|
-
if not re.
|
196
|
+
if not re.fullmatch(r"[a-zA-Z][-A-Za-z0-9]*", task_prefix):
|
195
197
|
raise AirflowException(
|
196
198
|
"Malformed task_id for DataFlowPythonOperator (only alphanumeric "
|
197
199
|
"and hyphens are allowed but got: " + task_prefix
|
@@ -139,7 +139,7 @@ def MakeSummary(pcoll, metric_fn, metric_keys):
|
|
139
139
|
return (
|
140
140
|
pcoll
|
141
141
|
| "ApplyMetricFnPerInstance" >> beam.Map(metric_fn)
|
142
|
-
| "PairWith1" >> beam.Map(lambda tup: tup
|
142
|
+
| "PairWith1" >> beam.Map(lambda tup: (*tup, 1))
|
143
143
|
| "SumTuple" >> beam.CombineGlobally(beam.combiners.TupleCombineFn(*([sum] * (len(metric_keys) + 1))))
|
144
144
|
| "AverageAndMakeDict"
|
145
145
|
>> beam.Map(
|
@@ -26,7 +26,7 @@ import tempfile
|
|
26
26
|
import warnings
|
27
27
|
from contextlib import ExitStack, contextmanager
|
28
28
|
from subprocess import check_output
|
29
|
-
from typing import Any, Callable, Generator, Sequence, TypeVar, cast
|
29
|
+
from typing import TYPE_CHECKING, Any, Callable, Generator, Sequence, TypeVar, cast
|
30
30
|
|
31
31
|
import google.auth
|
32
32
|
import google.auth.credentials
|
@@ -36,7 +36,6 @@ import requests
|
|
36
36
|
import tenacity
|
37
37
|
from asgiref.sync import sync_to_async
|
38
38
|
from google.api_core.exceptions import Forbidden, ResourceExhausted, TooManyRequests
|
39
|
-
from google.api_core.gapic_v1.client_info import ClientInfo
|
40
39
|
from google.auth import _cloud_sdk, compute_engine
|
41
40
|
from google.auth.environment_vars import CLOUD_SDK_CONFIG_DIR, CREDENTIALS
|
42
41
|
from google.auth.exceptions import RefreshError
|
@@ -56,6 +55,9 @@ from airflow.providers.google.cloud.utils.credentials_provider import (
|
|
56
55
|
from airflow.providers.google.common.consts import CLIENT_INFO
|
57
56
|
from airflow.utils.process_utils import patch_environ
|
58
57
|
|
58
|
+
if TYPE_CHECKING:
|
59
|
+
from google.api_core.gapic_v1.client_info import ClientInfo
|
60
|
+
|
59
61
|
log = logging.getLogger(__name__)
|
60
62
|
|
61
63
|
# Constants used by the mechanism of repeating requests in reaction to exceeding the temporary quota.
|
@@ -214,6 +216,9 @@ class GoogleBaseHook(BaseHook):
|
|
214
216
|
widget=BS3TextFieldWidget(),
|
215
217
|
default=5,
|
216
218
|
),
|
219
|
+
"impersonation_chain": StringField(
|
220
|
+
lazy_gettext("Impersonation Chain"), widget=BS3TextFieldWidget()
|
221
|
+
),
|
217
222
|
}
|
218
223
|
|
219
224
|
@staticmethod
|
@@ -260,6 +265,9 @@ class GoogleBaseHook(BaseHook):
|
|
260
265
|
|
261
266
|
credential_config_file: str | None = self._get_field("credential_config_file", None)
|
262
267
|
|
268
|
+
if not self.impersonation_chain:
|
269
|
+
self.impersonation_chain = self._get_field("impersonation_chain", None)
|
270
|
+
|
263
271
|
target_principal, delegates = _get_target_principal_and_delegates(self.impersonation_chain)
|
264
272
|
|
265
273
|
credentials, project_id = get_credentials_and_project_id(
|
@@ -19,7 +19,6 @@ from __future__ import annotations
|
|
19
19
|
|
20
20
|
from typing import TYPE_CHECKING
|
21
21
|
|
22
|
-
from airflow.models import BaseOperator
|
23
22
|
from airflow.providers.google.cloud.links.base import BaseGoogleLink
|
24
23
|
|
25
24
|
BASE_LINK = "https://console.cloud.google.com"
|
@@ -27,6 +26,7 @@ GCS_STORAGE_LINK = BASE_LINK + "/storage/browser/{uri};tab=objects?project={proj
|
|
27
26
|
GCS_FILE_DETAILS_LINK = BASE_LINK + "/storage/browser/_details/{uri};tab=live_object?project={project_id}"
|
28
27
|
|
29
28
|
if TYPE_CHECKING:
|
29
|
+
from airflow.models import BaseOperator
|
30
30
|
from airflow.utils.context import Context
|
31
31
|
|
32
32
|
|
@@ -32,12 +32,15 @@ from __future__ import annotations
|
|
32
32
|
|
33
33
|
import json
|
34
34
|
import os
|
35
|
+
from typing import TYPE_CHECKING
|
35
36
|
|
36
37
|
import google.auth.transport
|
37
|
-
import google.oauth2
|
38
38
|
from google.auth import credentials as google_auth_credentials, environment_vars, exceptions
|
39
39
|
from google.oauth2 import credentials as oauth2_credentials, service_account
|
40
40
|
|
41
|
+
if TYPE_CHECKING:
|
42
|
+
import google.oauth2
|
43
|
+
|
41
44
|
# Valid types accepted for file-based credentials.
|
42
45
|
# They are taken from "google.auth._default" and since they are all "protected" and the imports might
|
43
46
|
# change any time and fail the whole Google provider functionality - we should inline them
|
@@ -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.8.0",
|
32
33
|
"10.7.0",
|
33
34
|
"10.6.0",
|
34
35
|
"10.5.0",
|
@@ -1146,6 +1147,10 @@ def get_provider_info():
|
|
1146
1147
|
"integration-name": "Google Data Fusion",
|
1147
1148
|
"python-modules": ["airflow.providers.google.cloud.triggers.datafusion"],
|
1148
1149
|
},
|
1150
|
+
{
|
1151
|
+
"integration-name": "Google Dataplex",
|
1152
|
+
"python-modules": ["airflow.providers.google.cloud.triggers.dataplex"],
|
1153
|
+
},
|
1149
1154
|
{
|
1150
1155
|
"integration-name": "Google Dataproc",
|
1151
1156
|
"python-modules": ["airflow.providers.google.cloud.triggers.dataproc"],
|
@@ -18,14 +18,16 @@
|
|
18
18
|
"""This module contains Google Campaign Manager hook."""
|
19
19
|
from __future__ import annotations
|
20
20
|
|
21
|
-
from typing import Any, Sequence
|
21
|
+
from typing import TYPE_CHECKING, Any, Sequence
|
22
22
|
|
23
|
-
from googleapiclient import http
|
24
23
|
from googleapiclient.discovery import Resource, build
|
25
24
|
|
26
25
|
from airflow.exceptions import AirflowException
|
27
26
|
from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
|
28
27
|
|
28
|
+
if TYPE_CHECKING:
|
29
|
+
from googleapiclient import http
|
30
|
+
|
29
31
|
|
30
32
|
class GoogleCampaignManagerHook(GoogleBaseHook):
|
31
33
|
"""Hook for Google Campaign Manager."""
|
@@ -19,7 +19,7 @@ from __future__ import annotations
|
|
19
19
|
|
20
20
|
from typing import TYPE_CHECKING, Sequence
|
21
21
|
|
22
|
-
from airflow import AirflowException
|
22
|
+
from airflow.exceptions import AirflowException, AirflowSkipException
|
23
23
|
from airflow.providers.google.marketing_platform.hooks.display_video import GoogleDisplayVideo360Hook
|
24
24
|
from airflow.sensors.base import BaseSensorOperator
|
25
25
|
|
@@ -86,9 +86,12 @@ class GoogleDisplayVideo360GetSDFDownloadOperationSensor(BaseSensorOperator):
|
|
86
86
|
impersonation_chain=self.impersonation_chain,
|
87
87
|
)
|
88
88
|
operation = hook.get_sdf_download_operation(operation_name=self.operation_name)
|
89
|
-
|
90
89
|
if "error" in operation:
|
91
|
-
|
90
|
+
# TODO: remove this if block when min_airflow_version is set to higher than 2.7.1
|
91
|
+
message = f'The operation finished in error with {operation["error"]}'
|
92
|
+
if self.soft_fail:
|
93
|
+
raise AirflowSkipException(message)
|
94
|
+
raise AirflowException(message)
|
92
95
|
if operation and operation.get("done"):
|
93
96
|
return True
|
94
97
|
return False
|
@@ -18,14 +18,16 @@
|
|
18
18
|
"""This module contains a Google Calendar API hook."""
|
19
19
|
from __future__ import annotations
|
20
20
|
|
21
|
-
from
|
22
|
-
from typing import Any, Sequence
|
21
|
+
from typing import TYPE_CHECKING, Any, Sequence
|
23
22
|
|
24
23
|
from googleapiclient.discovery import build
|
25
24
|
|
26
25
|
from airflow.exceptions import AirflowException
|
27
26
|
from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
|
28
27
|
|
28
|
+
if TYPE_CHECKING:
|
29
|
+
from datetime import datetime
|
30
|
+
|
29
31
|
|
30
32
|
class GoogleCalendarHook(GoogleBaseHook):
|
31
33
|
"""
|
@@ -1,14 +1,14 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: apache-airflow-providers-google
|
3
|
-
Version: 10.
|
3
|
+
Version: 10.8.0
|
4
4
|
Summary: Provider for Apache Airflow. Implements apache-airflow-providers-google package
|
5
5
|
Home-page: https://airflow.apache.org/
|
6
6
|
Download-URL: https://archive.apache.org/dist/airflow/providers
|
7
7
|
Author: Apache Software Foundation
|
8
8
|
Author-email: dev@airflow.apache.org
|
9
9
|
License: Apache License 2.0
|
10
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-google/10.
|
11
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-google/10.
|
10
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-google/10.8.0/
|
11
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-google/10.8.0/changelog.html
|
12
12
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
13
13
|
Project-URL: Source Code, https://github.com/apache/airflow
|
14
14
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
@@ -164,7 +164,7 @@ Requires-Dist: apache-airflow-providers-trino ; extra == 'trino'
|
|
164
164
|
|
165
165
|
Package ``apache-airflow-providers-google``
|
166
166
|
|
167
|
-
Release: ``10.
|
167
|
+
Release: ``10.8.0``
|
168
168
|
|
169
169
|
|
170
170
|
Google services including:
|
@@ -184,7 +184,7 @@ This is a provider package for ``google`` provider. All classes for this provide
|
|
184
184
|
are in ``airflow.providers.google`` python package.
|
185
185
|
|
186
186
|
You can find package information and changelog for the provider
|
187
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-google/10.
|
187
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-google/10.8.0/>`_.
|
188
188
|
|
189
189
|
|
190
190
|
Installation
|
@@ -297,4 +297,4 @@ Dependent package
|
|
297
297
|
======================================================================================================================== ====================
|
298
298
|
|
299
299
|
The changelog for the provider package can be found in the
|
300
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-google/10.
|
300
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-google/10.8.0/changelog.html>`_.
|