mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 14:04:26 +08:00
Different _load_module API
This commit is contained in:
@@ -145,9 +145,9 @@ class Script(object):
|
|||||||
def _get_module(self):
|
def _get_module(self):
|
||||||
name = '__main__'
|
name = '__main__'
|
||||||
if self.path is not None:
|
if self.path is not None:
|
||||||
n = dotted_path_in_sys_path(self._evaluator.get_sys_path(), self.path)
|
import_names = dotted_path_in_sys_path(self._evaluator.get_sys_path(), self.path)
|
||||||
if n is not None:
|
if import_names is not None:
|
||||||
name = n
|
name = '.'.join(import_names)
|
||||||
|
|
||||||
module = ModuleContext(
|
module = ModuleContext(
|
||||||
self._evaluator, self._module_node, self.path,
|
self._evaluator, self._module_node, self.path,
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ class Importer(object):
|
|||||||
|
|
||||||
module = _load_module(
|
module = _load_module(
|
||||||
self._evaluator, module_path, code, sys_path,
|
self._evaluator, module_path, code, sys_path,
|
||||||
module_name=module_name,
|
import_names=import_parts,
|
||||||
safe_module_name=True,
|
safe_module_name=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -473,9 +473,13 @@ class Importer(object):
|
|||||||
|
|
||||||
|
|
||||||
def _load_module(evaluator, path=None, code=None, sys_path=None,
|
def _load_module(evaluator, path=None, code=None, sys_path=None,
|
||||||
module_name=None, safe_module_name=False, auto_import=False):
|
import_names=None, safe_module_name=False, auto_import=False):
|
||||||
|
if import_names is None:
|
||||||
|
dotted_name = None
|
||||||
|
else:
|
||||||
|
dotted_name = '.'.join(import_names)
|
||||||
try:
|
try:
|
||||||
return evaluator.module_cache.get(module_name)
|
return evaluator.module_cache.get(dotted_name)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
@@ -508,10 +512,11 @@ def _load_module(evaluator, path=None, code=None, sys_path=None,
|
|||||||
code_lines=get_cached_code_lines(evaluator.grammar, path),
|
code_lines=get_cached_code_lines(evaluator.grammar, path),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
module = compiled.load_module(evaluator, dotted_name=module_name, sys_path=sys_path)
|
assert dotted_name is not None
|
||||||
|
module = compiled.load_module(evaluator, dotted_name=dotted_name, sys_path=sys_path)
|
||||||
|
|
||||||
if module is not None and module_name is not None:
|
if module is not None and dotted_name is not None:
|
||||||
add_module_to_cache(evaluator, module_name, module, safe=safe_module_name)
|
add_module_to_cache(evaluator, dotted_name, module, safe=safe_module_name)
|
||||||
|
|
||||||
return module
|
return module
|
||||||
|
|
||||||
@@ -550,11 +555,11 @@ def get_modules_containing_name(evaluator, modules, name):
|
|||||||
code = python_bytes_to_unicode(f.read(), errors='replace')
|
code = python_bytes_to_unicode(f.read(), errors='replace')
|
||||||
if name in code:
|
if name in code:
|
||||||
e_sys_path = evaluator.get_sys_path()
|
e_sys_path = evaluator.get_sys_path()
|
||||||
module_name = sys_path.dotted_path_in_sys_path(e_sys_path, path)
|
import_names = sys_path.dotted_path_in_sys_path(e_sys_path, path)
|
||||||
module = _load_module(
|
module = _load_module(
|
||||||
evaluator, path, code,
|
evaluator, path, code,
|
||||||
sys_path=e_sys_path,
|
sys_path=e_sys_path,
|
||||||
module_name=module_name
|
import_names=import_names,
|
||||||
)
|
)
|
||||||
return module
|
return module
|
||||||
|
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ def _get_buildout_script_paths(search_path):
|
|||||||
|
|
||||||
def dotted_path_in_sys_path(sys_path, module_path):
|
def dotted_path_in_sys_path(sys_path, module_path):
|
||||||
"""
|
"""
|
||||||
Returns the dotted path inside a sys.path.
|
Returns the dotted path inside a sys.path as a list of names.
|
||||||
"""
|
"""
|
||||||
# First remove the suffix.
|
# First remove the suffix.
|
||||||
for suffix in all_suffixes():
|
for suffix in all_suffixes():
|
||||||
@@ -221,6 +221,6 @@ def dotted_path_in_sys_path(sys_path, module_path):
|
|||||||
for string in split:
|
for string in split:
|
||||||
if not string or '.' in string:
|
if not string or '.' in string:
|
||||||
return None
|
return None
|
||||||
return '.'.join(split)
|
return split
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user