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