apache-airflow-providers-google 14.0.0rc1__py3-none-any.whl → 14.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.
- airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
- airflow/providers/google/3rd-party-licenses/NOTICE +15 -0
- airflow/providers/google/__init__.py +1 -1
- airflow/providers/google/_vendor/__init__.py +0 -0
- airflow/providers/google/_vendor/json_merge_patch.py +91 -0
- airflow/providers/google/ads/hooks/ads.py +12 -11
- airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
- airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
- airflow/providers/google/cloud/hooks/automl.py +7 -13
- airflow/providers/google/cloud/hooks/bigquery.py +21 -22
- airflow/providers/google/cloud/hooks/bigquery_dts.py +8 -8
- airflow/providers/google/cloud/hooks/bigtable.py +3 -2
- airflow/providers/google/cloud/hooks/cloud_batch.py +4 -3
- airflow/providers/google/cloud/hooks/cloud_build.py +7 -13
- airflow/providers/google/cloud/hooks/cloud_composer.py +7 -12
- airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
- airflow/providers/google/cloud/hooks/cloud_run.py +4 -3
- airflow/providers/google/cloud/hooks/cloud_sql.py +1 -1
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +8 -9
- airflow/providers/google/cloud/hooks/compute.py +3 -3
- airflow/providers/google/cloud/hooks/datacatalog.py +4 -3
- airflow/providers/google/cloud/hooks/dataflow.py +12 -12
- airflow/providers/google/cloud/hooks/dataform.py +3 -2
- airflow/providers/google/cloud/hooks/datafusion.py +2 -2
- airflow/providers/google/cloud/hooks/dataplex.py +11 -10
- airflow/providers/google/cloud/hooks/dataproc.py +5 -4
- airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/hooks/dlp.py +4 -3
- airflow/providers/google/cloud/hooks/gcs.py +19 -12
- airflow/providers/google/cloud/hooks/kms.py +3 -2
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +20 -14
- airflow/providers/google/cloud/hooks/life_sciences.py +1 -1
- airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
- airflow/providers/google/cloud/hooks/natural_language.py +3 -2
- airflow/providers/google/cloud/hooks/os_login.py +3 -2
- airflow/providers/google/cloud/hooks/pubsub.py +6 -6
- airflow/providers/google/cloud/hooks/secret_manager.py +3 -2
- airflow/providers/google/cloud/hooks/spanner.py +2 -2
- airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
- airflow/providers/google/cloud/hooks/stackdriver.py +4 -4
- airflow/providers/google/cloud/hooks/tasks.py +4 -3
- airflow/providers/google/cloud/hooks/text_to_speech.py +3 -2
- airflow/providers/google/cloud/hooks/translate.py +6 -15
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +7 -13
- airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
- airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +4 -11
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +4 -3
- airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +6 -11
- airflow/providers/google/cloud/hooks/vertex_ai/pipeline_job.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/prediction_service.py +3 -2
- airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
- airflow/providers/google/cloud/hooks/vision.py +4 -3
- airflow/providers/google/cloud/hooks/workflows.py +3 -2
- airflow/providers/google/cloud/links/base.py +7 -1
- airflow/providers/google/cloud/links/datafusion.py +8 -2
- airflow/providers/google/cloud/links/dataproc.py +8 -1
- airflow/providers/google/cloud/links/kubernetes_engine.py +2 -1
- airflow/providers/google/cloud/links/managed_kafka.py +30 -0
- airflow/providers/google/cloud/log/gcs_task_handler.py +15 -7
- airflow/providers/google/cloud/log/stackdriver_task_handler.py +8 -6
- airflow/providers/google/cloud/openlineage/utils.py +4 -2
- airflow/providers/google/cloud/operators/alloy_db.py +6 -5
- airflow/providers/google/cloud/operators/automl.py +11 -9
- airflow/providers/google/cloud/operators/bigquery.py +8 -6
- airflow/providers/google/cloud/operators/bigquery_dts.py +10 -8
- airflow/providers/google/cloud/operators/bigtable.py +3 -1
- airflow/providers/google/cloud/operators/cloud_base.py +2 -1
- airflow/providers/google/cloud/operators/cloud_batch.py +4 -2
- airflow/providers/google/cloud/operators/cloud_build.py +5 -3
- airflow/providers/google/cloud/operators/cloud_composer.py +7 -5
- airflow/providers/google/cloud/operators/cloud_memorystore.py +6 -4
- airflow/providers/google/cloud/operators/cloud_run.py +5 -3
- airflow/providers/google/cloud/operators/compute.py +5 -4
- airflow/providers/google/cloud/operators/datacatalog.py +11 -9
- airflow/providers/google/cloud/operators/dataform.py +5 -3
- airflow/providers/google/cloud/operators/datafusion.py +1 -1
- airflow/providers/google/cloud/operators/dataplex.py +20 -18
- airflow/providers/google/cloud/operators/dataproc.py +34 -5
- airflow/providers/google/cloud/operators/dataproc_metastore.py +18 -7
- airflow/providers/google/cloud/operators/dlp.py +19 -17
- airflow/providers/google/cloud/operators/gcs.py +5 -4
- airflow/providers/google/cloud/operators/kubernetes_engine.py +54 -5
- airflow/providers/google/cloud/operators/managed_kafka.py +271 -4
- airflow/providers/google/cloud/operators/natural_language.py +5 -3
- airflow/providers/google/cloud/operators/pubsub.py +10 -8
- airflow/providers/google/cloud/operators/speech_to_text.py +5 -3
- airflow/providers/google/cloud/operators/stackdriver.py +5 -3
- airflow/providers/google/cloud/operators/tasks.py +6 -4
- airflow/providers/google/cloud/operators/text_to_speech.py +4 -2
- airflow/providers/google/cloud/operators/translate.py +5 -3
- airflow/providers/google/cloud/operators/translate_speech.py +4 -2
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +8 -6
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +6 -4
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +8 -6
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +6 -4
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +6 -4
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +6 -4
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +6 -4
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +6 -4
- airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
- airflow/providers/google/cloud/operators/vision.py +6 -4
- airflow/providers/google/cloud/operators/workflows.py +7 -5
- airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
- airflow/providers/google/cloud/sensors/bigquery_dts.py +5 -3
- airflow/providers/google/cloud/sensors/bigtable.py +3 -2
- airflow/providers/google/cloud/sensors/cloud_composer.py +1 -1
- airflow/providers/google/cloud/sensors/dataplex.py +6 -4
- airflow/providers/google/cloud/sensors/dataproc.py +3 -2
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +2 -1
- airflow/providers/google/cloud/sensors/gcs.py +4 -2
- airflow/providers/google/cloud/sensors/pubsub.py +3 -2
- airflow/providers/google/cloud/sensors/workflows.py +5 -3
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +5 -3
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +12 -10
- airflow/providers/google/cloud/triggers/bigquery_dts.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_batch.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_build.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_composer.py +1 -1
- airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +3 -2
- airflow/providers/google/cloud/triggers/dataflow.py +3 -2
- airflow/providers/google/cloud/triggers/dataplex.py +2 -1
- airflow/providers/google/cloud/triggers/dataproc.py +3 -2
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +1 -1
- airflow/providers/google/cloud/triggers/pubsub.py +2 -1
- airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
- airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
- airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
- airflow/providers/google/cloud/{example_dags/__init__.py → utils/validators.py} +27 -0
- airflow/providers/google/common/auth_backend/google_openid.py +14 -5
- airflow/providers/google/common/consts.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +7 -8
- airflow/providers/google/common/hooks/operation_helpers.py +79 -0
- airflow/providers/google/get_provider_info.py +11 -6
- airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
- airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
- airflow/providers/google/marketing_platform/links/analytics_admin.py +10 -2
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -5
- {apache_airflow_providers_google-14.0.0rc1.dist-info → apache_airflow_providers_google-14.1.0.dist-info}/METADATA +35 -38
- {apache_airflow_providers_google-14.0.0rc1.dist-info → apache_airflow_providers_google-14.1.0.dist-info}/RECORD +144 -140
- {apache_airflow_providers_google-14.0.0rc1.dist-info → apache_airflow_providers_google-14.1.0.dist-info}/WHEEL +1 -1
- airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
- {apache_airflow_providers_google-14.0.0rc1.dist-info → apache_airflow_providers_google-14.1.0.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,4 @@
|
|
1
|
+
#
|
1
2
|
# Licensed to the Apache Software Foundation (ASF) under one
|
2
3
|
# or more contributor license agreements. See the NOTICE file
|
3
4
|
# distributed with this work for additional information
|
@@ -14,3 +15,29 @@
|
|
14
15
|
# KIND, either express or implied. See the License for the
|
15
16
|
# specific language governing permissions and limitations
|
16
17
|
# under the License.
|
18
|
+
from __future__ import annotations
|
19
|
+
|
20
|
+
import json
|
21
|
+
from json import JSONDecodeError
|
22
|
+
|
23
|
+
from wtforms.validators import ValidationError
|
24
|
+
|
25
|
+
|
26
|
+
class ValidJson:
|
27
|
+
"""
|
28
|
+
Validates data is valid JSON.
|
29
|
+
|
30
|
+
:param message:
|
31
|
+
Error message to raise in case of a validation error.
|
32
|
+
"""
|
33
|
+
|
34
|
+
def __init__(self, message=None):
|
35
|
+
self.message = message
|
36
|
+
|
37
|
+
def __call__(self, form, field):
|
38
|
+
if field.data:
|
39
|
+
try:
|
40
|
+
json.loads(field.data)
|
41
|
+
except JSONDecodeError as ex:
|
42
|
+
message = self.message or f"JSON Validation Error: {ex}"
|
43
|
+
raise ValidationError(message=field.gettext(message.format(field.data)))
|
@@ -23,21 +23,25 @@ import logging
|
|
23
23
|
from functools import wraps
|
24
24
|
from typing import Callable, TypeVar, cast
|
25
25
|
|
26
|
-
from flask import Response, current_app, request as flask_request # type: ignore
|
27
|
-
|
28
26
|
import google
|
29
27
|
import google.auth.transport.requests
|
30
28
|
import google.oauth2.id_token
|
31
|
-
from
|
32
|
-
from airflow.providers.google.common.utils.id_token_credentials import get_default_id_token_credentials
|
29
|
+
from flask import Response, current_app, request as flask_request # type: ignore
|
33
30
|
from google.auth import exceptions
|
34
31
|
from google.auth.transport.requests import AuthorizedSession
|
35
32
|
from google.oauth2 import service_account
|
36
33
|
|
34
|
+
from airflow.configuration import conf
|
35
|
+
from airflow.exceptions import AirflowProviderDeprecationWarning
|
36
|
+
from airflow.providers.google.common.deprecated import deprecated
|
37
|
+
from airflow.providers.google.common.utils.id_token_credentials import get_default_id_token_credentials
|
38
|
+
|
37
39
|
log = logging.getLogger(__name__)
|
38
40
|
|
39
41
|
_GOOGLE_ISSUERS = ("accounts.google.com", "https://accounts.google.com")
|
40
|
-
AUDIENCE = conf.get(
|
42
|
+
AUDIENCE = conf.get(
|
43
|
+
"api", "google_oauth2_audience", fallback="project-id-random-value.apps.googleusercontent.com"
|
44
|
+
)
|
41
45
|
|
42
46
|
|
43
47
|
def create_client_session():
|
@@ -52,6 +56,11 @@ def create_client_session():
|
|
52
56
|
return AuthorizedSession(credentials=id_token_credentials)
|
53
57
|
|
54
58
|
|
59
|
+
@deprecated(
|
60
|
+
planned_removal_release="apache-airflow-providers-google==15.0.0",
|
61
|
+
reason="Auth backends are not supported on Airflow 3, and this entire module will be removed",
|
62
|
+
category=AirflowProviderDeprecationWarning,
|
63
|
+
)
|
55
64
|
def init_app(_):
|
56
65
|
"""Initialize authentication."""
|
57
66
|
|
@@ -16,9 +16,10 @@
|
|
16
16
|
# under the License.
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
-
from airflow import version
|
20
19
|
from google.api_core.gapic_v1.client_info import ClientInfo
|
21
20
|
|
21
|
+
from airflow import version
|
22
|
+
|
22
23
|
GOOGLE_DEFAULT_DEFERRABLE_METHOD_NAME = "execute_complete"
|
23
24
|
|
24
25
|
CLIENT_INFO = ClientInfo(client_library_version="airflow_v" + version.version)
|
@@ -31,18 +31,23 @@ from contextlib import ExitStack, contextmanager
|
|
31
31
|
from subprocess import check_output
|
32
32
|
from typing import TYPE_CHECKING, Any, Callable, TypeVar, cast
|
33
33
|
|
34
|
+
import google.auth
|
35
|
+
import google.oauth2.service_account
|
34
36
|
import google_auth_httplib2
|
35
37
|
import requests
|
36
38
|
import tenacity
|
37
39
|
from asgiref.sync import sync_to_async
|
38
40
|
from gcloud.aio.auth.token import Token, TokenResponse
|
41
|
+
from google.api_core.exceptions import Forbidden, ResourceExhausted, TooManyRequests
|
42
|
+
from google.auth import _cloud_sdk, compute_engine # type: ignore[attr-defined]
|
43
|
+
from google.auth.environment_vars import CLOUD_SDK_CONFIG_DIR, CREDENTIALS
|
44
|
+
from google.auth.exceptions import RefreshError
|
45
|
+
from google.auth.transport import _http_client
|
39
46
|
from googleapiclient import discovery
|
40
47
|
from googleapiclient.errors import HttpError
|
41
48
|
from googleapiclient.http import MediaIoBaseDownload, build_http, set_user_agent
|
42
49
|
from requests import Session
|
43
50
|
|
44
|
-
import google.auth
|
45
|
-
import google.oauth2.service_account
|
46
51
|
from airflow import version
|
47
52
|
from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
|
48
53
|
from airflow.hooks.base import BaseHook
|
@@ -54,15 +59,9 @@ from airflow.providers.google.cloud.utils.credentials_provider import (
|
|
54
59
|
from airflow.providers.google.common.consts import CLIENT_INFO
|
55
60
|
from airflow.providers.google.common.deprecated import deprecated
|
56
61
|
from airflow.utils.process_utils import patch_environ
|
57
|
-
from google.api_core.exceptions import Forbidden, ResourceExhausted, TooManyRequests
|
58
|
-
from google.auth import _cloud_sdk, compute_engine # type: ignore[attr-defined]
|
59
|
-
from google.auth.environment_vars import CLOUD_SDK_CONFIG_DIR, CREDENTIALS
|
60
|
-
from google.auth.exceptions import RefreshError
|
61
|
-
from google.auth.transport import _http_client
|
62
62
|
|
63
63
|
if TYPE_CHECKING:
|
64
64
|
from aiohttp import ClientSession
|
65
|
-
|
66
65
|
from google.api_core.gapic_v1.client_info import ClientInfo
|
67
66
|
from google.auth.credentials import Credentials
|
68
67
|
|
@@ -0,0 +1,79 @@
|
|
1
|
+
#
|
2
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
3
|
+
# or more contributor license agreements. See the NOTICE file
|
4
|
+
# distributed with this work for additional information
|
5
|
+
# regarding copyright ownership. The ASF licenses this file
|
6
|
+
# to you under the Apache License, Version 2.0 (the
|
7
|
+
# "License"); you may not use this file except in compliance
|
8
|
+
# with the License. You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing,
|
13
|
+
# software distributed under the License is distributed on an
|
14
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
15
|
+
# KIND, either express or implied. See the License for the
|
16
|
+
# specific language governing permissions and limitations
|
17
|
+
# under the License.
|
18
|
+
"""This module contains a helper class to work with `google.api_core.operation.Operation` object."""
|
19
|
+
|
20
|
+
from __future__ import annotations
|
21
|
+
|
22
|
+
from typing import TYPE_CHECKING
|
23
|
+
|
24
|
+
from google.api_core.exceptions import GoogleAPICallError
|
25
|
+
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
26
|
+
|
27
|
+
from airflow.exceptions import AirflowException
|
28
|
+
|
29
|
+
if TYPE_CHECKING:
|
30
|
+
from google.api_core.operation import Operation
|
31
|
+
from google.api_core.retry import Retry
|
32
|
+
from proto import Message
|
33
|
+
|
34
|
+
|
35
|
+
class OperationHelper:
|
36
|
+
"""Helper class to work with `operation.Operation` objects."""
|
37
|
+
|
38
|
+
@staticmethod
|
39
|
+
def wait_for_operation_result(
|
40
|
+
operation: Operation,
|
41
|
+
timeout: int | None | _MethodDefault = DEFAULT,
|
42
|
+
polling: Retry | None = None,
|
43
|
+
retry: Retry | None = None,
|
44
|
+
) -> Message:
|
45
|
+
"""
|
46
|
+
Wait for long-lasting operation result to be retrieved.
|
47
|
+
|
48
|
+
For advance usage please check the docs on:
|
49
|
+
:class:`google.api_core.future.polling.PollingFuture`
|
50
|
+
:class:`google.api_core.retry.Retry`
|
51
|
+
|
52
|
+
:param operation: The initial operation to get result from.
|
53
|
+
:param timeout: How long (in seconds) to wait for the operation to complete.
|
54
|
+
If None, wait indefinitely. Overrides polling.timeout if both specified.
|
55
|
+
:param polling: How often and for how long to call polling RPC periodically.
|
56
|
+
:param retry: How to retry the operation polling if error occurs.
|
57
|
+
"""
|
58
|
+
try:
|
59
|
+
return operation.result(timeout=timeout, polling=polling, retry=retry)
|
60
|
+
except GoogleAPICallError as ex:
|
61
|
+
raise AirflowException("Google API error on operation result call") from ex
|
62
|
+
except Exception:
|
63
|
+
error = operation.exception(timeout=timeout)
|
64
|
+
raise AirflowException(error)
|
65
|
+
|
66
|
+
def wait_for_operation(
|
67
|
+
self,
|
68
|
+
operation: Operation,
|
69
|
+
timeout: float | int | None = None,
|
70
|
+
):
|
71
|
+
"""
|
72
|
+
Legacy method name wrapper.
|
73
|
+
|
74
|
+
Intended to use with existing hooks/operators, until the proper deprecation and replacement provided.
|
75
|
+
"""
|
76
|
+
if isinstance(timeout, float):
|
77
|
+
timeout = int(timeout)
|
78
|
+
|
79
|
+
return self.wait_for_operation_result(operation=operation, timeout=timeout)
|
@@ -27,8 +27,9 @@ def get_provider_info():
|
|
27
27
|
"name": "Google",
|
28
28
|
"description": "Google services including:\n\n - `Google Ads <https://ads.google.com/>`__\n - `Google Cloud (GCP) <https://cloud.google.com/>`__\n - `Google Firebase <https://firebase.google.com/>`__\n - `Google LevelDB <https://github.com/google/leveldb/>`__\n - `Google Marketing Platform <https://marketingplatform.google.com/>`__\n - `Google Workspace <https://workspace.google.com/>`__ (formerly Google Suite)\n",
|
29
29
|
"state": "ready",
|
30
|
-
"source-date-epoch":
|
30
|
+
"source-date-epoch": 1742980830,
|
31
31
|
"versions": [
|
32
|
+
"14.1.0",
|
32
33
|
"14.0.0",
|
33
34
|
"12.0.0",
|
34
35
|
"11.0.0",
|
@@ -1053,7 +1054,10 @@ def get_provider_info():
|
|
1053
1054
|
},
|
1054
1055
|
{
|
1055
1056
|
"integration-name": "Google",
|
1056
|
-
"python-modules": [
|
1057
|
+
"python-modules": [
|
1058
|
+
"airflow.providers.google.common.hooks.base_google",
|
1059
|
+
"airflow.providers.google.common.hooks.operation_helpers",
|
1060
|
+
],
|
1057
1061
|
},
|
1058
1062
|
{
|
1059
1063
|
"integration-name": "Google Discovery API",
|
@@ -1570,6 +1574,7 @@ def get_provider_info():
|
|
1570
1574
|
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaClusterLink",
|
1571
1575
|
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaClusterListLink",
|
1572
1576
|
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaTopicLink",
|
1577
|
+
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaConsumerGroupLink",
|
1573
1578
|
],
|
1574
1579
|
"secrets-backends": [
|
1575
1580
|
"airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend"
|
@@ -1589,7 +1594,7 @@ def get_provider_info():
|
|
1589
1594
|
"gcloud-aio-bigquery>=6.1.2",
|
1590
1595
|
"gcloud-aio-storage>=9.0.0",
|
1591
1596
|
"gcsfs>=2023.10.0",
|
1592
|
-
"google-ads>=
|
1597
|
+
"google-ads>=26.0.0",
|
1593
1598
|
"google-analytics-admin>=0.9.0",
|
1594
1599
|
"google-api-core>=2.11.0,!=2.16.0,!=2.18.0",
|
1595
1600
|
"google-api-python-client>=2.0.2",
|
@@ -1603,7 +1608,7 @@ def get_provider_info():
|
|
1603
1608
|
"google-cloud-bigtable>=2.17.0",
|
1604
1609
|
"google-cloud-build>=3.31.0",
|
1605
1610
|
"google-cloud-compute>=1.10.0",
|
1606
|
-
"google-cloud-container>=2.
|
1611
|
+
"google-cloud-container>=2.52.0",
|
1607
1612
|
"google-cloud-datacatalog>=3.23.0",
|
1608
1613
|
"google-cloud-dataflow-client>=0.8.6",
|
1609
1614
|
"google-cloud-dataform>=0.5.0",
|
@@ -1619,7 +1624,7 @@ def get_provider_info():
|
|
1619
1624
|
"google-cloud-monitoring>=2.18.0",
|
1620
1625
|
"google-cloud-orchestration-airflow>=1.10.0",
|
1621
1626
|
"google-cloud-os-login>=2.9.1",
|
1622
|
-
"google-cloud-pubsub>=2.
|
1627
|
+
"google-cloud-pubsub>=2.21.3",
|
1623
1628
|
"google-cloud-redis>=2.12.0",
|
1624
1629
|
"google-cloud-secret-manager>=2.16.0",
|
1625
1630
|
"google-cloud-spanner>=3.11.1,!=3.49.0",
|
@@ -1636,7 +1641,6 @@ def get_provider_info():
|
|
1636
1641
|
"google-cloud-batch>=0.13.0",
|
1637
1642
|
"grpcio-gcp>=0.2.2",
|
1638
1643
|
"httpx>=0.25.0",
|
1639
|
-
"json-merge-patch>=0.2",
|
1640
1644
|
"looker-sdk>=22.4.0,!=24.18.0",
|
1641
1645
|
"pandas-gbq>=0.7.0",
|
1642
1646
|
"pandas>=2.1.2,<2.2",
|
@@ -1671,4 +1675,5 @@ def get_provider_info():
|
|
1671
1675
|
"ssh": ["apache-airflow-providers-ssh"],
|
1672
1676
|
"trino": ["apache-airflow-providers-trino"],
|
1673
1677
|
},
|
1678
|
+
"devel-dependencies": [],
|
1674
1679
|
}
|
@@ -30,8 +30,6 @@ from __future__ import annotations
|
|
30
30
|
from collections.abc import Sequence
|
31
31
|
from typing import TYPE_CHECKING
|
32
32
|
|
33
|
-
from airflow.providers.google.common.consts import CLIENT_INFO
|
34
|
-
from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
|
35
33
|
from google.analytics.admin_v1beta import (
|
36
34
|
AnalyticsAdminServiceClient,
|
37
35
|
DataStream,
|
@@ -39,6 +37,9 @@ from google.analytics.admin_v1beta import (
|
|
39
37
|
)
|
40
38
|
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
41
39
|
|
40
|
+
from airflow.providers.google.common.consts import CLIENT_INFO
|
41
|
+
from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
|
42
|
+
|
42
43
|
if TYPE_CHECKING:
|
43
44
|
from google.analytics.admin_v1beta.services.analytics_admin_service.pagers import (
|
44
45
|
ListAccountsPager,
|
@@ -23,11 +23,11 @@ from collections.abc import Sequence
|
|
23
23
|
from functools import cached_property
|
24
24
|
from typing import TYPE_CHECKING, Any
|
25
25
|
|
26
|
+
from google.oauth2.credentials import Credentials
|
26
27
|
from googleapiclient.discovery import build
|
27
28
|
|
28
29
|
from airflow.exceptions import AirflowException
|
29
30
|
from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
|
30
|
-
from google.oauth2.credentials import Credentials
|
31
31
|
|
32
32
|
if TYPE_CHECKING:
|
33
33
|
from googleapiclient.discovery import Resource
|
@@ -18,12 +18,20 @@ from __future__ import annotations
|
|
18
18
|
|
19
19
|
from typing import TYPE_CHECKING, ClassVar
|
20
20
|
|
21
|
-
from airflow.models import BaseOperator, BaseOperatorLink, XCom
|
22
|
-
|
23
21
|
if TYPE_CHECKING:
|
22
|
+
from airflow.models import BaseOperator
|
24
23
|
from airflow.models.taskinstancekey import TaskInstanceKey
|
25
24
|
from airflow.utils.context import Context
|
26
25
|
|
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 BaseOperatorLink
|
30
|
+
from airflow.sdk.execution_time.xcom import XCom
|
31
|
+
else:
|
32
|
+
from airflow.models import XCom # type: ignore[no-redef]
|
33
|
+
from airflow.models.baseoperatorlink import BaseOperatorLink # type: ignore[no-redef]
|
34
|
+
|
27
35
|
|
28
36
|
BASE_LINK = "https://analytics.google.com/analytics/web/"
|
29
37
|
|
@@ -22,10 +22,6 @@ from __future__ import annotations
|
|
22
22
|
from collections.abc import Sequence
|
23
23
|
from typing import TYPE_CHECKING, Any
|
24
24
|
|
25
|
-
from airflow.exceptions import AirflowNotFoundException
|
26
|
-
from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
|
27
|
-
from airflow.providers.google.marketing_platform.hooks.analytics_admin import GoogleAnalyticsAdminHook
|
28
|
-
from airflow.providers.google.marketing_platform.links.analytics_admin import GoogleAnalyticsPropertyLink
|
29
25
|
from google.analytics.admin_v1beta import (
|
30
26
|
Account,
|
31
27
|
DataStream,
|
@@ -34,11 +30,17 @@ from google.analytics.admin_v1beta import (
|
|
34
30
|
)
|
35
31
|
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
36
32
|
|
33
|
+
from airflow.exceptions import AirflowNotFoundException
|
34
|
+
from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
|
35
|
+
from airflow.providers.google.marketing_platform.hooks.analytics_admin import GoogleAnalyticsAdminHook
|
36
|
+
from airflow.providers.google.marketing_platform.links.analytics_admin import GoogleAnalyticsPropertyLink
|
37
|
+
|
37
38
|
if TYPE_CHECKING:
|
38
|
-
from airflow.utils.context import Context
|
39
39
|
from google.api_core.retry import Retry
|
40
40
|
from google.protobuf.message import Message
|
41
41
|
|
42
|
+
from airflow.utils.context import Context
|
43
|
+
|
42
44
|
|
43
45
|
class GoogleAnalyticsAdminListAccountsOperator(GoogleCloudBaseOperator):
|
44
46
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: apache-airflow-providers-google
|
3
|
-
Version: 14.0
|
3
|
+
Version: 14.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>
|
@@ -20,16 +20,16 @@ Classifier: Programming Language :: Python :: 3.10
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.11
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
23
|
-
Requires-Dist: apache-airflow>=2.9.
|
24
|
-
Requires-Dist: apache-airflow-providers-common-compat>=1.4.
|
25
|
-
Requires-Dist: apache-airflow-providers-common-sql>=1.20.
|
23
|
+
Requires-Dist: apache-airflow>=2.9.0
|
24
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.4.0
|
25
|
+
Requires-Dist: apache-airflow-providers-common-sql>=1.20.0
|
26
26
|
Requires-Dist: asgiref>=3.5.2
|
27
27
|
Requires-Dist: dill>=0.2.3
|
28
28
|
Requires-Dist: gcloud-aio-auth>=5.2.0
|
29
29
|
Requires-Dist: gcloud-aio-bigquery>=6.1.2
|
30
30
|
Requires-Dist: gcloud-aio-storage>=9.0.0
|
31
31
|
Requires-Dist: gcsfs>=2023.10.0
|
32
|
-
Requires-Dist: google-ads>=
|
32
|
+
Requires-Dist: google-ads>=26.0.0
|
33
33
|
Requires-Dist: google-analytics-admin>=0.9.0
|
34
34
|
Requires-Dist: google-api-core>=2.11.0,!=2.16.0,!=2.18.0
|
35
35
|
Requires-Dist: google-api-python-client>=2.0.2
|
@@ -43,7 +43,7 @@ Requires-Dist: google-cloud-bigquery-datatransfer>=3.13.0
|
|
43
43
|
Requires-Dist: google-cloud-bigtable>=2.17.0
|
44
44
|
Requires-Dist: google-cloud-build>=3.31.0
|
45
45
|
Requires-Dist: google-cloud-compute>=1.10.0
|
46
|
-
Requires-Dist: google-cloud-container>=2.
|
46
|
+
Requires-Dist: google-cloud-container>=2.52.0
|
47
47
|
Requires-Dist: google-cloud-datacatalog>=3.23.0
|
48
48
|
Requires-Dist: google-cloud-dataflow-client>=0.8.6
|
49
49
|
Requires-Dist: google-cloud-dataform>=0.5.0
|
@@ -59,7 +59,7 @@ Requires-Dist: google-cloud-memcache>=1.7.0
|
|
59
59
|
Requires-Dist: google-cloud-monitoring>=2.18.0
|
60
60
|
Requires-Dist: google-cloud-orchestration-airflow>=1.10.0
|
61
61
|
Requires-Dist: google-cloud-os-login>=2.9.1
|
62
|
-
Requires-Dist: google-cloud-pubsub>=2.
|
62
|
+
Requires-Dist: google-cloud-pubsub>=2.21.3
|
63
63
|
Requires-Dist: google-cloud-redis>=2.12.0
|
64
64
|
Requires-Dist: google-cloud-secret-manager>=2.16.0
|
65
65
|
Requires-Dist: google-cloud-spanner>=3.11.1,!=3.49.0
|
@@ -76,7 +76,6 @@ Requires-Dist: google-cloud-run>=0.10.0
|
|
76
76
|
Requires-Dist: google-cloud-batch>=0.13.0
|
77
77
|
Requires-Dist: grpcio-gcp>=0.2.2
|
78
78
|
Requires-Dist: httpx>=0.25.0
|
79
|
-
Requires-Dist: json-merge-patch>=0.2
|
80
79
|
Requires-Dist: looker-sdk>=22.4.0,!=24.18.0
|
81
80
|
Requires-Dist: pandas-gbq>=0.7.0
|
82
81
|
Requires-Dist: pandas>=2.1.2,<2.2
|
@@ -107,11 +106,11 @@ Requires-Dist: apache-airflow-providers-sftp ; extra == "sftp"
|
|
107
106
|
Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
|
108
107
|
Requires-Dist: apache-airflow-providers-trino ; extra == "trino"
|
109
108
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
110
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-google/14.
|
111
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-google/14.
|
109
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-google/14.1.0/changelog.html
|
110
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-google/14.1.0
|
111
|
+
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
112
112
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
113
113
|
Project-URL: Source Code, https://github.com/apache/airflow
|
114
|
-
Project-URL: Twitter, https://x.com/ApacheAirflow
|
115
114
|
Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
116
115
|
Provides-Extra: amazon
|
117
116
|
Provides-Extra: apache-beam
|
@@ -132,32 +131,31 @@ Provides-Extra: ssh
|
|
132
131
|
Provides-Extra: trino
|
133
132
|
|
134
133
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
134
|
+
.. Licensed to the Apache Software Foundation (ASF) under one
|
135
|
+
or more contributor license agreements. See the NOTICE file
|
136
|
+
distributed with this work for additional information
|
137
|
+
regarding copyright ownership. The ASF licenses this file
|
138
|
+
to you under the Apache License, Version 2.0 (the
|
139
|
+
"License"); you may not use this file except in compliance
|
140
|
+
with the License. You may obtain a copy of the License at
|
142
141
|
|
143
|
-
|
142
|
+
.. http://www.apache.org/licenses/LICENSE-2.0
|
144
143
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
144
|
+
.. Unless required by applicable law or agreed to in writing,
|
145
|
+
software distributed under the License is distributed on an
|
146
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
147
|
+
KIND, either express or implied. See the License for the
|
148
|
+
specific language governing permissions and limitations
|
149
|
+
under the License.
|
151
150
|
|
152
|
-
|
153
|
-
|
154
|
-
.. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
|
155
|
-
`PROVIDER_README_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
|
151
|
+
.. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
|
156
152
|
|
153
|
+
.. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
|
154
|
+
``PROVIDER_README_TEMPLATE.rst.jinja2`` IN the ``dev/breeze/src/airflow_breeze/templates`` DIRECTORY
|
157
155
|
|
158
156
|
Package ``apache-airflow-providers-google``
|
159
157
|
|
160
|
-
Release: ``14.
|
158
|
+
Release: ``14.1.0``
|
161
159
|
|
162
160
|
|
163
161
|
Google services including:
|
@@ -177,7 +175,7 @@ This is a provider package for ``google`` provider. All classes for this provide
|
|
177
175
|
are in ``airflow.providers.google`` python package.
|
178
176
|
|
179
177
|
You can find package information and changelog for the provider
|
180
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-google/14.
|
178
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-google/14.1.0/>`_.
|
181
179
|
|
182
180
|
Installation
|
183
181
|
------------
|
@@ -203,7 +201,7 @@ PIP package Version required
|
|
203
201
|
``gcloud-aio-bigquery`` ``>=6.1.2``
|
204
202
|
``gcloud-aio-storage`` ``>=9.0.0``
|
205
203
|
``gcsfs`` ``>=2023.10.0``
|
206
|
-
``google-ads`` ``>=
|
204
|
+
``google-ads`` ``>=26.0.0``
|
207
205
|
``google-analytics-admin`` ``>=0.9.0``
|
208
206
|
``google-api-core`` ``>=2.11.0,!=2.16.0,!=2.18.0``
|
209
207
|
``google-api-python-client`` ``>=2.0.2``
|
@@ -217,7 +215,7 @@ PIP package Version required
|
|
217
215
|
``google-cloud-bigtable`` ``>=2.17.0``
|
218
216
|
``google-cloud-build`` ``>=3.31.0``
|
219
217
|
``google-cloud-compute`` ``>=1.10.0``
|
220
|
-
``google-cloud-container`` ``>=2.
|
218
|
+
``google-cloud-container`` ``>=2.52.0``
|
221
219
|
``google-cloud-datacatalog`` ``>=3.23.0``
|
222
220
|
``google-cloud-dataflow-client`` ``>=0.8.6``
|
223
221
|
``google-cloud-dataform`` ``>=0.5.0``
|
@@ -233,7 +231,7 @@ PIP package Version required
|
|
233
231
|
``google-cloud-monitoring`` ``>=2.18.0``
|
234
232
|
``google-cloud-orchestration-airflow`` ``>=1.10.0``
|
235
233
|
``google-cloud-os-login`` ``>=2.9.1``
|
236
|
-
``google-cloud-pubsub`` ``>=2.
|
234
|
+
``google-cloud-pubsub`` ``>=2.21.3``
|
237
235
|
``google-cloud-redis`` ``>=2.12.0``
|
238
236
|
``google-cloud-secret-manager`` ``>=2.16.0``
|
239
237
|
``google-cloud-spanner`` ``>=3.11.1,!=3.49.0``
|
@@ -250,7 +248,6 @@ PIP package Version required
|
|
250
248
|
``google-cloud-batch`` ``>=0.13.0``
|
251
249
|
``grpcio-gcp`` ``>=0.2.2``
|
252
250
|
``httpx`` ``>=0.25.0``
|
253
|
-
``json-merge-patch`` ``>=0.2``
|
254
251
|
``looker-sdk`` ``>=22.4.0,!=24.18.0``
|
255
252
|
``pandas-gbq`` ``>=0.7.0``
|
256
253
|
``pandas`` ``>=2.1.2,<2.2``
|
@@ -268,7 +265,7 @@ Cross provider package dependencies
|
|
268
265
|
-----------------------------------
|
269
266
|
|
270
267
|
Those are dependencies that might be needed in order to use all the features of the package.
|
271
|
-
You need to install the specified
|
268
|
+
You need to install the specified providers in order to use them.
|
272
269
|
|
273
270
|
You can install such cross-provider dependencies when installing from PyPI. For example:
|
274
271
|
|
@@ -301,5 +298,5 @@ Dependent package
|
|
301
298
|
======================================================================================================================== ====================
|
302
299
|
|
303
300
|
The changelog for the provider package can be found in the
|
304
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-google/14.
|
301
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-google/14.1.0/changelog.html>`_.
|
305
302
|
|