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 c649962b217fd..293156537f168 100644 --- a/providers/google/src/airflow/providers/google/cloud/operators/gcs.py +++ b/providers/google/src/airflow/providers/google/cloud/operators/gcs.py @@ -229,18 +229,21 @@ def __init__( 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 f48aaddba7566..664308cd29188 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 @@ 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 @@ def test_execute__delimiter(self, mock_hook): 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 86ae9cd475947..96c7eb9589b5d 100644 --- a/scripts/ci/prek/validate_operators_init_exemptions.txt +++ b/scripts/ci/prek/validate_operators_init_exemptions.txt @@ -25,7 +25,6 @@ providers/google/src/airflow/providers/google/cloud/operators/dataproc.py::Datap providers/google/src/airflow/providers/google/cloud/operators/functions.py::CloudFunctionDeployFunctionOperator providers/google/src/airflow/providers/google/cloud/operators/gcs.py::GCSDeleteObjectsOperator 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