Browse Source

Try to import directly, do not use deprecated imp method (#4216)

Details are discussed in #2523 – `imp.find_module` is deprecated and
leads to issues in some places where `importlib.import_module` works
perfectly.
Tobias Kunze 7 years ago
parent
commit
3130a00ee5
3 changed files with 2 additions and 16 deletions
  1. 1 0
      CONTRIBUTORS.txt
  2. 1 9
      celery/loaders/base.py
  3. 0 7
      t/unit/app/test_loaders.py

+ 1 - 0
CONTRIBUTORS.txt

@@ -251,3 +251,4 @@ Mads Jensen, 2017/08/20
 Markus Kaiserswerth, 2017/08/30
 Andrew Wong, 2017/09/07
 Arpan Shah, 2017/09/12
+Tobias 'rixx' Kunze, 2017/08/20

+ 1 - 9
celery/loaders/base.py

@@ -2,7 +2,6 @@
 """Loader base class."""
 from __future__ import absolute_import, unicode_literals
 
-import imp as _imp
 import importlib
 import os
 import re
@@ -268,13 +267,6 @@ def find_related_module(package, related_name):
             raise
 
     try:
-        pkg_path = importlib.import_module(package).__path__
-    except AttributeError:
-        return
-
-    try:
-        _imp.find_module(related_name, pkg_path)
+        return importlib.import_module('{0}.{1}'.format(package, related_name))
     except ImportError:
         return
-
-    return importlib.import_module('{0}.{1}'.format(package, related_name))

+ 0 - 7
t/unit/app/test_loaders.py

@@ -241,12 +241,5 @@ class test_autodiscovery:
                 imp.return_value.__path__ = 'foo'
                 base.find_related_module(base, 'tasks')
 
-                def se1(val):
-                    imp.side_effect = AttributeError()
-
-                imp.side_effect = se1
-                base.find_related_module(base, 'tasks')
-                imp.side_effect = None
-
                 find.side_effect = ImportError()
                 base.find_related_module(base, 'tasks')