From 206bfa20fb48b03faac7bc83999b5063d468b7f2 Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Thu, 13 Mar 2025 11:37:04 -0400 Subject: [PATCH 1/2] feat: WebClient expose logger property --- slack_sdk/web/async_base_client.py | 11 +++++++++++ slack_sdk/web/base_client.py | 11 +++++++++++ .../test_web_client_issue_921_custom_logger.py | 17 +++++++++++++++++ .../test_web_client_issue_921_custom_logger.py | 17 +++++++++++++++++ 4 files changed, 56 insertions(+) diff --git a/slack_sdk/web/async_base_client.py b/slack_sdk/web/async_base_client.py index 22f93f518..ebb0eb3d0 100644 --- a/slack_sdk/web/async_base_client.py +++ b/slack_sdk/web/async_base_client.py @@ -88,6 +88,17 @@ def __init__( if env_variable is not None: self.proxy = env_variable + # ------------------------- + # accessors + + @property + def logger(self) -> logging.Logger: + """The logger this client uses.""" + return self._logger + + # ------------------------- + # api call + async def api_call( self, api_method: str, diff --git a/slack_sdk/web/base_client.py b/slack_sdk/web/base_client.py index f3c8f936c..6c3714a45 100644 --- a/slack_sdk/web/base_client.py +++ b/slack_sdk/web/base_client.py @@ -92,6 +92,17 @@ def __init__( if env_variable is not None: self.proxy = env_variable + # ------------------------- + # accessors + + @property + def logger(self) -> logging.Logger: + """The logger this client uses.""" + return self._logger + + # ------------------------- + # api call + def api_call( self, api_method: str, diff --git a/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py b/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py index bcaf13316..bbf3ccafa 100644 --- a/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py +++ b/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py @@ -23,6 +23,23 @@ def test_if_it_uses_custom_logger(self): client.chat_postMessage(channel="C111", text="hello") self.assertTrue(logger.called) + def test_if_property_returns_custom_logger(self): + logger = CustomLogger("test-logger") + client = WebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + logger=logger, + ) + self.assertEqual(client.logger, logger) + + def test_logger_property_has_no_setter(self): + client = WebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + ) + with self.assertRaises(AttributeError): + client.logger = CustomLogger("test-logger") + class CustomLogger(Logger): called: bool diff --git a/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py b/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py index 9239206cf..ee31f7173 100644 --- a/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py +++ b/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py @@ -25,6 +25,23 @@ async def test_if_it_uses_custom_logger(self): await client.chat_postMessage(channel="C111", text="hello") self.assertTrue(logger.called) + def test_if_property_returns_custom_logger(self): + logger = CustomLogger("test-logger") + client = AsyncWebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + logger=logger, + ) + self.assertEqual(client.logger, logger) + + def test_logger_property_has_no_setter(self): + client = AsyncWebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + ) + with self.assertRaises(AttributeError): + client.logger = CustomLogger("test-logger") + class CustomLogger(Logger): called: bool From cdad3b4d9d1a8ab9571e1de9a0ba8c11095e529a Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Fri, 14 Mar 2025 11:50:35 -0400 Subject: [PATCH 2/2] Add tests and move them to new files --- ...test_web_client_issue_921_custom_logger.py | 17 --------- tests/slack_sdk/web/test_web_client_logger.py | 38 +++++++++++++++++++ .../web/test_async_web_client_logger.py | 38 +++++++++++++++++++ ...test_web_client_issue_921_custom_logger.py | 17 --------- 4 files changed, 76 insertions(+), 34 deletions(-) create mode 100644 tests/slack_sdk/web/test_web_client_logger.py create mode 100644 tests/slack_sdk_async/web/test_async_web_client_logger.py diff --git a/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py b/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py index bbf3ccafa..bcaf13316 100644 --- a/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py +++ b/tests/slack_sdk/web/test_web_client_issue_921_custom_logger.py @@ -23,23 +23,6 @@ def test_if_it_uses_custom_logger(self): client.chat_postMessage(channel="C111", text="hello") self.assertTrue(logger.called) - def test_if_property_returns_custom_logger(self): - logger = CustomLogger("test-logger") - client = WebClient( - base_url="http://localhost:8888", - token="xoxb-api_test", - logger=logger, - ) - self.assertEqual(client.logger, logger) - - def test_logger_property_has_no_setter(self): - client = WebClient( - base_url="http://localhost:8888", - token="xoxb-api_test", - ) - with self.assertRaises(AttributeError): - client.logger = CustomLogger("test-logger") - class CustomLogger(Logger): called: bool diff --git a/tests/slack_sdk/web/test_web_client_logger.py b/tests/slack_sdk/web/test_web_client_logger.py new file mode 100644 index 000000000..3a6e03398 --- /dev/null +++ b/tests/slack_sdk/web/test_web_client_logger.py @@ -0,0 +1,38 @@ +import logging +import unittest + +from slack_sdk import WebClient +from slack_sdk.web import base_client +from tests.slack_sdk.web.mock_web_api_handler import MockHandler +from tests.mock_web_api_server import setup_mock_web_api_server, cleanup_mock_web_api_server + + +class TestWebClientLogger(unittest.TestCase): + test_logger: logging.Logger + + def setUp(self): + self.test_logger = logging.Logger("test-logger") + setup_mock_web_api_server(self, MockHandler) + + def tearDown(self): + cleanup_mock_web_api_server(self) + + def test_logger_property_returns_default_logger(self): + client = WebClient(base_url="http://localhost:8888", token="xoxb-api_test") + self.assertEqual(client.logger.name, base_client.__name__) + + def test_logger_property_returns_custom_logger(self): + client = WebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + logger=self.test_logger, + ) + self.assertEqual(client.logger, self.test_logger) + + def test_logger_property_has_no_setter(self): + client = WebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + ) + with self.assertRaises(AttributeError): + client.logger = self.test_logger diff --git a/tests/slack_sdk_async/web/test_async_web_client_logger.py b/tests/slack_sdk_async/web/test_async_web_client_logger.py new file mode 100644 index 000000000..c1b7c064b --- /dev/null +++ b/tests/slack_sdk_async/web/test_async_web_client_logger.py @@ -0,0 +1,38 @@ +import logging +import unittest + +from slack_sdk.web.async_client import AsyncWebClient +from slack_sdk.web import async_base_client +from tests.slack_sdk.web.mock_web_api_handler import MockHandler +from tests.mock_web_api_server import setup_mock_web_api_server_async, cleanup_mock_web_api_server_async + + +class TestAsyncWebClientLogger(unittest.TestCase): + test_logger: logging.Logger + + def setUp(self): + self.test_logger = logging.Logger("test-logger") + setup_mock_web_api_server_async(self, MockHandler) + + def tearDown(self): + cleanup_mock_web_api_server_async(self) + + def test_logger_property_returns_default_logger(self): + client = AsyncWebClient(base_url="http://localhost:8888", token="xoxb-api_test") + self.assertEqual(client.logger.name, async_base_client.__name__) + + def test_logger_property_returns_custom_logger(self): + client = AsyncWebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + logger=self.test_logger, + ) + self.assertEqual(client.logger, self.test_logger) + + def test_logger_property_has_no_setter(self): + client = AsyncWebClient( + base_url="http://localhost:8888", + token="xoxb-api_test", + ) + with self.assertRaises(AttributeError): + client.logger = self.test_logger diff --git a/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py b/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py index ee31f7173..9239206cf 100644 --- a/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py +++ b/tests/slack_sdk_async/web/test_web_client_issue_921_custom_logger.py @@ -25,23 +25,6 @@ async def test_if_it_uses_custom_logger(self): await client.chat_postMessage(channel="C111", text="hello") self.assertTrue(logger.called) - def test_if_property_returns_custom_logger(self): - logger = CustomLogger("test-logger") - client = AsyncWebClient( - base_url="http://localhost:8888", - token="xoxb-api_test", - logger=logger, - ) - self.assertEqual(client.logger, logger) - - def test_logger_property_has_no_setter(self): - client = AsyncWebClient( - base_url="http://localhost:8888", - token="xoxb-api_test", - ) - with self.assertRaises(AttributeError): - client.logger = CustomLogger("test-logger") - class CustomLogger(Logger): called: bool