From 4b6f199cc6a1cf9d29082563391a4182ddf3fc4f Mon Sep 17 00:00:00 2001 From: Rishav Kumar Date: Thu, 21 Nov 2024 16:05:32 +0530 Subject: [PATCH 1/4] fix: importlib-metadata --- zulip_bots/zulip_bots/finder.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/zulip_bots/zulip_bots/finder.py b/zulip_bots/zulip_bots/finder.py index 8fbcc495c..fb5c80f6e 100644 --- a/zulip_bots/zulip_bots/finder.py +++ b/zulip_bots/zulip_bots/finder.py @@ -2,13 +2,17 @@ import importlib.abc import importlib.util import os +import sys from pathlib import Path from types import ModuleType from typing import Any, Optional, Tuple current_dir = os.path.dirname(os.path.abspath(__file__)) -import importlib_metadata as metadata +if sys.version_info >= (3, 10): + from importlib.metadata import metadata # Python 3.10+ standard library +else: + from importlib_metadata import metadata # External package for Python < 3.10 def import_module_from_source(path: str, name: str) -> Any: From c53a83ea74dcd2bf1b2c9404c782afdf9b788090 Mon Sep 17 00:00:00 2001 From: Rishav Kumar Date: Thu, 21 Nov 2024 16:05:58 +0530 Subject: [PATCH 2/4] feat: add UT --- zulip_bots/zulip_bots/tests/test_finder.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/zulip_bots/zulip_bots/tests/test_finder.py b/zulip_bots/zulip_bots/tests/test_finder.py index 6d4551bf3..9eb1391b0 100644 --- a/zulip_bots/zulip_bots/tests/test_finder.py +++ b/zulip_bots/zulip_bots/tests/test_finder.py @@ -1,6 +1,7 @@ +import pytest from pathlib import Path from unittest import TestCase - +from unittest.mock import patch from zulip_bots import finder @@ -12,3 +13,20 @@ def test_resolve_bot_path(self) -> None: expected_bot_path_and_name = (expected_bot_path, expected_bot_name) actual_bot_path_and_name = finder.resolve_bot_path("helloworld") self.assertEqual(expected_bot_path_and_name, actual_bot_path_and_name) + + + def test_import_metadata_standard(self) -> None: + # Simulate Python 3.10 or above by mocking importlib.metadata + with patch("importlib.metadata.metadata", return_value="mocked_metadata") as mock_metadata: + try: + from importlib.metadata import metadata + result = "Using standard library importlib.metadata" + except ImportError: + from importlib_metadata import metadata + result = "Using external importlib_metadata" + + # Assert that the correct import was chosen + self.assertEqual(result, "Using standard library importlib.metadata") + self.assertEqual(metadata("some_package"), "mocked_metadata") + mock_metadata.assert_called_once_with("some_package") + \ No newline at end of file From a186f246bcd42fb8bd80bf964bf1932592d9c1e0 Mon Sep 17 00:00:00 2001 From: Rishav Kumar Date: Thu, 21 Nov 2024 16:40:50 +0530 Subject: [PATCH 3/4] fix: whitespace --- zulip_bots/zulip_bots/tests/test_finder.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/zulip_bots/zulip_bots/tests/test_finder.py b/zulip_bots/zulip_bots/tests/test_finder.py index 9eb1391b0..1bda6e4ef 100644 --- a/zulip_bots/zulip_bots/tests/test_finder.py +++ b/zulip_bots/zulip_bots/tests/test_finder.py @@ -28,5 +28,4 @@ def test_import_metadata_standard(self) -> None: # Assert that the correct import was chosen self.assertEqual(result, "Using standard library importlib.metadata") self.assertEqual(metadata("some_package"), "mocked_metadata") - mock_metadata.assert_called_once_with("some_package") - \ No newline at end of file + mock_metadata.assert_called_once_with("some_package") \ No newline at end of file From 1648cfd4a6695d53efa464f4a22edfbe49aa6e30 Mon Sep 17 00:00:00 2001 From: Rishav Kumar Date: Thu, 21 Nov 2024 19:35:54 +0530 Subject: [PATCH 4/4] remove UT --- zulip_bots/zulip_bots/tests/test_finder.py | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/zulip_bots/zulip_bots/tests/test_finder.py b/zulip_bots/zulip_bots/tests/test_finder.py index 1bda6e4ef..7519c3154 100644 --- a/zulip_bots/zulip_bots/tests/test_finder.py +++ b/zulip_bots/zulip_bots/tests/test_finder.py @@ -12,20 +12,4 @@ def test_resolve_bot_path(self) -> None: expected_bot_name = "helloworld" expected_bot_path_and_name = (expected_bot_path, expected_bot_name) actual_bot_path_and_name = finder.resolve_bot_path("helloworld") - self.assertEqual(expected_bot_path_and_name, actual_bot_path_and_name) - - - def test_import_metadata_standard(self) -> None: - # Simulate Python 3.10 or above by mocking importlib.metadata - with patch("importlib.metadata.metadata", return_value="mocked_metadata") as mock_metadata: - try: - from importlib.metadata import metadata - result = "Using standard library importlib.metadata" - except ImportError: - from importlib_metadata import metadata - result = "Using external importlib_metadata" - - # Assert that the correct import was chosen - self.assertEqual(result, "Using standard library importlib.metadata") - self.assertEqual(metadata("some_package"), "mocked_metadata") - mock_metadata.assert_called_once_with("some_package") \ No newline at end of file + self.assertEqual(expected_bot_path_and_name, actual_bot_path_and_name) \ No newline at end of file