This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new ee5f3798e8d Emit GCSListObjectsOperator delimiter deprecation warning 
after rendering (#70533)
ee5f3798e8d is described below

commit ee5f3798e8df366f11cb3571ba3f23b8438a92dc
Author: Yuseok Jo <[email protected]>
AuthorDate: Thu Jul 30 19:43:20 2026 +0900

    Emit GCSListObjectsOperator delimiter deprecation warning after rendering 
(#70533)
---
 .../src/airflow/providers/google/cloud/operators/gcs.py     | 13 ++++++++-----
 .../google/tests/unit/google/cloud/operators/test_gcs.py    |  4 +++-
 scripts/ci/prek/validate_operators_init_exemptions.txt      |  1 -
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git 
a/providers/google/src/airflow/providers/google/cloud/operators/gcs.py 
b/providers/google/src/airflow/providers/google/cloud/operators/gcs.py
index 056d16c6c23..b55709c309e 100644
--- a/providers/google/src/airflow/providers/google/cloud/operators/gcs.py
+++ b/providers/google/src/airflow/providers/google/cloud/operators/gcs.py
@@ -228,18 +228,21 @@ class GCSListObjectsOperator(GoogleCloudBaseOperator):
         super().__init__(**kwargs)
         self.bucket = bucket
         self.prefix = prefix
-        if delimiter:
+        self.delimiter = delimiter
+        self.gcp_conn_id = gcp_conn_id
+        self.impersonation_chain = impersonation_chain
+        self.match_glob = match_glob
+
+    def _warn_on_deprecated_template_fields(self) -> None:
+        if self.delimiter:
             warnings.warn(
                 "Usage of 'delimiter' is deprecated, please use 'match_glob' 
instead. Planned removal date: October 5, 2026.",
                 AirflowProviderDeprecationWarning,
                 stacklevel=2,
             )
-        self.delimiter = delimiter
-        self.gcp_conn_id = gcp_conn_id
-        self.impersonation_chain = impersonation_chain
-        self.match_glob = match_glob
 
     def execute(self, context: Context) -> list:
+        self._warn_on_deprecated_template_fields()
         hook = GCSHook(
             gcp_conn_id=self.gcp_conn_id,
             impersonation_chain=self.impersonation_chain,
diff --git a/providers/google/tests/unit/google/cloud/operators/test_gcs.py 
b/providers/google/tests/unit/google/cloud/operators/test_gcs.py
index f48aaddba75..664308cd291 100644
--- a/providers/google/tests/unit/google/cloud/operators/test_gcs.py
+++ b/providers/google/tests/unit/google/cloud/operators/test_gcs.py
@@ -25,6 +25,7 @@ from unittest import mock
 import pytest
 from google.cloud.exceptions import GoogleCloudError
 
+from airflow.exceptions import AirflowProviderDeprecationWarning
 from airflow.providers.common.compat.openlineage.facet import (
     Dataset,
     LifecycleStateChange,
@@ -255,7 +256,8 @@ class TestGoogleCloudStorageListOperator:
         operator = GCSListObjectsOperator(
             task_id=TASK_ID, bucket=TEST_BUCKET, prefix=PREFIX, 
delimiter=DELIMITER
         )
-        files = operator.execute(context=mock.MagicMock())
+        with pytest.warns(AirflowProviderDeprecationWarning, match="Usage of 
'delimiter' is deprecated"):
+            files = operator.execute(context=mock.MagicMock())
         mock_hook.return_value.list.assert_called_once_with(
             bucket_name=TEST_BUCKET, prefix=PREFIX, delimiter=DELIMITER, 
match_glob=None
         )
diff --git a/scripts/ci/prek/validate_operators_init_exemptions.txt 
b/scripts/ci/prek/validate_operators_init_exemptions.txt
index 4cab009b46b..345248323f5 100644
--- a/scripts/ci/prek/validate_operators_init_exemptions.txt
+++ b/scripts/ci/prek/validate_operators_init_exemptions.txt
@@ -18,7 +18,6 @@ 
providers/google/src/airflow/providers/google/cloud/operators/dataproc.py::Datap
 
providers/google/src/airflow/providers/google/cloud/operators/dataproc.py::DataprocSubmitJobOperator
 
providers/google/src/airflow/providers/google/cloud/operators/functions.py::CloudFunctionDeployFunctionOperator
 
providers/google/src/airflow/providers/google/cloud/operators/gcs.py::GCSFileTransformOperator
-providers/google/src/airflow/providers/google/cloud/operators/gcs.py::GCSListObjectsOperator
 
providers/google/src/airflow/providers/google/cloud/sensors/bigquery_dts.py::BigQueryDataTransferServiceTransferRunSensor
 
providers/google/src/airflow/providers/google/cloud/sensors/cloud_composer.py::CloudComposerExternalTaskSensor
 
providers/google/src/airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py::AzureFileShareToGCSOperator

Reply via email to