diff --git a/scrapy/addons.py b/scrapy/addons.py index 43a36e5e5..153de66d2 100644 --- a/scrapy/addons.py +++ b/scrapy/addons.py @@ -11,7 +11,7 @@ from zope.interface.verify import verifyObject from scrapy.interfaces import IAddon from scrapy.utils.conf import build_component_list -from scrapy.utils.misc import load_module_or_object +from scrapy.utils.misc import load_object @zope.interface.implementer(IAddon) @@ -252,8 +252,8 @@ class AddonManager(Mapping): """ if isinstance(path, str): try: - obj = load_module_or_object(path) - except NameError: + obj = load_object(path) + except (ValueError, NameError, ImportError): raise NameError(f"Could not find add-on '{path}'") else: obj = path diff --git a/scrapy/utils/misc.py b/scrapy/utils/misc.py index 8577cce02..d861c9ab6 100644 --- a/scrapy/utils/misc.py +++ b/scrapy/utils/misc.py @@ -72,22 +72,6 @@ def load_object(path: Union[str, Callable]) -> Any: return obj -def load_module_or_object(path): - """Load python module or (non-module) object from given path. - - Path can be both a Python or a file path. - """ - try: - return import_module(path) - except ImportError: - pass - try: - return load_object(path) - except (ValueError, NameError, ImportError): - pass - raise NameError(f"Could not load '{path}'") - - def walk_modules(path): """Loads a module and all its submodules from the given module path and returns them. If *any* module throws an exception while importing, that diff --git a/tests/test_utils_misc/__init__.py b/tests/test_utils_misc/__init__.py index 7932ca04c..4f6e0d02c 100644 --- a/tests/test_utils_misc/__init__.py +++ b/tests/test_utils_misc/__init__.py @@ -8,7 +8,6 @@ from scrapy.item import Field, Item from scrapy.utils.misc import ( arg_to_iter, create_instance, - load_module_or_object, load_object, rel_has_nofollow, set_environ, @@ -31,17 +30,17 @@ class UtilsMiscTestCase(unittest.TestCase): obj = load_object("scrapy.utils.misc.load_object") self.assertIs(obj, load_object) + def test_load_object_module(self): + testmod = load_object(__name__ + ".testmod") + self.assertTrue(hasattr(testmod, "TESTVAR")) + obj = load_object("scrapy.utils.misc.load_object") + self.assertIs(obj, load_object) + def test_load_object_exceptions(self): self.assertRaises(ImportError, load_object, "nomodule999.mod.function") self.assertRaises(NameError, load_object, "scrapy.utils.misc.load_object999") self.assertRaises(TypeError, load_object, {}) - def test_load_module_or_object(self): - testmod = load_module_or_object(__name__ + ".testmod") - self.assertTrue(hasattr(testmod, "TESTVAR")) - obj = load_object("scrapy.utils.misc.load_object") - self.assertIs(obj, load_object) - def test_walk_modules(self): mods = walk_modules("tests.test_utils_misc.test_walk_modules") expected = [