diff --git a/jedi/inference/imports.py b/jedi/inference/imports.py index 6cb6083e..ce45ed5b 100644 --- a/jedi/inference/imports.py +++ b/jedi/inference/imports.py @@ -61,20 +61,19 @@ def infer_import(context, tree_name): module_context = context.get_root_context() from_import_name, import_path, level, values = \ _prepare_infer_import(module_context, tree_name) - if not values: - return NO_VALUES + if values: - if from_import_name is not None: - values = values.py__getattribute__( - from_import_name, - name_context=context, - analysis_errors=False - ) + if from_import_name is not None: + values = values.py__getattribute__( + from_import_name, + name_context=context, + analysis_errors=False + ) - if not values: - path = import_path + (from_import_name,) - importer = Importer(context.inference_state, path, module_context, level) - values = importer.follow() + if not values: + path = import_path + (from_import_name,) + importer = Importer(context.inference_state, path, module_context, level) + values = importer.follow() debug.dbg('after import: %s', values) return values diff --git a/jedi/inference/sys_path.py b/jedi/inference/sys_path.py index bfc1b536..4d066611 100644 --- a/jedi/inference/sys_path.py +++ b/jedi/inference/sys_path.py @@ -3,7 +3,7 @@ import os from jedi._compatibility import unicode, force_unicode, all_suffixes from jedi.inference.cache import inference_state_method_cache from jedi.inference.base_value import ContextualizedNode -from jedi.inference.helpers import is_string +from jedi.inference.helpers import is_string, get_str_or_none from jedi.common.utils import traverse_parents from jedi.parser_utils import get_cached_code_lines from jedi.file_io import FileIO @@ -86,10 +86,12 @@ def _paths_from_list_modifications(module_context, trailer1, trailer2): arg = arg.children[2] for value in module_context.create_context(arg).infer_node(arg): - if is_string(value): - abs_path = _abs_path(module_context, value.get_safe_value()) - if abs_path is not None: - yield abs_path + p = get_str_or_none(value) + if p is None: + continue + abs_path = _abs_path(module_context, p) + if abs_path is not None: + yield abs_path @inference_state_method_cache(default=[]) diff --git a/test/completion/sys_path.py b/test/completion/sys_path.py index dd597fa4..8bcde9d2 100644 --- a/test/completion/sys_path.py +++ b/test/completion/sys_path.py @@ -1,10 +1,10 @@ import sys import os -from os import dirname +from os.path import dirname sys.path.insert(0, '../../jedi') -sys.path.append(dirname(os.path.abspath('thirdparty' + os.path.sep + 'asdf'))) +sys.path.append(os.path.join(dirname(__file__), 'thirdparty')) # modifications, that should fail: # syntax err @@ -17,8 +17,8 @@ import inference inference.inference_state_fu # Those don't work because dirname and abspath are not properly understood. -##? ['jedi_'] +#? ['jedi_'] import jedi_ -##? ['el'] +#? ['el'] jedi_.el