From cf5f06f37841ef3ed1971800c5cb39de6c65cad0 Mon Sep 17 00:00:00 2001 From: micbou Date: Tue, 10 Apr 2018 19:10:05 +0200 Subject: [PATCH] Do not cache unimportable compiled module (#1079) From the issue: The issue can be reproduced by getting the description of the QtBluetooth module from PyQt5 on Windows: import jedi completions = jedi.Script('import PyQt5.QtBlueTooth').completions() completions[0].description It's hard to write a test for it so we don't write one for it. --- jedi/evaluate/imports.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/jedi/evaluate/imports.py b/jedi/evaluate/imports.py index 8c9a726a..57beef80 100644 --- a/jedi/evaluate/imports.py +++ b/jedi/evaluate/imports.py @@ -500,19 +500,21 @@ def _load_module(evaluator, path=None, code=None, sys_path=None, ) else: module = compiled.load_module(evaluator, path=path, sys_path=sys_path) - add_module(evaluator, module_name, module, safe=safe_module_name) + + if module_name is not None and module is not None: + add_module(evaluator, module_name, module, safe=safe_module_name) + return module def add_module(evaluator, module_name, module, safe=False): - if module_name is not None: - if not safe and '.' not in module_name: - # We cannot add paths with dots, because that would collide with - # the sepatator dots for nested packages. Therefore we return - # `__main__` in ModuleWrapper.py__name__(), which is similar to - # Python behavior. - return - evaluator.module_cache.add(module, module_name) + if not safe and '.' not in module_name: + # We cannot add paths with dots, because that would collide with + # the sepatator dots for nested packages. Therefore we return + # `__main__` in ModuleWrapper.py__name__(), which is similar to + # Python behavior. + return + evaluator.module_cache.add(module, module_name) def get_modules_containing_name(evaluator, modules, name):