mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-09 23:34:45 +08:00
make first faked compiled modules work
This commit is contained in:
@@ -74,7 +74,7 @@ class PyObject(Base):
|
||||
elif t == 'def':
|
||||
for name in self._parse_function_doc()[1].split():
|
||||
try:
|
||||
yield PyObject(getattr(_builtins, name), builtin, True)
|
||||
yield create(getattr(_builtins, name), builtin, True)
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
@@ -99,7 +99,7 @@ class PyName(object):
|
||||
def parent(self):
|
||||
try:
|
||||
# this has a builtin_function_or_method
|
||||
return PyObject(getattr(self._obj.obj, self._name), self._obj)
|
||||
return create(getattr(self._obj.obj, self._name), self._obj)
|
||||
except AttributeError:
|
||||
# happens e.g. in properties of
|
||||
# PyQt4.QtGui.QStyleOptionComboBox.currentText
|
||||
|
||||
@@ -65,6 +65,8 @@ def _load_fakes(module_name):
|
||||
|
||||
def _load_module(module):
|
||||
module_name = module.__name__
|
||||
if module_name == '__builtin__' and not is_py3k:
|
||||
module_name = 'builtins'
|
||||
try:
|
||||
return modules[module_name]
|
||||
except KeyError:
|
||||
@@ -74,7 +76,7 @@ def _load_module(module):
|
||||
source = f.read()
|
||||
except IOError:
|
||||
return {}
|
||||
module = Parser(source).module
|
||||
module = Parser(source, module_name).module
|
||||
modules[module_name] = module
|
||||
return module
|
||||
|
||||
@@ -82,7 +84,7 @@ def _load_module(module):
|
||||
def get_faked(module, obj):
|
||||
def from_scope(scope, obj):
|
||||
for s in scope.subscopes:
|
||||
if s.name == obj.name:
|
||||
if str(s.name) == obj.__name__:
|
||||
return s
|
||||
|
||||
mod = _load_module(module)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from jedi._compatibility import builtins
|
||||
from jedi.parser.representation import Function
|
||||
from jedi.evaluate import compiled
|
||||
from jedi.evaluate import Evaluator
|
||||
|
||||
@@ -13,3 +14,7 @@ def test_simple():
|
||||
assert len(objs) == 1
|
||||
assert objs[0].obj is str
|
||||
assert objs[0].instantiated is True
|
||||
|
||||
|
||||
def test_fake_loading():
|
||||
assert isinstance(compiled.create(reversed), Function)
|
||||
|
||||
Reference in New Issue
Block a user