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
):