summaryrefslogtreecommitdiff
path: root/django/utils/module_loading.py
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2011-01-30 13:10:47 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2011-01-30 13:10:47 +0000
commit56ebab9d8596f63db38053816ec961656e49ed38 (patch)
tree651e01d1b8f3e80defbe3c4101de67b44f8fea1d /django/utils/module_loading.py
parent4392c8e67ed6009602ff72af0a786c1053d55302 (diff)
downloaddjango-56ebab9d8596f63db38053816ec961656e49ed38.tar.gz
Fixed #14698 -- Ensure that module_has_sumodule doesn't mistake a cache miss for an existent package. Thanks to Ɓukasz Rekucki for the report and patch, and to shields for the test case.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15362 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/utils/module_loading.py')
-rw-r--r--django/utils/module_loading.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/django/utils/module_loading.py b/django/utils/module_loading.py
index f251035387..32ca69a9fd 100644
--- a/django/utils/module_loading.py
+++ b/django/utils/module_loading.py
@@ -6,8 +6,11 @@ import sys
def module_has_submodule(package, module_name):
"""See if 'module' is in 'package'."""
name = ".".join([package.__name__, module_name])
- if name in sys.modules:
- return True
+ try:
+ # None indicates a cached miss; see mark_miss() in Python/import.c.
+ return sys.modules[name] is not None
+ except KeyError:
+ pass
for finder in sys.meta_path:
if finder.find_module(name):
return True