diff --git a/scrapy/addons/__init__.py b/scrapy/addons/__init__.py index 40a98676d..ddd18c7fb 100644 --- a/scrapy/addons/__init__.py +++ b/scrapy/addons/__init__.py @@ -7,11 +7,9 @@ from pkg_resources import WorkingSet, Distribution, Requirement import zope.interface from zope.interface.verify import verifyObject -from scrapy.exceptions import NotConfigured 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.project import get_project_path @zope.interface.implementer(IAddon) @@ -244,14 +242,8 @@ class AddonManager(Mapping): """Get an add-on object by its Python or file path. ``path`` is assumed to be either a Python or a file path of a Scrapy - add-on. If no object is found at ``path``, it is tried again first with - ``projectname.addons`` prepended (pointing to the current project's - ``addons`` folder), then with ``scrapy.addons`` prepended (poiting to - Scrapy's built-in add-ons). These convenience shortcuts will only work - with Python paths, not file paths. - - If the object or module pointed to by ``path`` has an attribute named - ``_addon`` that attribute will be assumed to be the add-on. + add-on. If the object or module pointed to by ``path`` has an attribute + named ``_addon`` that attribute will be assumed to be the add-on. :meth:`get_addon` will keep following ``_addon`` attributes until it finds an object that does not have an attribute named ``_addon``. @@ -259,20 +251,9 @@ class AddonManager(Mapping): :type path: ``str`` """ if isinstance(path, six.string_types): - prefixes = ['', 'scrapy.addons.'] try: - prefixes.insert(1, get_project_path() + '.addons.') - except NotConfigured: - warnings.warn("Unable to locate project Python path") - for prefix in prefixes: - fullpath = prefix + path - try: - obj = load_module_or_object(fullpath) - except NameError: - pass - else: - break - else: + obj = load_module_or_object(path) + except NameError: raise NameError("Could not find add-on '%s'" % path) else: obj = path diff --git a/tests/test_addons/__init__.py b/tests/test_addons/__init__.py index f10819685..4f1074221 100644 --- a/tests/test_addons/__init__.py +++ b/tests/test_addons/__init__.py @@ -11,7 +11,6 @@ import zope.interface from zope.interface.verify import verifyObject from zope.interface.exceptions import BrokenImplementation -import scrapy.addons from scrapy.addons import Addon, AddonManager from scrapy.crawler import Crawler from scrapy.interfaces import IAddon @@ -187,32 +186,6 @@ class AddonManagerTest(unittest.TestCase): x._addon._addon = addons.GoodAddon('inner') self.assertIs(self.manager.get_addon(x), x._addon._addon) - @mock.patch.object(scrapy.addons, 'get_project_path', - return_value='tests.test_addons.project') - def test_get_addon_prefixes(self, get_project_path_mock): - # From python path - self.assertEqual(self.manager.get_addon('addonmod').FROM, - 'test_addons.addonmod') - - # From project 'addons' folder - self.assertEqual(self.manager.get_addon('addonmod2').FROM, - 'test_addons.project.addons.addonmod2') - # Assert prefix priority '' > 'project.addons' - self.assertEqual(self.manager.get_addon('addonmod').FROM, - 'test_addons.addonmod') - - # From scrapy's 'addons' - from . import scrapy_addons - with mock.patch.dict('sys.modules', {'scrapy.addons': scrapy_addons}): - self.assertEqual(self.manager.get_addon('addonmod3').FROM, - 'test_addons.scrapy_addons.addonmod3') - # Assert prefix priority 'project.addons' > 'scrapy.addons' - self.assertEqual(self.manager.get_addon('addonmod2').FROM, - 'test_addons.project.addons.addonmod2') - # Assert prefix priority '' > 'scrapy.addons.' - self.assertEqual(self.manager.get_addon('addonmod').FROM, - 'test_addons.addonmod') - def test_load_dict_load_settings(self): def _test_load_method(func, *args, **kwargs): manager = AddonManager() diff --git a/tests/test_addons/project/__init__.py b/tests/test_addons/project/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/test_addons/project/addons/__init__.py b/tests/test_addons/project/addons/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/test_addons/project/addons/addonmod.py b/tests/test_addons/project/addons/addonmod.py deleted file mode 100644 index 66ca644f8..000000000 --- a/tests/test_addons/project/addons/addonmod.py +++ /dev/null @@ -1,7 +0,0 @@ -import zope.interface - -from scrapy.interfaces import IAddon - -zope.interface.moduleProvides(IAddon) - -FROM = 'test_addons.project.addons.addonmod' diff --git a/tests/test_addons/project/addons/addonmod2.py b/tests/test_addons/project/addons/addonmod2.py deleted file mode 100644 index 0dbdd70ff..000000000 --- a/tests/test_addons/project/addons/addonmod2.py +++ /dev/null @@ -1,7 +0,0 @@ -import zope.interface - -from scrapy.interfaces import IAddon - -zope.interface.moduleProvides(IAddon) - -FROM = 'test_addons.project.addons.addonmod2' diff --git a/tests/test_addons/scrapy_addons/__init__.py b/tests/test_addons/scrapy_addons/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/test_addons/scrapy_addons/addonmod.py b/tests/test_addons/scrapy_addons/addonmod.py deleted file mode 100644 index fa479aa68..000000000 --- a/tests/test_addons/scrapy_addons/addonmod.py +++ /dev/null @@ -1,7 +0,0 @@ -import zope.interface - -from scrapy.interfaces import IAddon - -zope.interface.moduleProvides(IAddon) - -FROM = 'test_addons.scrapy_addons.addonmod' diff --git a/tests/test_addons/scrapy_addons/addonmod2.py b/tests/test_addons/scrapy_addons/addonmod2.py deleted file mode 100644 index da053af4a..000000000 --- a/tests/test_addons/scrapy_addons/addonmod2.py +++ /dev/null @@ -1,7 +0,0 @@ -import zope.interface - -from scrapy.interfaces import IAddon - -zope.interface.moduleProvides(IAddon) - -FROM = 'test_addons.scrapy_addons.addonmod2' diff --git a/tests/test_addons/scrapy_addons/addonmod3.py b/tests/test_addons/scrapy_addons/addonmod3.py deleted file mode 100644 index c64521478..000000000 --- a/tests/test_addons/scrapy_addons/addonmod3.py +++ /dev/null @@ -1,7 +0,0 @@ -import zope.interface - -from scrapy.interfaces import IAddon - -zope.interface.moduleProvides(IAddon) - -FROM = 'test_addons.scrapy_addons.addonmod3'