apache-airflow-providers-google 14.0.0__py3-none-any.whl → 19.1.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
- airflow/providers/google/3rd-party-licenses/NOTICE +5 -0
- airflow/providers/google/__init__.py +3 -3
- 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 +52 -43
- airflow/providers/google/ads/operators/ads.py +2 -2
- airflow/providers/google/ads/transfers/ads_to_gcs.py +3 -19
- airflow/providers/google/assets/gcs.py +1 -11
- airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
- airflow/providers/google/cloud/bundles/gcs.py +161 -0
- airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
- airflow/providers/google/cloud/hooks/bigquery.py +195 -318
- 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 +8 -9
- airflow/providers/google/cloud/hooks/cloud_build.py +6 -65
- airflow/providers/google/cloud/hooks/cloud_composer.py +292 -24
- airflow/providers/google/cloud/hooks/cloud_logging.py +109 -0
- airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
- airflow/providers/google/cloud/hooks/cloud_run.py +20 -11
- airflow/providers/google/cloud/hooks/cloud_sql.py +136 -64
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +35 -15
- airflow/providers/google/cloud/hooks/compute.py +7 -6
- airflow/providers/google/cloud/hooks/compute_ssh.py +7 -4
- airflow/providers/google/cloud/hooks/datacatalog.py +12 -3
- airflow/providers/google/cloud/hooks/dataflow.py +87 -242
- airflow/providers/google/cloud/hooks/dataform.py +9 -14
- airflow/providers/google/cloud/hooks/datafusion.py +7 -9
- airflow/providers/google/cloud/hooks/dataplex.py +13 -12
- airflow/providers/google/cloud/hooks/dataprep.py +2 -2
- airflow/providers/google/cloud/hooks/dataproc.py +76 -74
- airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/hooks/dlp.py +5 -4
- airflow/providers/google/cloud/hooks/gcs.py +144 -33
- airflow/providers/google/cloud/hooks/gen_ai.py +196 -0
- airflow/providers/google/cloud/hooks/kms.py +3 -2
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +22 -17
- airflow/providers/google/cloud/hooks/looker.py +6 -1
- airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
- airflow/providers/google/cloud/hooks/mlengine.py +7 -8
- 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 +105 -12
- airflow/providers/google/cloud/hooks/spanner.py +75 -10
- airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
- airflow/providers/google/cloud/hooks/stackdriver.py +18 -18
- 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 +8 -17
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +8 -222
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +9 -15
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +33 -283
- airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
- airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/experiment_service.py +202 -0
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +311 -10
- airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +79 -75
- airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +7 -13
- airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -12
- 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/vertex_ai/ray.py +223 -0
- airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
- airflow/providers/google/cloud/hooks/vision.py +7 -7
- airflow/providers/google/cloud/hooks/workflows.py +4 -3
- airflow/providers/google/cloud/links/alloy_db.py +0 -46
- airflow/providers/google/cloud/links/base.py +77 -7
- airflow/providers/google/cloud/links/bigquery.py +0 -47
- airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
- airflow/providers/google/cloud/links/bigtable.py +0 -48
- airflow/providers/google/cloud/links/cloud_build.py +0 -73
- airflow/providers/google/cloud/links/cloud_functions.py +0 -33
- airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
- airflow/providers/google/cloud/links/{life_sciences.py → cloud_run.py} +5 -27
- airflow/providers/google/cloud/links/cloud_sql.py +0 -33
- airflow/providers/google/cloud/links/cloud_storage_transfer.py +17 -46
- airflow/providers/google/cloud/links/cloud_tasks.py +7 -26
- airflow/providers/google/cloud/links/compute.py +0 -58
- airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
- airflow/providers/google/cloud/links/datacatalog.py +23 -54
- airflow/providers/google/cloud/links/dataflow.py +0 -34
- airflow/providers/google/cloud/links/dataform.py +0 -64
- airflow/providers/google/cloud/links/datafusion.py +1 -90
- airflow/providers/google/cloud/links/dataplex.py +0 -154
- airflow/providers/google/cloud/links/dataprep.py +0 -24
- airflow/providers/google/cloud/links/dataproc.py +11 -89
- airflow/providers/google/cloud/links/datastore.py +0 -31
- airflow/providers/google/cloud/links/kubernetes_engine.py +11 -61
- airflow/providers/google/cloud/links/managed_kafka.py +11 -51
- airflow/providers/google/cloud/links/mlengine.py +0 -70
- airflow/providers/google/cloud/links/pubsub.py +0 -32
- airflow/providers/google/cloud/links/spanner.py +0 -33
- airflow/providers/google/cloud/links/stackdriver.py +0 -30
- airflow/providers/google/cloud/links/translate.py +17 -187
- airflow/providers/google/cloud/links/vertex_ai.py +28 -195
- airflow/providers/google/cloud/links/workflows.py +0 -52
- airflow/providers/google/cloud/log/gcs_task_handler.py +166 -118
- airflow/providers/google/cloud/log/stackdriver_task_handler.py +14 -9
- airflow/providers/google/cloud/openlineage/CloudStorageTransferJobFacet.json +68 -0
- airflow/providers/google/cloud/openlineage/CloudStorageTransferRunFacet.json +60 -0
- airflow/providers/google/cloud/openlineage/DataFusionRunFacet.json +32 -0
- airflow/providers/google/cloud/openlineage/facets.py +141 -40
- airflow/providers/google/cloud/openlineage/mixins.py +14 -13
- airflow/providers/google/cloud/openlineage/utils.py +19 -3
- airflow/providers/google/cloud/operators/alloy_db.py +76 -61
- airflow/providers/google/cloud/operators/bigquery.py +104 -667
- airflow/providers/google/cloud/operators/bigquery_dts.py +12 -12
- airflow/providers/google/cloud/operators/bigtable.py +38 -7
- airflow/providers/google/cloud/operators/cloud_base.py +22 -1
- airflow/providers/google/cloud/operators/cloud_batch.py +18 -18
- airflow/providers/google/cloud/operators/cloud_build.py +80 -36
- airflow/providers/google/cloud/operators/cloud_composer.py +157 -71
- airflow/providers/google/cloud/operators/cloud_logging_sink.py +341 -0
- airflow/providers/google/cloud/operators/cloud_memorystore.py +74 -46
- airflow/providers/google/cloud/operators/cloud_run.py +39 -20
- airflow/providers/google/cloud/operators/cloud_sql.py +46 -61
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +92 -14
- airflow/providers/google/cloud/operators/compute.py +18 -50
- airflow/providers/google/cloud/operators/datacatalog.py +167 -29
- airflow/providers/google/cloud/operators/dataflow.py +38 -15
- airflow/providers/google/cloud/operators/dataform.py +19 -7
- airflow/providers/google/cloud/operators/datafusion.py +43 -43
- airflow/providers/google/cloud/operators/dataplex.py +212 -126
- airflow/providers/google/cloud/operators/dataprep.py +1 -5
- airflow/providers/google/cloud/operators/dataproc.py +134 -207
- airflow/providers/google/cloud/operators/dataproc_metastore.py +102 -84
- airflow/providers/google/cloud/operators/datastore.py +22 -6
- airflow/providers/google/cloud/operators/dlp.py +24 -45
- airflow/providers/google/cloud/operators/functions.py +21 -14
- airflow/providers/google/cloud/operators/gcs.py +15 -12
- airflow/providers/google/cloud/operators/gen_ai.py +389 -0
- airflow/providers/google/cloud/operators/kubernetes_engine.py +115 -106
- airflow/providers/google/cloud/operators/looker.py +1 -1
- airflow/providers/google/cloud/operators/managed_kafka.py +362 -40
- airflow/providers/google/cloud/operators/natural_language.py +5 -3
- airflow/providers/google/cloud/operators/pubsub.py +69 -21
- airflow/providers/google/cloud/operators/spanner.py +53 -45
- airflow/providers/google/cloud/operators/speech_to_text.py +5 -4
- airflow/providers/google/cloud/operators/stackdriver.py +5 -11
- airflow/providers/google/cloud/operators/tasks.py +6 -15
- airflow/providers/google/cloud/operators/text_to_speech.py +4 -3
- airflow/providers/google/cloud/operators/translate.py +46 -20
- airflow/providers/google/cloud/operators/translate_speech.py +4 -3
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +44 -34
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +34 -12
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +62 -53
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +75 -11
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +48 -12
- airflow/providers/google/cloud/operators/vertex_ai/experiment_service.py +435 -0
- airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +532 -1
- airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +135 -116
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +16 -12
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +62 -14
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +35 -10
- airflow/providers/google/cloud/operators/vertex_ai/ray.py +393 -0
- airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
- airflow/providers/google/cloud/operators/vision.py +7 -5
- airflow/providers/google/cloud/operators/workflows.py +24 -19
- airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
- airflow/providers/google/cloud/sensors/bigquery.py +2 -2
- airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -4
- airflow/providers/google/cloud/sensors/bigtable.py +14 -6
- airflow/providers/google/cloud/sensors/cloud_composer.py +535 -33
- airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -5
- airflow/providers/google/cloud/sensors/dataflow.py +27 -10
- airflow/providers/google/cloud/sensors/dataform.py +2 -2
- airflow/providers/google/cloud/sensors/datafusion.py +4 -4
- airflow/providers/google/cloud/sensors/dataplex.py +7 -5
- airflow/providers/google/cloud/sensors/dataprep.py +2 -2
- airflow/providers/google/cloud/sensors/dataproc.py +10 -9
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/sensors/gcs.py +22 -21
- airflow/providers/google/cloud/sensors/looker.py +5 -5
- airflow/providers/google/cloud/sensors/pubsub.py +20 -20
- airflow/providers/google/cloud/sensors/tasks.py +2 -2
- airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +2 -2
- airflow/providers/google/cloud/sensors/workflows.py +6 -4
- airflow/providers/google/cloud/transfers/adls_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +11 -8
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +14 -13
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +7 -3
- airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +12 -1
- airflow/providers/google/cloud/transfers/bigquery_to_postgres.py +24 -10
- airflow/providers/google/cloud/transfers/bigquery_to_sql.py +104 -5
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +18 -22
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +4 -5
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +45 -38
- airflow/providers/google/cloud/transfers/gcs_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/gcs_to_local.py +5 -3
- airflow/providers/google/cloud/transfers/gcs_to_sftp.py +10 -4
- airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +6 -2
- airflow/providers/google/cloud/transfers/gdrive_to_local.py +2 -2
- airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
- airflow/providers/google/cloud/transfers/local_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/mssql_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/oracle_to_gcs.py +36 -11
- airflow/providers/google/cloud/transfers/postgres_to_gcs.py +44 -12
- airflow/providers/google/cloud/transfers/s3_to_gcs.py +12 -6
- airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/sftp_to_gcs.py +36 -14
- airflow/providers/google/cloud/transfers/sheets_to_gcs.py +3 -3
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +10 -10
- airflow/providers/google/cloud/triggers/bigquery.py +75 -34
- 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 +3 -2
- airflow/providers/google/cloud/triggers/cloud_composer.py +303 -47
- airflow/providers/google/cloud/triggers/cloud_run.py +2 -2
- airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +96 -5
- airflow/providers/google/cloud/triggers/dataflow.py +125 -2
- airflow/providers/google/cloud/triggers/datafusion.py +1 -1
- airflow/providers/google/cloud/triggers/dataplex.py +16 -3
- airflow/providers/google/cloud/triggers/dataproc.py +124 -53
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +46 -28
- airflow/providers/google/cloud/triggers/mlengine.py +1 -1
- airflow/providers/google/cloud/triggers/pubsub.py +17 -20
- airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
- airflow/providers/google/cloud/utils/bigquery.py +5 -7
- airflow/providers/google/cloud/utils/bigquery_get_data.py +1 -1
- airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
- airflow/providers/google/cloud/utils/dataform.py +1 -1
- airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
- airflow/providers/google/cloud/utils/field_validator.py +1 -2
- airflow/providers/google/cloud/utils/validators.py +43 -0
- airflow/providers/google/common/auth_backend/google_openid.py +26 -9
- airflow/providers/google/common/consts.py +2 -1
- airflow/providers/google/common/deprecated.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +40 -43
- airflow/providers/google/common/hooks/operation_helpers.py +78 -0
- airflow/providers/google/common/links/storage.py +0 -22
- airflow/providers/google/common/utils/get_secret.py +31 -0
- airflow/providers/google/common/utils/id_token_credentials.py +4 -5
- airflow/providers/google/firebase/operators/firestore.py +2 -2
- airflow/providers/google/get_provider_info.py +61 -216
- airflow/providers/google/go_module_utils.py +35 -3
- airflow/providers/google/leveldb/hooks/leveldb.py +30 -6
- airflow/providers/google/leveldb/operators/leveldb.py +2 -2
- airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
- airflow/providers/google/marketing_platform/hooks/display_video.py +3 -109
- airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
- airflow/providers/google/marketing_platform/links/analytics_admin.py +4 -5
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -6
- airflow/providers/google/marketing_platform/operators/campaign_manager.py +5 -5
- airflow/providers/google/marketing_platform/operators/display_video.py +28 -489
- airflow/providers/google/marketing_platform/operators/search_ads.py +2 -2
- airflow/providers/google/marketing_platform/sensors/campaign_manager.py +2 -2
- airflow/providers/google/marketing_platform/sensors/display_video.py +4 -64
- airflow/providers/google/suite/hooks/calendar.py +1 -1
- airflow/providers/google/suite/hooks/drive.py +2 -2
- airflow/providers/google/suite/hooks/sheets.py +15 -1
- airflow/providers/google/suite/operators/sheets.py +8 -3
- airflow/providers/google/suite/sensors/drive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_gdrive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
- airflow/providers/google/suite/transfers/local_to_drive.py +3 -3
- airflow/providers/google/suite/transfers/sql_to_sheets.py +5 -4
- airflow/providers/google/version_compat.py +15 -1
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/METADATA +117 -72
- apache_airflow_providers_google-19.1.0rc1.dist-info/RECORD +331 -0
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/WHEEL +1 -1
- apache_airflow_providers_google-19.1.0rc1.dist-info/licenses/NOTICE +5 -0
- airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
- airflow/providers/google/cloud/hooks/automl.py +0 -679
- airflow/providers/google/cloud/hooks/life_sciences.py +0 -159
- airflow/providers/google/cloud/links/automl.py +0 -193
- airflow/providers/google/cloud/operators/automl.py +0 -1360
- airflow/providers/google/cloud/operators/life_sciences.py +0 -119
- airflow/providers/google/cloud/operators/mlengine.py +0 -1515
- airflow/providers/google/cloud/utils/mlengine_operator_utils.py +0 -273
- apache_airflow_providers_google-14.0.0.dist-info/RECORD +0 -318
- /airflow/providers/google/cloud/{example_dags → bundles}/__init__.py +0 -0
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/entry_points.txt +0 -0
- {airflow/providers/google → apache_airflow_providers_google-19.1.0rc1.dist-info/licenses}/LICENSE +0 -0
|
@@ -35,12 +35,11 @@ import json
|
|
|
35
35
|
import os
|
|
36
36
|
from typing import TYPE_CHECKING
|
|
37
37
|
|
|
38
|
-
import google.auth.transport
|
|
39
38
|
from google.auth import credentials as google_auth_credentials, environment_vars, exceptions
|
|
40
|
-
from google.oauth2 import credentials as oauth2_credentials, service_account
|
|
39
|
+
from google.oauth2 import credentials as oauth2_credentials, service_account
|
|
41
40
|
|
|
42
41
|
if TYPE_CHECKING:
|
|
43
|
-
import google.
|
|
42
|
+
import google.auth.transport
|
|
44
43
|
|
|
45
44
|
# Valid types accepted for file-based credentials.
|
|
46
45
|
# They are taken from "google.auth._default" and since they are all "protected" and the imports might
|
|
@@ -111,7 +110,7 @@ def _load_credentials_from_file(
|
|
|
111
110
|
|
|
112
111
|
return current_credentials
|
|
113
112
|
|
|
114
|
-
|
|
113
|
+
if credential_type == _SERVICE_ACCOUNT_TYPE:
|
|
115
114
|
try:
|
|
116
115
|
return service_account.IDTokenCredentials.from_service_account_info(
|
|
117
116
|
info, target_audience=target_audience
|
|
@@ -147,7 +146,7 @@ def _get_gcloud_sdk_credentials(
|
|
|
147
146
|
target_audience: str | None,
|
|
148
147
|
) -> google_auth_credentials.Credentials | None:
|
|
149
148
|
"""Get the credentials and project ID from the Cloud SDK."""
|
|
150
|
-
from google.auth import _cloud_sdk
|
|
149
|
+
from google.auth import _cloud_sdk
|
|
151
150
|
|
|
152
151
|
# Check if application default credentials exist.
|
|
153
152
|
credentials_filename = _cloud_sdk.get_application_default_credentials_path()
|
|
@@ -20,12 +20,12 @@ from collections.abc import Sequence
|
|
|
20
20
|
from typing import TYPE_CHECKING
|
|
21
21
|
|
|
22
22
|
from airflow.exceptions import AirflowException
|
|
23
|
-
from airflow.models import BaseOperator
|
|
24
23
|
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
|
|
25
24
|
from airflow.providers.google.firebase.hooks.firestore import CloudFirestoreHook
|
|
25
|
+
from airflow.providers.google.version_compat import BaseOperator
|
|
26
26
|
|
|
27
27
|
if TYPE_CHECKING:
|
|
28
|
-
from airflow.
|
|
28
|
+
from airflow.providers.common.compat.sdk import Context
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class CloudFirestoreExportDatabaseOperator(BaseOperator):
|
|
@@ -26,77 +26,6 @@ def get_provider_info():
|
|
|
26
26
|
"package-name": "apache-airflow-providers-google",
|
|
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
|
-
"state": "ready",
|
|
30
|
-
"source-date-epoch": 1739963477,
|
|
31
|
-
"versions": [
|
|
32
|
-
"14.0.0",
|
|
33
|
-
"12.0.0",
|
|
34
|
-
"11.0.0",
|
|
35
|
-
"10.26.0",
|
|
36
|
-
"10.25.0",
|
|
37
|
-
"10.24.0",
|
|
38
|
-
"10.23.0",
|
|
39
|
-
"10.22.0",
|
|
40
|
-
"10.21.1",
|
|
41
|
-
"10.21.0",
|
|
42
|
-
"10.20.0",
|
|
43
|
-
"10.19.0",
|
|
44
|
-
"10.18.0",
|
|
45
|
-
"10.17.0",
|
|
46
|
-
"10.16.0",
|
|
47
|
-
"10.15.0",
|
|
48
|
-
"10.14.0",
|
|
49
|
-
"10.13.1",
|
|
50
|
-
"10.13.0",
|
|
51
|
-
"10.12.0",
|
|
52
|
-
"10.11.1",
|
|
53
|
-
"10.11.0",
|
|
54
|
-
"10.10.1",
|
|
55
|
-
"10.10.0",
|
|
56
|
-
"10.9.0",
|
|
57
|
-
"10.8.0",
|
|
58
|
-
"10.7.0",
|
|
59
|
-
"10.6.0",
|
|
60
|
-
"10.5.0",
|
|
61
|
-
"10.4.0",
|
|
62
|
-
"10.3.0",
|
|
63
|
-
"10.2.0",
|
|
64
|
-
"10.1.1",
|
|
65
|
-
"10.1.0",
|
|
66
|
-
"10.0.0",
|
|
67
|
-
"9.0.0",
|
|
68
|
-
"8.12.0",
|
|
69
|
-
"8.11.0",
|
|
70
|
-
"8.10.0",
|
|
71
|
-
"8.9.0",
|
|
72
|
-
"8.8.0",
|
|
73
|
-
"8.7.0",
|
|
74
|
-
"8.6.0",
|
|
75
|
-
"8.5.0",
|
|
76
|
-
"8.4.0",
|
|
77
|
-
"8.3.0",
|
|
78
|
-
"8.2.0",
|
|
79
|
-
"8.1.0",
|
|
80
|
-
"8.0.0",
|
|
81
|
-
"7.0.0",
|
|
82
|
-
"6.8.0",
|
|
83
|
-
"6.7.0",
|
|
84
|
-
"6.6.0",
|
|
85
|
-
"6.5.0",
|
|
86
|
-
"6.4.0",
|
|
87
|
-
"6.3.0",
|
|
88
|
-
"6.2.0",
|
|
89
|
-
"6.1.0",
|
|
90
|
-
"6.0.0",
|
|
91
|
-
"5.1.0",
|
|
92
|
-
"5.0.0",
|
|
93
|
-
"4.0.0",
|
|
94
|
-
"3.0.0",
|
|
95
|
-
"2.2.0",
|
|
96
|
-
"2.1.0",
|
|
97
|
-
"2.0.0",
|
|
98
|
-
"1.0.0",
|
|
99
|
-
],
|
|
100
29
|
"integrations": [
|
|
101
30
|
{
|
|
102
31
|
"integration-name": "Google Analytics (GA4)",
|
|
@@ -114,13 +43,6 @@ def get_provider_info():
|
|
|
114
43
|
"how-to-guide": ["/docs/apache-airflow-providers-google/operators/ads.rst"],
|
|
115
44
|
"tags": ["gmp"],
|
|
116
45
|
},
|
|
117
|
-
{
|
|
118
|
-
"integration-name": "Google AutoML",
|
|
119
|
-
"external-doc-url": "https://cloud.google.com/automl/",
|
|
120
|
-
"how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/automl.rst"],
|
|
121
|
-
"logo": "/docs/integration-logos/Cloud-AutoML.png",
|
|
122
|
-
"tags": ["gcp"],
|
|
123
|
-
},
|
|
124
46
|
{
|
|
125
47
|
"integration-name": "Google BigQuery Data Transfer Service",
|
|
126
48
|
"external-doc-url": "https://cloud.google.com/bigquery/transfer/",
|
|
@@ -214,13 +136,6 @@ def get_provider_info():
|
|
|
214
136
|
"logo": "/docs/integration-logos/Key-Management-Service.png",
|
|
215
137
|
"tags": ["gcp"],
|
|
216
138
|
},
|
|
217
|
-
{
|
|
218
|
-
"integration-name": "Google Cloud Life Sciences",
|
|
219
|
-
"external-doc-url": "https://cloud.google.com/life-sciences/",
|
|
220
|
-
"how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/life_sciences.rst"],
|
|
221
|
-
"logo": "/docs/integration-logos/Google-Cloud-Life-Sciences.png",
|
|
222
|
-
"tags": ["gcp"],
|
|
223
|
-
},
|
|
224
139
|
{
|
|
225
140
|
"integration-name": "Google Cloud Managed Service for Apache Kafka",
|
|
226
141
|
"external-doc-url": "https://cloud.google.com/managed-service-for-apache-kafka/docs/",
|
|
@@ -297,7 +212,10 @@ def get_provider_info():
|
|
|
297
212
|
{
|
|
298
213
|
"integration-name": "Google Cloud Tasks",
|
|
299
214
|
"external-doc-url": "https://cloud.google.com/tasks/",
|
|
300
|
-
"how-to-guide": [
|
|
215
|
+
"how-to-guide": [
|
|
216
|
+
"/docs/apache-airflow-providers-google/operators/cloud/tasks.rst",
|
|
217
|
+
"/docs/apache-airflow-providers-google/sensors/google-cloud-tasks.rst",
|
|
218
|
+
],
|
|
301
219
|
"logo": "/docs/integration-logos/Cloud-Tasks.png",
|
|
302
220
|
"tags": ["gcp"],
|
|
303
221
|
},
|
|
@@ -541,6 +459,21 @@ def get_provider_info():
|
|
|
541
459
|
"how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/looker.rst"],
|
|
542
460
|
"tags": ["gcp"],
|
|
543
461
|
},
|
|
462
|
+
{
|
|
463
|
+
"integration-name": "Google Cloud Logging Sink",
|
|
464
|
+
"external-doc-url": "https://cloud.google.com/logging",
|
|
465
|
+
"logo": "/docs/integration-logos/Cloud-Logging-Sink.png",
|
|
466
|
+
"how-to-guide": [
|
|
467
|
+
"/docs/apache-airflow-providers-google/operators/cloud/cloud_logging_sink.rst"
|
|
468
|
+
],
|
|
469
|
+
"tags": ["gcp"],
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"integration-name": "Google Cloud Generative AI",
|
|
473
|
+
"external-doc-url": "https://cloud.google.com/generative-ai-studio",
|
|
474
|
+
"how-to-guide": ["/docs/apache-airflow-providers-google/operators/cloud/gen_ai.rst"],
|
|
475
|
+
"tags": ["gcp"],
|
|
476
|
+
},
|
|
544
477
|
],
|
|
545
478
|
"operators": [
|
|
546
479
|
{
|
|
@@ -555,10 +488,6 @@ def get_provider_info():
|
|
|
555
488
|
"integration-name": "Google Cloud AlloyDB",
|
|
556
489
|
"python-modules": ["airflow.providers.google.cloud.operators.alloy_db"],
|
|
557
490
|
},
|
|
558
|
-
{
|
|
559
|
-
"integration-name": "Google AutoML",
|
|
560
|
-
"python-modules": ["airflow.providers.google.cloud.operators.automl"],
|
|
561
|
-
},
|
|
562
491
|
{
|
|
563
492
|
"integration-name": "Google BigQuery",
|
|
564
493
|
"python-modules": ["airflow.providers.google.cloud.operators.bigquery"],
|
|
@@ -599,10 +528,6 @@ def get_provider_info():
|
|
|
599
528
|
"integration-name": "Google Compute Engine",
|
|
600
529
|
"python-modules": ["airflow.providers.google.cloud.operators.compute"],
|
|
601
530
|
},
|
|
602
|
-
{
|
|
603
|
-
"integration-name": "Google Data Catalog",
|
|
604
|
-
"python-modules": ["airflow.providers.google.cloud.operators.datacatalog"],
|
|
605
|
-
},
|
|
606
531
|
{
|
|
607
532
|
"integration-name": "Google Dataflow",
|
|
608
533
|
"python-modules": ["airflow.providers.google.cloud.operators.dataflow"],
|
|
@@ -647,14 +572,6 @@ def get_provider_info():
|
|
|
647
572
|
"integration-name": "Google Kubernetes Engine",
|
|
648
573
|
"python-modules": ["airflow.providers.google.cloud.operators.kubernetes_engine"],
|
|
649
574
|
},
|
|
650
|
-
{
|
|
651
|
-
"integration-name": "Google Cloud Life Sciences",
|
|
652
|
-
"python-modules": ["airflow.providers.google.cloud.operators.life_sciences"],
|
|
653
|
-
},
|
|
654
|
-
{
|
|
655
|
-
"integration-name": "Google Machine Learning Engine",
|
|
656
|
-
"python-modules": ["airflow.providers.google.cloud.operators.mlengine"],
|
|
657
|
-
},
|
|
658
575
|
{
|
|
659
576
|
"integration-name": "Google Cloud Natural Language",
|
|
660
577
|
"python-modules": ["airflow.providers.google.cloud.operators.natural_language"],
|
|
@@ -741,11 +658,13 @@ def get_provider_info():
|
|
|
741
658
|
"airflow.providers.google.cloud.operators.vertex_ai.auto_ml",
|
|
742
659
|
"airflow.providers.google.cloud.operators.vertex_ai.batch_prediction_job",
|
|
743
660
|
"airflow.providers.google.cloud.operators.vertex_ai.endpoint_service",
|
|
661
|
+
"airflow.providers.google.cloud.operators.vertex_ai.experiment_service",
|
|
744
662
|
"airflow.providers.google.cloud.operators.vertex_ai.hyperparameter_tuning_job",
|
|
745
663
|
"airflow.providers.google.cloud.operators.vertex_ai.model_service",
|
|
746
664
|
"airflow.providers.google.cloud.operators.vertex_ai.pipeline_job",
|
|
747
665
|
"airflow.providers.google.cloud.operators.vertex_ai.generative_model",
|
|
748
666
|
"airflow.providers.google.cloud.operators.vertex_ai.feature_store",
|
|
667
|
+
"airflow.providers.google.cloud.operators.vertex_ai.ray",
|
|
749
668
|
],
|
|
750
669
|
},
|
|
751
670
|
{
|
|
@@ -764,6 +683,14 @@ def get_provider_info():
|
|
|
764
683
|
"integration-name": "Google Cloud Managed Service for Apache Kafka",
|
|
765
684
|
"python-modules": ["airflow.providers.google.cloud.operators.managed_kafka"],
|
|
766
685
|
},
|
|
686
|
+
{
|
|
687
|
+
"integration-name": "Google Cloud Logging Sink",
|
|
688
|
+
"python-modules": ["airflow.providers.google.cloud.operators.cloud_logging_sink"],
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
"integration-name": "Google Cloud Generative AI",
|
|
692
|
+
"python-modules": ["airflow.providers.google.cloud.operators.gen_ai"],
|
|
693
|
+
},
|
|
767
694
|
],
|
|
768
695
|
"sensors": [
|
|
769
696
|
{
|
|
@@ -884,10 +811,6 @@ def get_provider_info():
|
|
|
884
811
|
],
|
|
885
812
|
"hooks": [
|
|
886
813
|
{"integration-name": "Google Ads", "python-modules": ["airflow.providers.google.ads.hooks.ads"]},
|
|
887
|
-
{
|
|
888
|
-
"integration-name": "Google AutoML",
|
|
889
|
-
"python-modules": ["airflow.providers.google.cloud.hooks.automl"],
|
|
890
|
-
},
|
|
891
814
|
{
|
|
892
815
|
"integration-name": "Google BigQuery",
|
|
893
816
|
"python-modules": ["airflow.providers.google.cloud.hooks.bigquery"],
|
|
@@ -935,10 +858,6 @@ def get_provider_info():
|
|
|
935
858
|
"airflow.providers.google.cloud.hooks.compute_ssh",
|
|
936
859
|
],
|
|
937
860
|
},
|
|
938
|
-
{
|
|
939
|
-
"integration-name": "Google Data Catalog",
|
|
940
|
-
"python-modules": ["airflow.providers.google.cloud.hooks.datacatalog"],
|
|
941
|
-
},
|
|
942
861
|
{
|
|
943
862
|
"integration-name": "Google Dataflow",
|
|
944
863
|
"python-modules": ["airflow.providers.google.cloud.hooks.dataflow"],
|
|
@@ -991,10 +910,6 @@ def get_provider_info():
|
|
|
991
910
|
"integration-name": "Google Kubernetes Engine",
|
|
992
911
|
"python-modules": ["airflow.providers.google.cloud.hooks.kubernetes_engine"],
|
|
993
912
|
},
|
|
994
|
-
{
|
|
995
|
-
"integration-name": "Google Cloud Life Sciences",
|
|
996
|
-
"python-modules": ["airflow.providers.google.cloud.hooks.life_sciences"],
|
|
997
|
-
},
|
|
998
913
|
{
|
|
999
914
|
"integration-name": "Google Machine Learning Engine",
|
|
1000
915
|
"python-modules": ["airflow.providers.google.cloud.hooks.mlengine"],
|
|
@@ -1053,7 +968,10 @@ def get_provider_info():
|
|
|
1053
968
|
},
|
|
1054
969
|
{
|
|
1055
970
|
"integration-name": "Google",
|
|
1056
|
-
"python-modules": [
|
|
971
|
+
"python-modules": [
|
|
972
|
+
"airflow.providers.google.common.hooks.base_google",
|
|
973
|
+
"airflow.providers.google.common.hooks.operation_helpers",
|
|
974
|
+
],
|
|
1057
975
|
},
|
|
1058
976
|
{
|
|
1059
977
|
"integration-name": "Google Discovery API",
|
|
@@ -1103,12 +1021,14 @@ def get_provider_info():
|
|
|
1103
1021
|
"airflow.providers.google.cloud.hooks.vertex_ai.auto_ml",
|
|
1104
1022
|
"airflow.providers.google.cloud.hooks.vertex_ai.batch_prediction_job",
|
|
1105
1023
|
"airflow.providers.google.cloud.hooks.vertex_ai.endpoint_service",
|
|
1024
|
+
"airflow.providers.google.cloud.hooks.vertex_ai.experiment_service",
|
|
1106
1025
|
"airflow.providers.google.cloud.hooks.vertex_ai.hyperparameter_tuning_job",
|
|
1107
1026
|
"airflow.providers.google.cloud.hooks.vertex_ai.model_service",
|
|
1108
1027
|
"airflow.providers.google.cloud.hooks.vertex_ai.pipeline_job",
|
|
1109
1028
|
"airflow.providers.google.cloud.hooks.vertex_ai.generative_model",
|
|
1110
1029
|
"airflow.providers.google.cloud.hooks.vertex_ai.prediction_service",
|
|
1111
1030
|
"airflow.providers.google.cloud.hooks.vertex_ai.feature_store",
|
|
1031
|
+
"airflow.providers.google.cloud.hooks.vertex_ai.ray",
|
|
1112
1032
|
],
|
|
1113
1033
|
},
|
|
1114
1034
|
{
|
|
@@ -1127,6 +1047,14 @@ def get_provider_info():
|
|
|
1127
1047
|
"integration-name": "Google Cloud Managed Service for Apache Kafka",
|
|
1128
1048
|
"python-modules": ["airflow.providers.google.cloud.hooks.managed_kafka"],
|
|
1129
1049
|
},
|
|
1050
|
+
{
|
|
1051
|
+
"integration-name": "Google Cloud Logging Sink",
|
|
1052
|
+
"python-modules": ["airflow.providers.google.cloud.hooks.cloud_logging"],
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
"integration-name": "Google Cloud Generative AI",
|
|
1056
|
+
"python-modules": ["airflow.providers.google.cloud.hooks.gen_ai"],
|
|
1057
|
+
},
|
|
1130
1058
|
],
|
|
1131
1059
|
"triggers": [
|
|
1132
1060
|
{
|
|
@@ -1404,6 +1332,12 @@ def get_provider_info():
|
|
|
1404
1332
|
"python-module": "airflow.providers.google.cloud.transfers.azure_blob_to_gcs",
|
|
1405
1333
|
"how-to-guide": "/docs/apache-airflow-providers-google/operators/transfer/azure_blob_to_gcs.rst",
|
|
1406
1334
|
},
|
|
1335
|
+
{
|
|
1336
|
+
"source-integration-name": "Hypertext Transfer Protocol (HTTP)",
|
|
1337
|
+
"target-integration-name": "Google Cloud Storage (GCS)",
|
|
1338
|
+
"python-module": "airflow.providers.google.cloud.transfers.http_to_gcs",
|
|
1339
|
+
"how-to-guide": "/docs/apache-airflow-providers-google/operators/transfer/http_to_gcs.rst",
|
|
1340
|
+
},
|
|
1407
1341
|
],
|
|
1408
1342
|
"connection-types": [
|
|
1409
1343
|
{
|
|
@@ -1434,6 +1368,14 @@ def get_provider_info():
|
|
|
1434
1368
|
"hook-class-name": "airflow.providers.google.leveldb.hooks.leveldb.LevelDBHook",
|
|
1435
1369
|
"connection-type": "leveldb",
|
|
1436
1370
|
},
|
|
1371
|
+
{
|
|
1372
|
+
"hook-class-name": "airflow.providers.google.ads.hooks.ads.GoogleAdsHook",
|
|
1373
|
+
"connection-type": "google_ads",
|
|
1374
|
+
},
|
|
1375
|
+
{
|
|
1376
|
+
"hook-class-name": "airflow.providers.google.cloud.hooks.looker.LookerHook",
|
|
1377
|
+
"connection-type": "gcp_looker",
|
|
1378
|
+
},
|
|
1437
1379
|
],
|
|
1438
1380
|
"extra-links": [
|
|
1439
1381
|
"airflow.providers.google.cloud.links.alloy_db.AlloyDBBackupsLink",
|
|
@@ -1464,11 +1406,9 @@ def get_provider_info():
|
|
|
1464
1406
|
"airflow.providers.google.cloud.links.compute.ComputeInstanceDetailsLink",
|
|
1465
1407
|
"airflow.providers.google.cloud.links.compute.ComputeInstanceTemplateDetailsLink",
|
|
1466
1408
|
"airflow.providers.google.cloud.links.compute.ComputeInstanceGroupManagerDetailsLink",
|
|
1409
|
+
"airflow.providers.google.cloud.links.cloud_run.CloudRunJobLoggingLink",
|
|
1467
1410
|
"airflow.providers.google.cloud.links.cloud_tasks.CloudTasksQueueLink",
|
|
1468
1411
|
"airflow.providers.google.cloud.links.cloud_tasks.CloudTasksLink",
|
|
1469
|
-
"airflow.providers.google.cloud.links.datacatalog.DataCatalogEntryGroupLink",
|
|
1470
|
-
"airflow.providers.google.cloud.links.datacatalog.DataCatalogEntryLink",
|
|
1471
|
-
"airflow.providers.google.cloud.links.datacatalog.DataCatalogTagTemplateLink",
|
|
1472
1412
|
"airflow.providers.google.cloud.links.dataproc.DataprocLink",
|
|
1473
1413
|
"airflow.providers.google.cloud.links.dataproc.DataprocListLink",
|
|
1474
1414
|
"airflow.providers.google.cloud.links.dataproc.DataprocClusterLink",
|
|
@@ -1495,6 +1435,8 @@ def get_provider_info():
|
|
|
1495
1435
|
"airflow.providers.google.cloud.links.vertex_ai.VertexAIEndpointListLink",
|
|
1496
1436
|
"airflow.providers.google.cloud.links.vertex_ai.VertexAIPipelineJobLink",
|
|
1497
1437
|
"airflow.providers.google.cloud.links.vertex_ai.VertexAIPipelineJobListLink",
|
|
1438
|
+
"airflow.providers.google.cloud.links.vertex_ai.VertexAIRayClusterLink",
|
|
1439
|
+
"airflow.providers.google.cloud.links.vertex_ai.VertexAIRayClusterListLink",
|
|
1498
1440
|
"airflow.providers.google.cloud.links.workflows.WorkflowsWorkflowDetailsLink",
|
|
1499
1441
|
"airflow.providers.google.cloud.links.workflows.WorkflowsListOfWorkflowsLink",
|
|
1500
1442
|
"airflow.providers.google.cloud.links.workflows.WorkflowsExecutionLink",
|
|
@@ -1525,12 +1467,6 @@ def get_provider_info():
|
|
|
1525
1467
|
"airflow.providers.google.cloud.links.cloud_build.CloudBuildListLink",
|
|
1526
1468
|
"airflow.providers.google.cloud.links.cloud_build.CloudBuildTriggersListLink",
|
|
1527
1469
|
"airflow.providers.google.cloud.links.cloud_build.CloudBuildTriggerDetailsLink",
|
|
1528
|
-
"airflow.providers.google.cloud.links.automl.AutoMLDatasetLink",
|
|
1529
|
-
"airflow.providers.google.cloud.links.automl.AutoMLDatasetListLink",
|
|
1530
|
-
"airflow.providers.google.cloud.links.automl.AutoMLModelLink",
|
|
1531
|
-
"airflow.providers.google.cloud.links.automl.AutoMLModelTrainLink",
|
|
1532
|
-
"airflow.providers.google.cloud.links.automl.AutoMLModelPredictLink",
|
|
1533
|
-
"airflow.providers.google.cloud.links.life_sciences.LifeSciencesLink",
|
|
1534
1470
|
"airflow.providers.google.cloud.links.cloud_functions.CloudFunctionsDetailsLink",
|
|
1535
1471
|
"airflow.providers.google.cloud.links.cloud_functions.CloudFunctionsListLink",
|
|
1536
1472
|
"airflow.providers.google.cloud.links.cloud_storage_transfer.CloudStorageTransferListLink",
|
|
@@ -1570,6 +1506,7 @@ def get_provider_info():
|
|
|
1570
1506
|
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaClusterLink",
|
|
1571
1507
|
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaClusterListLink",
|
|
1572
1508
|
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaTopicLink",
|
|
1509
|
+
"airflow.providers.google.cloud.links.managed_kafka.ApacheKafkaConsumerGroupLink",
|
|
1573
1510
|
],
|
|
1574
1511
|
"secrets-backends": [
|
|
1575
1512
|
"airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend"
|
|
@@ -1579,96 +1516,4 @@ def get_provider_info():
|
|
|
1579
1516
|
"airflow.providers.google.cloud.log.gcs_task_handler.GCSTaskHandler",
|
|
1580
1517
|
"airflow.providers.google.cloud.log.stackdriver_task_handler.StackdriverTaskHandler",
|
|
1581
1518
|
],
|
|
1582
|
-
"dependencies": [
|
|
1583
|
-
"apache-airflow>=2.9.0",
|
|
1584
|
-
"apache-airflow-providers-common-compat>=1.4.0",
|
|
1585
|
-
"apache-airflow-providers-common-sql>=1.20.0",
|
|
1586
|
-
"asgiref>=3.5.2",
|
|
1587
|
-
"dill>=0.2.3",
|
|
1588
|
-
"gcloud-aio-auth>=5.2.0",
|
|
1589
|
-
"gcloud-aio-bigquery>=6.1.2",
|
|
1590
|
-
"gcloud-aio-storage>=9.0.0",
|
|
1591
|
-
"gcsfs>=2023.10.0",
|
|
1592
|
-
"google-ads>=25.1.0",
|
|
1593
|
-
"google-analytics-admin>=0.9.0",
|
|
1594
|
-
"google-api-core>=2.11.0,!=2.16.0,!=2.18.0",
|
|
1595
|
-
"google-api-python-client>=2.0.2",
|
|
1596
|
-
"google-auth>=2.29.0",
|
|
1597
|
-
"google-auth-httplib2>=0.0.1",
|
|
1598
|
-
"google-cloud-aiplatform[evaluation]>=1.73.0",
|
|
1599
|
-
"google-cloud-alloydb>=0.4.0",
|
|
1600
|
-
"google-cloud-automl>=2.12.0",
|
|
1601
|
-
"google-cloud-bigquery>=3.4.0,!=3.21.*,!=3.22.0,!=3.23.*",
|
|
1602
|
-
"google-cloud-bigquery-datatransfer>=3.13.0",
|
|
1603
|
-
"google-cloud-bigtable>=2.17.0",
|
|
1604
|
-
"google-cloud-build>=3.31.0",
|
|
1605
|
-
"google-cloud-compute>=1.10.0",
|
|
1606
|
-
"google-cloud-container>=2.17.4",
|
|
1607
|
-
"google-cloud-datacatalog>=3.23.0",
|
|
1608
|
-
"google-cloud-dataflow-client>=0.8.6",
|
|
1609
|
-
"google-cloud-dataform>=0.5.0",
|
|
1610
|
-
"google-cloud-dataplex>=2.6.0",
|
|
1611
|
-
"google-cloud-dataproc>=5.12.0",
|
|
1612
|
-
"google-cloud-dataproc-metastore>=1.12.0",
|
|
1613
|
-
"google-cloud-dlp>=3.12.0",
|
|
1614
|
-
"google-cloud-kms>=2.15.0",
|
|
1615
|
-
"google-cloud-language>=2.9.0",
|
|
1616
|
-
"google-cloud-logging>=3.5.0",
|
|
1617
|
-
"google-cloud-managedkafka>=0.1.6",
|
|
1618
|
-
"google-cloud-memcache>=1.7.0",
|
|
1619
|
-
"google-cloud-monitoring>=2.18.0",
|
|
1620
|
-
"google-cloud-orchestration-airflow>=1.10.0",
|
|
1621
|
-
"google-cloud-os-login>=2.9.1",
|
|
1622
|
-
"google-cloud-pubsub>=2.19.0",
|
|
1623
|
-
"google-cloud-redis>=2.12.0",
|
|
1624
|
-
"google-cloud-secret-manager>=2.16.0",
|
|
1625
|
-
"google-cloud-spanner>=3.11.1,!=3.49.0",
|
|
1626
|
-
"google-cloud-speech>=2.18.0",
|
|
1627
|
-
"google-cloud-storage>=2.7.0",
|
|
1628
|
-
"google-cloud-storage-transfer>=1.4.1",
|
|
1629
|
-
"google-cloud-tasks>=2.13.0",
|
|
1630
|
-
"google-cloud-texttospeech>=2.14.1",
|
|
1631
|
-
"google-cloud-translate>=3.16.0",
|
|
1632
|
-
"google-cloud-videointelligence>=2.11.0",
|
|
1633
|
-
"google-cloud-vision>=3.4.0",
|
|
1634
|
-
"google-cloud-workflows>=1.10.0",
|
|
1635
|
-
"google-cloud-run>=0.10.0",
|
|
1636
|
-
"google-cloud-batch>=0.13.0",
|
|
1637
|
-
"grpcio-gcp>=0.2.2",
|
|
1638
|
-
"httpx>=0.25.0",
|
|
1639
|
-
"json-merge-patch>=0.2",
|
|
1640
|
-
"looker-sdk>=22.4.0,!=24.18.0",
|
|
1641
|
-
"pandas-gbq>=0.7.0",
|
|
1642
|
-
"pandas>=2.1.2,<2.2",
|
|
1643
|
-
"proto-plus>=1.19.6",
|
|
1644
|
-
"pyarrow>=14.0.1",
|
|
1645
|
-
"python-slugify>=7.0.0",
|
|
1646
|
-
"PyOpenSSL>=23.0.0",
|
|
1647
|
-
"sqlalchemy-bigquery>=1.2.1",
|
|
1648
|
-
"sqlalchemy-spanner>=1.6.2",
|
|
1649
|
-
"tenacity>=8.1.0",
|
|
1650
|
-
"immutabledict>=4.2.0",
|
|
1651
|
-
],
|
|
1652
|
-
"optional-dependencies": {
|
|
1653
|
-
"apache.beam": [
|
|
1654
|
-
'apache-beam[gcp]>=2.53.0; python_version < "3.12"',
|
|
1655
|
-
'apache-beam[gcp]>=2.57.0; python_version >= "3.12"',
|
|
1656
|
-
],
|
|
1657
|
-
"cncf.kubernetes": ["apache-airflow-providers-cncf-kubernetes>=10.1.0"],
|
|
1658
|
-
"leveldb": ["plyvel>=1.5.1"],
|
|
1659
|
-
"oracle": ["apache-airflow-providers-oracle>=3.1.0"],
|
|
1660
|
-
"facebook": ["apache-airflow-providers-facebook>=2.2.0"],
|
|
1661
|
-
"amazon": ["apache-airflow-providers-amazon>=2.6.0"],
|
|
1662
|
-
"apache.cassandra": ["apache-airflow-providers-apache-cassandra"],
|
|
1663
|
-
"microsoft.azure": ["apache-airflow-providers-microsoft-azure"],
|
|
1664
|
-
"microsoft.mssql": ["apache-airflow-providers-microsoft-mssql"],
|
|
1665
|
-
"mysql": ["apache-airflow-providers-mysql"],
|
|
1666
|
-
"openlineage": ["apache-airflow-providers-openlineage"],
|
|
1667
|
-
"postgres": ["apache-airflow-providers-postgres"],
|
|
1668
|
-
"presto": ["apache-airflow-providers-presto"],
|
|
1669
|
-
"salesforce": ["apache-airflow-providers-salesforce"],
|
|
1670
|
-
"sftp": ["apache-airflow-providers-sftp"],
|
|
1671
|
-
"ssh": ["apache-airflow-providers-ssh"],
|
|
1672
|
-
"trino": ["apache-airflow-providers-trino"],
|
|
1673
|
-
},
|
|
1674
1519
|
}
|
|
@@ -19,9 +19,41 @@
|
|
|
19
19
|
|
|
20
20
|
from __future__ import annotations
|
|
21
21
|
|
|
22
|
+
import logging
|
|
22
23
|
import os
|
|
24
|
+
import shlex
|
|
25
|
+
import subprocess
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
|
|
28
|
+
def _execute_in_subprocess(cmd: list[str], cwd: str | None = None, env: dict[str, str] | None = None) -> None:
|
|
29
|
+
"""
|
|
30
|
+
Execute a process and stream output to logger.
|
|
31
|
+
|
|
32
|
+
:param cmd: command and arguments to run
|
|
33
|
+
:param cwd: Current working directory passed to the Popen constructor
|
|
34
|
+
:param env: Additional environment variables to set for the subprocess.
|
|
35
|
+
"""
|
|
36
|
+
log = logging.getLogger(__name__)
|
|
37
|
+
|
|
38
|
+
log.info("Executing cmd: %s", " ".join(shlex.quote(c) for c in cmd))
|
|
39
|
+
with subprocess.Popen(
|
|
40
|
+
cmd,
|
|
41
|
+
stdout=subprocess.PIPE,
|
|
42
|
+
stderr=subprocess.STDOUT,
|
|
43
|
+
bufsize=0,
|
|
44
|
+
close_fds=True,
|
|
45
|
+
cwd=cwd,
|
|
46
|
+
env=env,
|
|
47
|
+
) as proc:
|
|
48
|
+
log.info("Output:")
|
|
49
|
+
if proc.stdout:
|
|
50
|
+
with proc.stdout:
|
|
51
|
+
for line in iter(proc.stdout.readline, b""):
|
|
52
|
+
log.info("%s", line.decode().rstrip())
|
|
53
|
+
|
|
54
|
+
exit_code = proc.wait()
|
|
55
|
+
if exit_code != 0:
|
|
56
|
+
raise subprocess.CalledProcessError(exit_code, cmd)
|
|
25
57
|
|
|
26
58
|
|
|
27
59
|
def init_module(go_module_name: str, go_module_path: str) -> None:
|
|
@@ -36,7 +68,7 @@ def init_module(go_module_name: str, go_module_path: str) -> None:
|
|
|
36
68
|
if os.path.isfile(os.path.join(go_module_path, "go.mod")):
|
|
37
69
|
return
|
|
38
70
|
go_mod_init_cmd = ["go", "mod", "init", go_module_name]
|
|
39
|
-
|
|
71
|
+
_execute_in_subprocess(go_mod_init_cmd, cwd=go_module_path)
|
|
40
72
|
|
|
41
73
|
|
|
42
74
|
def install_dependencies(go_module_path: str) -> None:
|
|
@@ -46,4 +78,4 @@ def install_dependencies(go_module_path: str) -> None:
|
|
|
46
78
|
:param go_module_path: The path to the directory containing the Go module.
|
|
47
79
|
"""
|
|
48
80
|
go_mod_tidy = ["go", "mod", "tidy"]
|
|
49
|
-
|
|
81
|
+
_execute_in_subprocess(go_mod_tidy, cwd=go_module_path)
|
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
|
|
19
19
|
from __future__ import annotations
|
|
20
20
|
|
|
21
|
+
from typing import Any
|
|
22
|
+
|
|
21
23
|
from airflow.exceptions import AirflowException, AirflowOptionalProviderFeatureException
|
|
22
|
-
from airflow.
|
|
24
|
+
from airflow.providers.common.compat.sdk import BaseHook
|
|
23
25
|
|
|
24
26
|
try:
|
|
25
27
|
import plyvel
|
|
@@ -46,6 +48,29 @@ class LevelDBHook(BaseHook):
|
|
|
46
48
|
conn_type = "leveldb"
|
|
47
49
|
hook_name = "LevelDB"
|
|
48
50
|
|
|
51
|
+
@classmethod
|
|
52
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
|
53
|
+
"""Return connection widgets to add to LevelDB connection form."""
|
|
54
|
+
from flask_babel import lazy_gettext
|
|
55
|
+
from wtforms import BooleanField
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
"create_if_missing": BooleanField(
|
|
59
|
+
lazy_gettext("Create a database if it does not exist"), default=False
|
|
60
|
+
),
|
|
61
|
+
"error_if_exists": BooleanField(
|
|
62
|
+
lazy_gettext("Raise an exception if the database already exists"), default=False
|
|
63
|
+
),
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@classmethod
|
|
67
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
|
68
|
+
"""Return custom UI field behaviour for LevelDB connection."""
|
|
69
|
+
return {
|
|
70
|
+
"hidden_fields": ["login", "password", "schema", "port"],
|
|
71
|
+
"relabeling": {},
|
|
72
|
+
}
|
|
73
|
+
|
|
49
74
|
def __init__(self, leveldb_conn_id: str = default_conn_name):
|
|
50
75
|
super().__init__()
|
|
51
76
|
self.leveldb_conn_id = leveldb_conn_id
|
|
@@ -96,18 +121,17 @@ class LevelDBHook(BaseHook):
|
|
|
96
121
|
if not value:
|
|
97
122
|
raise ValueError("Please provide `value`!")
|
|
98
123
|
return self.put(key, value)
|
|
99
|
-
|
|
124
|
+
if command == "get":
|
|
100
125
|
return self.get(key)
|
|
101
|
-
|
|
126
|
+
if command == "delete":
|
|
102
127
|
return self.delete(key)
|
|
103
|
-
|
|
128
|
+
if command == "write_batch":
|
|
104
129
|
if not keys:
|
|
105
130
|
raise ValueError("Please provide `keys`!")
|
|
106
131
|
if not values:
|
|
107
132
|
raise ValueError("Please provide `values`!")
|
|
108
133
|
return self.write_batch(keys, values)
|
|
109
|
-
|
|
110
|
-
raise LevelDBHookException("Unknown command for LevelDB hook")
|
|
134
|
+
raise LevelDBHookException("Unknown command for LevelDB hook")
|
|
111
135
|
|
|
112
136
|
def put(self, key: bytes, value: bytes):
|
|
113
137
|
"""
|
|
@@ -18,11 +18,11 @@ from __future__ import annotations
|
|
|
18
18
|
|
|
19
19
|
from typing import TYPE_CHECKING, Any
|
|
20
20
|
|
|
21
|
-
from airflow.models import BaseOperator
|
|
22
21
|
from airflow.providers.google.leveldb.hooks.leveldb import LevelDBHook
|
|
22
|
+
from airflow.providers.google.version_compat import BaseOperator
|
|
23
23
|
|
|
24
24
|
if TYPE_CHECKING:
|
|
25
|
-
from airflow.
|
|
25
|
+
from airflow.providers.common.compat.sdk import Context
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class LevelDBOperator(BaseOperator):
|
|
@@ -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,
|