forked from VimPlug/jedi
Implement the case where raw object is a module
Previously failing test_complete_raw_module is passed.
This commit is contained in:
48
jedi/api.py
48
jedi/api.py
@@ -533,31 +533,45 @@ class Interpreter(Script):
|
|||||||
|
|
||||||
def _import_raw_namespace(self, raw_namespace):
|
def _import_raw_namespace(self, raw_namespace):
|
||||||
for (variable, obj) in raw_namespace.items():
|
for (variable, obj) in raw_namespace.items():
|
||||||
try:
|
module = getattr(obj, '__module__', None)
|
||||||
module = obj.__module__
|
if module:
|
||||||
except AttributeError:
|
fakeimport = self._make_fakeimport(module, variable)
|
||||||
|
self._parser.scope.imports.append(fakeimport)
|
||||||
continue
|
continue
|
||||||
fakeimport = self._make_fakeimport(variable, module)
|
|
||||||
self._parser.scope.imports.append(fakeimport)
|
|
||||||
|
|
||||||
def _make_fakeimport(self, variable, module):
|
if getattr(obj, '__file__', None):
|
||||||
|
fakeimport = self._make_fakeimport(obj.__name__)
|
||||||
|
self._parser.scope.imports.append(fakeimport)
|
||||||
|
continue
|
||||||
|
|
||||||
|
def _make_fakeimport(self, module, variable=None):
|
||||||
submodule = self._parser.scope._sub_module
|
submodule = self._parser.scope._sub_module
|
||||||
varname = pr.Name(
|
if variable:
|
||||||
module=submodule,
|
varname = pr.Name(
|
||||||
names=[(variable, (0, 0))],
|
module=submodule,
|
||||||
start_pos=(0, 0),
|
names=[(variable, (0, 0))],
|
||||||
end_pos=(None, None))
|
start_pos=(0, 0),
|
||||||
|
end_pos=(None, None))
|
||||||
|
else:
|
||||||
|
varname = None
|
||||||
modname = pr.Name(
|
modname = pr.Name(
|
||||||
module=submodule,
|
module=submodule,
|
||||||
names=[(module, (0, 0))],
|
names=[(module, (0, 0))],
|
||||||
start_pos=(0, 0),
|
start_pos=(0, 0),
|
||||||
end_pos=(None, None))
|
end_pos=(None, None))
|
||||||
fakeimport = pr.Import(
|
if varname:
|
||||||
module=submodule,
|
fakeimport = pr.Import(
|
||||||
namespace=varname,
|
module=submodule,
|
||||||
from_ns=modname,
|
namespace=varname,
|
||||||
start_pos=(0, 0),
|
from_ns=modname,
|
||||||
end_pos=(None, None))
|
start_pos=(0, 0),
|
||||||
|
end_pos=(None, None))
|
||||||
|
else:
|
||||||
|
fakeimport = pr.Import(
|
||||||
|
module=submodule,
|
||||||
|
namespace=modname,
|
||||||
|
start_pos=(0, 0),
|
||||||
|
end_pos=(None, None))
|
||||||
fakeimport.parent = submodule
|
fakeimport.parent = submodule
|
||||||
return fakeimport
|
return fakeimport
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user