commit:     d3c5b1b41c59423c54be8d7d167fd6229c5f692f
Author:     Brian Harring <ferringb <AT> gmail <DOT> com>
AuthorDate: Sun Nov 30 20:59:15 2025 +0000
Commit:     Brian Harring <ferringb <AT> gmail <DOT> com>
CommitDate: Sun Nov 30 21:25:18 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/pkgcore/snakeoil.git/commit/?id=d3c5b1b4

chore: deprecate and partially delete .modules

Signed-off-by: Brian Harring <ferringb <AT> gmail.com>

 src/snakeoil/modules.py | 42 +++++++++++-------------------------------
 tests/test_modules.py   | 33 ++++++---------------------------
 2 files changed, 17 insertions(+), 58 deletions(-)

diff --git a/src/snakeoil/modules.py b/src/snakeoil/modules.py
index ec69701..d01cd09 100644
--- a/src/snakeoil/modules.py
+++ b/src/snakeoil/modules.py
@@ -2,12 +2,11 @@
 dynamic import functionality
 """
 
-__all__ = ("FailedImport", "load_module", "load_attribute", "load_any")
+__all__ = ("FailedImport", "load_attribute", "load_any")
 
-import sys
 from importlib import import_module
 
-from .compatibility import IGNORED_EXCEPTIONS
+from snakeoil.deprecation import deprecated
 
 
 class FailedImport(ImportError):
@@ -20,31 +19,14 @@ class FailedImport(ImportError):
         self.trg, self.e = trg, e
 
 
-def load_module(name):
-    """load a module
-
-    Deprecated, use ``importlib.import_module`` instead.
-
-    :param name: python dotted namespace path of the module to import
-    :raise: FailedImport if importing fails
-    :return: imported module
-    """
-    if name in sys.modules:
-        return sys.modules[name]
-    try:
-        return import_module(name)
-    except IGNORED_EXCEPTIONS:
-        raise
-    except Exception as exc:
-        raise FailedImport(name, exc) from exc
-
-
+@deprecated(
+    "snakeoil.modules.load_attribute is deprecated.  Use 
importlib.import_module's package argument"
+)
 def load_attribute(name):
     """load an attribute from a module
 
     :param name: python dotted namespace path of the attribute to load from a
-        module for example, ``snakeoil.modules.load_module`` would return
-        :py:func:`load_module`
+        module for example.
     :raise: FailedImport if importing fails, or the requested attribute cannot
         be found
     :return: attribute resolved from `name`
@@ -63,15 +45,13 @@ def load_attribute(name):
         raise FailedImport(name, exc) from exc
 
 
+@deprecated(
+    "snakeoil.modules.load_any is deprecated.  Use importlib.import_module's 
package argument"
+)
 def load_any(name):
-    """load an attribute or a module from a namespace
+    """
+    load an attribute or a module from a namespace
 
-    :param name: python dotted namespace path of the object to load from a
-        module for example, ``snakeoil.modules.load_module`` would return
-        :py:func:`load_module`, and ``snakeoil.modules`` would return `modules`
-    :raise: FailedImport if importing fails, or the requested attribute cannot
-        be found
-    :return: object resolved from `name`
     """
 
     try:

diff --git a/tests/test_modules.py b/tests/test_modules.py
index da20f4f..775e078 100644
--- a/tests/test_modules.py
+++ b/tests/test_modules.py
@@ -1,7 +1,9 @@
 import sys
 
 import pytest
+
 from snakeoil import modules
+from snakeoil.deprecation import suppress_deprecations
 
 
 class TestModules:
@@ -32,32 +34,7 @@ class TestModules:
         sys.modules.pop("mod_horked", None)
         sys.modules.pop("mod_testpack.mod_horked", None)
 
-    def test_load_module(self):
-        # import an already-imported module
-        assert modules.load_module("snakeoil.modules") is modules
-        # and a system one, just for kicks
-        assert modules.load_module("sys") is sys
-        # non-existing module from an existing package
-        with pytest.raises(modules.FailedImport):
-            modules.load_module("snakeoil.__not_there")
-        # (hopefully :) non-existing top-level module/package
-        with pytest.raises(modules.FailedImport):
-            modules.load_module("__not_there")
-
-        # "Unable to import"
-        # pylint: disable=F0401
-
-        # unimported toplevel module
-        modtest1 = modules.load_module("mod_test1")
-        import mod_test1
-
-        assert mod_test1 is modtest1
-        # unimported in-package module
-        packtest2 = modules.load_module("mod_testpack.mod_test2")
-        from mod_testpack import mod_test2
-
-        assert mod_test2 is packtest2
-
+    @suppress_deprecations
     def test_load_attribute(self):
         # already imported
         assert modules.load_attribute("sys.path") is sys.path
@@ -83,6 +60,7 @@ class TestModules:
         with pytest.raises(modules.FailedImport):
             modules.load_attribute("mod_testpack.mod_test3")
 
+    @suppress_deprecations
     def test_load_any(self):
         # import an already-imported module
         assert modules.load_any("snakeoil.modules") is modules
@@ -111,8 +89,9 @@ class TestModules:
         with pytest.raises(modules.FailedImport):
             modules.load_any("mod_testpack.mod_test3")
 
+    @suppress_deprecations
     def test_broken_module(self):
-        for func in [modules.load_module, modules.load_any]:
+        for func in [modules.load_any]:
             with pytest.raises(modules.FailedImport):
                 func("mod_testpack.mod_horked")
             assert "mod_testpack.mod_horked" not in sys.modules

Reply via email to