Use importlib.metadata instead of pkg_resources for entrypoint processing
authorKarl O. Pinc <kop@karlpinc.com>
Wed, 20 Mar 2024 19:15:43 +0000 (14:15 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Wed, 20 Mar 2024 19:15:43 +0000 (14:15 -0500)
setup.py
src/pgwui_develop/pytest_plugin_helpers.py
tests/test_pytest_plugin_helpers.py

index f54b6741bd8c31a84d27dc548c23a7bc8e3984d5..e358bf600e6e5d777fc82875efa0df640baf8c64 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -132,9 +132,11 @@ setup(
     # Run-time dependencies.
     install_requires=[
         'click',
+        # for pytest_plugin_helpers.py's entrypoint processing.
+        'importlib_metadata > 3.6 ; python_version < "3.10"',
+        # for pgwui.py's use of files() without an argument.
         'importlib_resources >= 5.10 ; python_version < "3.12"',
         'mako',
-        'setuptools',        # for pkg_resources module
         'pyramid',
         'WebTest >= 1.3.1',  # py3 compat
         'pytest>=3.7.4',
index 21a4293851207fae57f6747d88aae434630f1bf1..4ee8c1acf791eed8a64d7f209fa92c48e172b4f4 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015, 2018, 2020 The Meme Factory, Inc.
+# Copyright (C) 2015, 2018, 2020, 2024 The Meme Factory, Inc.
 # http://www.karlpinc.com/
 
 # This file is part of PGWUI_Develop.
 '''Functions used by the pytest_plugin module.
 '''
 
-import pkg_resources
+import sys
+
+if sys.version_info < (3, 10):
+    import importlib_metadata
+
+    class importlib:
+        pass
+    setattr(importlib, 'metadata', importlib_metadata)
+else:
+    import importlib.metadata
 
 
 def pgwui_entry_point(ep_name):
@@ -32,7 +41,7 @@ def pgwui_entry_point(ep_name):
     '''
     def run(module):
         return (module in
-                [entry_point.module_name for entry_point in
-                 pkg_resources.iter_entry_points(ep_name)])
+                [entry_point.name for entry_point in
+                 importlib.metadata.entry_points(group=ep_name)])
 
     return run
index a7dabfc65f12afceaf33c92e72c236d54ded7c84..b1921b8c48bb3d3121dd86f5527f28a48e62bc52 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2020, 2021 The Meme Factory, Inc.
+# Copyright (C) 2020, 2021, 2024 The Meme Factory, Inc.
 # http://www.karlpinc.com/
 
 # This file is part of PGWUI_Develop.
@@ -37,15 +37,15 @@ def test_pgwui_entry_point_there(monkeypatch):
 
     class MockEntryPoint():
         def __init__(self, module_name):
-            self.module_name = module_name
+            self.name = module_name
 
     monkeypatch.setattr(
-        pytest_plugin_helpers.pkg_resources, 'iter_entry_points',
-        lambda *args: [MockEntryPoint(test_name)])
+        pytest_plugin_helpers.importlib.metadata, 'entry_points',
+        lambda *args, **kwargs: [MockEntryPoint(test_name)])
 
-    assert (
-        pytest_plugin_helpers.pgwui_entry_point(test_name)(test_name)
-        is True)
+    result = pytest_plugin_helpers.pgwui_entry_point(test_name)(test_name)
+
+    assert result is True
 
 
 @pytest.mark.unittest
@@ -53,8 +53,9 @@ def test_pgwui_entry_point_not_there(monkeypatch):
     '''False when the component is not pgwui.components entry point
     '''
     monkeypatch.setattr(
-        pytest_plugin_helpers.pkg_resources, 'iter_entry_points',
-        lambda *args: [])
+        pytest_plugin_helpers.importlib.metadata, 'entry_points',
+        lambda *args, **kwargs: [])
+
+    result = pytest_plugin_helpers.pgwui_entry_point('foo')('foo')
 
-    assert (pytest_plugin_helpers.pgwui_entry_point('foo')('foo')
-            is False)
+    assert result is False