apache-airflow-providers-google 14.0.0__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.
Files changed (145) hide show
  1. airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
  2. airflow/providers/google/3rd-party-licenses/NOTICE +15 -0
  3. airflow/providers/google/__init__.py +1 -1
  4. airflow/providers/google/_vendor/__init__.py +0 -0
  5. airflow/providers/google/_vendor/json_merge_patch.py +91 -0
  6. airflow/providers/google/ads/hooks/ads.py +12 -11
  7. airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
  8. airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
  9. airflow/providers/google/cloud/hooks/automl.py +7 -13
  10. airflow/providers/google/cloud/hooks/bigquery.py +21 -22
  11. airflow/providers/google/cloud/hooks/bigquery_dts.py +8 -8
  12. airflow/providers/google/cloud/hooks/bigtable.py +3 -2
  13. airflow/providers/google/cloud/hooks/cloud_batch.py +4 -3
  14. airflow/providers/google/cloud/hooks/cloud_build.py +7 -13
  15. airflow/providers/google/cloud/hooks/cloud_composer.py +7 -12
  16. airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
  17. airflow/providers/google/cloud/hooks/cloud_run.py +4 -3
  18. airflow/providers/google/cloud/hooks/cloud_sql.py +1 -1
  19. airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +8 -9
  20. airflow/providers/google/cloud/hooks/compute.py +3 -3
  21. airflow/providers/google/cloud/hooks/datacatalog.py +4 -3
  22. airflow/providers/google/cloud/hooks/dataflow.py +12 -12
  23. airflow/providers/google/cloud/hooks/dataform.py +3 -2
  24. airflow/providers/google/cloud/hooks/datafusion.py +2 -2
  25. airflow/providers/google/cloud/hooks/dataplex.py +11 -10
  26. airflow/providers/google/cloud/hooks/dataproc.py +5 -4
  27. airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
  28. airflow/providers/google/cloud/hooks/dlp.py +4 -3
  29. airflow/providers/google/cloud/hooks/gcs.py +19 -12
  30. airflow/providers/google/cloud/hooks/kms.py +3 -2
  31. airflow/providers/google/cloud/hooks/kubernetes_engine.py +20 -14
  32. airflow/providers/google/cloud/hooks/life_sciences.py +1 -1
  33. airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
  34. airflow/providers/google/cloud/hooks/natural_language.py +3 -2
  35. airflow/providers/google/cloud/hooks/os_login.py +3 -2
  36. airflow/providers/google/cloud/hooks/pubsub.py +6 -6
  37. airflow/providers/google/cloud/hooks/secret_manager.py +3 -2
  38. airflow/providers/google/cloud/hooks/spanner.py +2 -2
  39. airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
  40. airflow/providers/google/cloud/hooks/stackdriver.py +4 -4
  41. airflow/providers/google/cloud/hooks/tasks.py +4 -3
  42. airflow/providers/google/cloud/hooks/text_to_speech.py +3 -2
  43. airflow/providers/google/cloud/hooks/translate.py +6 -15
  44. airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +6 -12
  45. airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +6 -12
  46. airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +7 -13
  47. airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
  48. airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +4 -11
  49. airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +4 -3
  50. airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +6 -12
  51. airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +6 -11
  52. airflow/providers/google/cloud/hooks/vertex_ai/pipeline_job.py +6 -12
  53. airflow/providers/google/cloud/hooks/vertex_ai/prediction_service.py +3 -2
  54. airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
  55. airflow/providers/google/cloud/hooks/vision.py +4 -3
  56. airflow/providers/google/cloud/hooks/workflows.py +3 -2
  57. airflow/providers/google/cloud/links/base.py +7 -1
  58. airflow/providers/google/cloud/links/datafusion.py +8 -2
  59. airflow/providers/google/cloud/links/dataproc.py +8 -1
  60. airflow/providers/google/cloud/links/kubernetes_engine.py +2 -1
  61. airflow/providers/google/cloud/links/managed_kafka.py +30 -0
  62. airflow/providers/google/cloud/log/gcs_task_handler.py +15 -7
  63. airflow/providers/google/cloud/log/stackdriver_task_handler.py +8 -6
  64. airflow/providers/google/cloud/openlineage/utils.py +4 -2
  65. airflow/providers/google/cloud/operators/alloy_db.py +6 -5
  66. airflow/providers/google/cloud/operators/automl.py +11 -9
  67. airflow/providers/google/cloud/operators/bigquery.py +8 -6
  68. airflow/providers/google/cloud/operators/bigquery_dts.py +10 -8
  69. airflow/providers/google/cloud/operators/bigtable.py +3 -1
  70. airflow/providers/google/cloud/operators/cloud_base.py +2 -1
  71. airflow/providers/google/cloud/operators/cloud_batch.py +4 -2
  72. airflow/providers/google/cloud/operators/cloud_build.py +5 -3
  73. airflow/providers/google/cloud/operators/cloud_composer.py +7 -5
  74. airflow/providers/google/cloud/operators/cloud_memorystore.py +6 -4
  75. airflow/providers/google/cloud/operators/cloud_run.py +5 -3
  76. airflow/providers/google/cloud/operators/compute.py +5 -4
  77. airflow/providers/google/cloud/operators/datacatalog.py +11 -9
  78. airflow/providers/google/cloud/operators/dataform.py +5 -3
  79. airflow/providers/google/cloud/operators/datafusion.py +1 -1
  80. airflow/providers/google/cloud/operators/dataplex.py +20 -18
  81. airflow/providers/google/cloud/operators/dataproc.py +34 -5
  82. airflow/providers/google/cloud/operators/dataproc_metastore.py +18 -7
  83. airflow/providers/google/cloud/operators/dlp.py +19 -17
  84. airflow/providers/google/cloud/operators/gcs.py +5 -4
  85. airflow/providers/google/cloud/operators/kubernetes_engine.py +54 -5
  86. airflow/providers/google/cloud/operators/managed_kafka.py +271 -4
  87. airflow/providers/google/cloud/operators/natural_language.py +5 -3
  88. airflow/providers/google/cloud/operators/pubsub.py +10 -8
  89. airflow/providers/google/cloud/operators/speech_to_text.py +5 -3
  90. airflow/providers/google/cloud/operators/stackdriver.py +5 -3
  91. airflow/providers/google/cloud/operators/tasks.py +6 -4
  92. airflow/providers/google/cloud/operators/text_to_speech.py +4 -2
  93. airflow/providers/google/cloud/operators/translate.py +5 -3
  94. airflow/providers/google/cloud/operators/translate_speech.py +4 -2
  95. airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +8 -6
  96. airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +6 -4
  97. airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +8 -6
  98. airflow/providers/google/cloud/operators/vertex_ai/dataset.py +6 -4
  99. airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +6 -4
  100. airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +6 -4
  101. airflow/providers/google/cloud/operators/vertex_ai/model_service.py +6 -4
  102. airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +6 -4
  103. airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
  104. airflow/providers/google/cloud/operators/vision.py +6 -4
  105. airflow/providers/google/cloud/operators/workflows.py +7 -5
  106. airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
  107. airflow/providers/google/cloud/sensors/bigquery_dts.py +5 -3
  108. airflow/providers/google/cloud/sensors/bigtable.py +3 -2
  109. airflow/providers/google/cloud/sensors/cloud_composer.py +1 -1
  110. airflow/providers/google/cloud/sensors/dataplex.py +6 -4
  111. airflow/providers/google/cloud/sensors/dataproc.py +3 -2
  112. airflow/providers/google/cloud/sensors/dataproc_metastore.py +2 -1
  113. airflow/providers/google/cloud/sensors/gcs.py +4 -2
  114. airflow/providers/google/cloud/sensors/pubsub.py +3 -2
  115. airflow/providers/google/cloud/sensors/workflows.py +5 -3
  116. airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +5 -3
  117. airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +12 -10
  118. airflow/providers/google/cloud/triggers/bigquery_dts.py +2 -1
  119. airflow/providers/google/cloud/triggers/cloud_batch.py +2 -1
  120. airflow/providers/google/cloud/triggers/cloud_build.py +2 -1
  121. airflow/providers/google/cloud/triggers/cloud_composer.py +1 -1
  122. airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +3 -2
  123. airflow/providers/google/cloud/triggers/dataflow.py +3 -2
  124. airflow/providers/google/cloud/triggers/dataplex.py +2 -1
  125. airflow/providers/google/cloud/triggers/dataproc.py +3 -2
  126. airflow/providers/google/cloud/triggers/kubernetes_engine.py +1 -1
  127. airflow/providers/google/cloud/triggers/pubsub.py +2 -1
  128. airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
  129. airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
  130. airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
  131. airflow/providers/google/cloud/{example_dags/__init__.py → utils/validators.py} +27 -0
  132. airflow/providers/google/common/auth_backend/google_openid.py +14 -5
  133. airflow/providers/google/common/consts.py +2 -1
  134. airflow/providers/google/common/hooks/base_google.py +7 -8
  135. airflow/providers/google/common/hooks/operation_helpers.py +79 -0
  136. airflow/providers/google/get_provider_info.py +11 -6
  137. airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
  138. airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
  139. airflow/providers/google/marketing_platform/links/analytics_admin.py +10 -2
  140. airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -5
  141. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-14.1.0.dist-info}/METADATA +32 -35
  142. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-14.1.0.dist-info}/RECORD +144 -140
  143. {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-14.1.0.dist-info}/WHEEL +1 -1
  144. airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
  145. {apache_airflow_providers_google-14.0.0.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 airflow.configuration import conf
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("api", "google_oauth2_audience")
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": 1739963477,
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": ["airflow.providers.google.common.hooks.base_google"],
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>=25.1.0",
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.17.4",
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.19.0",
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.3
1
+ Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-google
3
- Version: 14.0.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>
@@ -29,7 +29,7 @@ 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>=25.1.0
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.17.4
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.19.0
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.0.0/changelog.html
111
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-google/14.0.0
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
- .. Licensed to the Apache Software Foundation (ASF) under one
136
- or more contributor license agreements. See the NOTICE file
137
- distributed with this work for additional information
138
- regarding copyright ownership. The ASF licenses this file
139
- to you under the Apache License, Version 2.0 (the
140
- "License"); you may not use this file except in compliance
141
- with the License. You may obtain a copy of the License at
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
- .. http://www.apache.org/licenses/LICENSE-2.0
142
+ .. http://www.apache.org/licenses/LICENSE-2.0
144
143
 
145
- .. Unless required by applicable law or agreed to in writing,
146
- software distributed under the License is distributed on an
147
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
148
- KIND, either express or implied. See the License for the
149
- specific language governing permissions and limitations
150
- under the License.
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
- .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
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.0.0``
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.0.0/>`_.
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`` ``>=25.1.0``
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.17.4``
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.19.0``
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 provider packages in order to use them.
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.0.0/changelog.html>`_.
301
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-google/14.1.0/changelog.html>`_.
305
302