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

taragolis 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 f8ae8dba66 Deprecate get_hook in OSSKeySensor and use hook instead 
(#34426)
f8ae8dba66 is described below

commit f8ae8dba667997128ae66fec28e33fa5cb30997e
Author: Hussein Awala <[email protected]>
AuthorDate: Mon Sep 18 21:07:04 2023 +0200

    Deprecate get_hook in OSSKeySensor and use hook instead (#34426)
    
    * Deprecate get_hook in OSSKeySensor and use hook instead
    
    * use AirflowProviderDeprecationWarning
    
    * Fix unit tests
---
 airflow/providers/alibaba/cloud/sensors/oss_key.py    | 19 +++++++++++--------
 tests/providers/alibaba/cloud/sensors/test_oss_key.py |  8 ++++----
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/airflow/providers/alibaba/cloud/sensors/oss_key.py 
b/airflow/providers/alibaba/cloud/sensors/oss_key.py
index 3b88eb65c6..6e2b0dec4c 100644
--- a/airflow/providers/alibaba/cloud/sensors/oss_key.py
+++ b/airflow/providers/alibaba/cloud/sensors/oss_key.py
@@ -21,7 +21,9 @@ from functools import cached_property
 from typing import TYPE_CHECKING, Sequence
 from urllib.parse import urlsplit
 
-from airflow.exceptions import AirflowException, AirflowSkipException
+from deprecated.classic import deprecated
+
+from airflow.exceptions import AirflowException, 
AirflowProviderDeprecationWarning, AirflowSkipException
 from airflow.providers.alibaba.cloud.hooks.oss import OSSHook
 from airflow.sensors.base import BaseSensorOperator
 
@@ -59,7 +61,6 @@ class OSSKeySensor(BaseSensorOperator):
         self.bucket_key = bucket_key
         self.region = region
         self.oss_conn_id = oss_conn_id
-        self.hook: OSSHook | None = None
 
     def poke(self, context: Context):
         """
@@ -92,13 +93,15 @@ class OSSKeySensor(BaseSensorOperator):
                 raise AirflowException(message)
 
         self.log.info("Poking for key : oss://%s/%s", self.bucket_name, 
self.bucket_key)
-        return self.get_hook.object_exists(key=self.bucket_key, 
bucket_name=self.bucket_name)
+        return self.hook.object_exists(key=self.bucket_key, 
bucket_name=self.bucket_name)
 
-    @cached_property
+    @property
+    @deprecated(reason="use `hook` property instead.", 
category=AirflowProviderDeprecationWarning)
     def get_hook(self) -> OSSHook:
         """Create and return an OSSHook."""
-        if self.hook:
-            return self.hook
-
-        self.hook = OSSHook(oss_conn_id=self.oss_conn_id, region=self.region)
         return self.hook
+
+    @cached_property
+    def hook(self) -> OSSHook:
+        """Create and return an OSSHook."""
+        return OSSHook(oss_conn_id=self.oss_conn_id, region=self.region)
diff --git a/tests/providers/alibaba/cloud/sensors/test_oss_key.py 
b/tests/providers/alibaba/cloud/sensors/test_oss_key.py
index 388a57e50e..81dcccb4fe 100644
--- a/tests/providers/alibaba/cloud/sensors/test_oss_key.py
+++ b/tests/providers/alibaba/cloud/sensors/test_oss_key.py
@@ -50,10 +50,10 @@ def oss_key_sensor():
 class TestOSSKeySensor:
     @mock.patch(f"{MODULE_NAME}.OSSHook")
     def test_get_hook(self, mock_service, oss_key_sensor):
-        oss_key_sensor.get_hook()
+        oss_key_sensor.hook
         mock_service.assert_called_once_with(oss_conn_id=MOCK_OSS_CONN_ID, 
region=MOCK_REGION)
 
-    @mock.patch(f"{MODULE_NAME}.OSSKeySensor.get_hook", 
new_callable=PropertyMock)
+    @mock.patch(f"{MODULE_NAME}.OSSKeySensor.hook", new_callable=PropertyMock)
     def test_poke_exsiting_key(self, mock_service, oss_key_sensor):
         # Given
         mock_service.return_value.object_exists.return_value = True
@@ -65,7 +65,7 @@ class TestOSSKeySensor:
         assert res is True
         
mock_service.return_value.object_exists.assert_called_once_with(key=MOCK_KEY, 
bucket_name=MOCK_BUCKET)
 
-    @mock.patch(f"{MODULE_NAME}.OSSKeySensor.get_hook", 
new_callable=PropertyMock)
+    @mock.patch(f"{MODULE_NAME}.OSSKeySensor.hook", new_callable=PropertyMock)
     def test_poke_non_exsiting_key(self, mock_service, oss_key_sensor):
         # Given
         mock_service.return_value.object_exists.return_value = False
@@ -80,7 +80,7 @@ class TestOSSKeySensor:
     @pytest.mark.parametrize(
         "soft_fail, expected_exception", ((False, AirflowException), (True, 
AirflowSkipException))
     )
-    @mock.patch(f"{MODULE_NAME}.OSSKeySensor.get_hook", 
new_callable=PropertyMock)
+    @mock.patch(f"{MODULE_NAME}.OSSKeySensor.hook", new_callable=PropertyMock)
     def test_poke_without_bucket_name(
         self, mock_service, oss_key_sensor, soft_fail: bool, 
expected_exception: AirflowException
     ):

Reply via email to