Loading django/utils/module_loading.py +8 −2 Original line number Diff line number Diff line Loading @@ -11,10 +11,16 @@ def module_has_submodule(package, module_name): return sys.modules[name] is not None except KeyError: pass try: package_path = package.__path__ # No __path__, then not a package. except AttributeError: # Since the remainder of this function assumes that we're dealing with # a package (module with a __path__), so if it's not, then bail here. return False for finder in sys.meta_path: if finder.find_module(name, package.__path__): if finder.find_module(name, package_path): return True for entry in package.__path__: # No __path__, then not a package. for entry in package_path: try: # Try the cached finder. finder = sys.path_importer_cache[entry] Loading tests/regressiontests/utils/module_loading.py +7 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ class DefaultLoader(unittest.TestCase): def test_loader(self): "Normal module existence can be tested" test_module = import_module('regressiontests.utils.test_module') test_no_submodule = import_module( 'regressiontests.utils.test_no_submodule') # An importable child self.assertTrue(module_has_submodule(test_module, 'good_module')) Loading @@ -40,6 +42,11 @@ class DefaultLoader(unittest.TestCase): import types # causes attempted import of regressiontests.utils.types self.assertFalse(module_has_submodule(sys.modules['regressiontests.utils'], 'types')) # A module which doesn't have a __path__ (so no submodules) self.assertFalse(module_has_submodule(test_no_submodule, 'anything')) self.assertRaises(ImportError, import_module, 'regressiontests.utils.test_no_submodule.anything') class EggLoader(unittest.TestCase): def setUp(self): self.old_path = sys.path[:] Loading tests/regressiontests/utils/test_no_submodule.py 0 → 100644 +1 −0 Original line number Diff line number Diff line # Used to test for modules which don't have submodules. Loading
django/utils/module_loading.py +8 −2 Original line number Diff line number Diff line Loading @@ -11,10 +11,16 @@ def module_has_submodule(package, module_name): return sys.modules[name] is not None except KeyError: pass try: package_path = package.__path__ # No __path__, then not a package. except AttributeError: # Since the remainder of this function assumes that we're dealing with # a package (module with a __path__), so if it's not, then bail here. return False for finder in sys.meta_path: if finder.find_module(name, package.__path__): if finder.find_module(name, package_path): return True for entry in package.__path__: # No __path__, then not a package. for entry in package_path: try: # Try the cached finder. finder = sys.path_importer_cache[entry] Loading
tests/regressiontests/utils/module_loading.py +7 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ class DefaultLoader(unittest.TestCase): def test_loader(self): "Normal module existence can be tested" test_module = import_module('regressiontests.utils.test_module') test_no_submodule = import_module( 'regressiontests.utils.test_no_submodule') # An importable child self.assertTrue(module_has_submodule(test_module, 'good_module')) Loading @@ -40,6 +42,11 @@ class DefaultLoader(unittest.TestCase): import types # causes attempted import of regressiontests.utils.types self.assertFalse(module_has_submodule(sys.modules['regressiontests.utils'], 'types')) # A module which doesn't have a __path__ (so no submodules) self.assertFalse(module_has_submodule(test_no_submodule, 'anything')) self.assertRaises(ImportError, import_module, 'regressiontests.utils.test_no_submodule.anything') class EggLoader(unittest.TestCase): def setUp(self): self.old_path = sys.path[:] Loading
tests/regressiontests/utils/test_no_submodule.py 0 → 100644 +1 −0 Original line number Diff line number Diff line # Used to test for modules which don't have submodules.