forked from VimPlug/jedi
in the process...
This commit is contained in:
@@ -411,6 +411,7 @@ class Evaluator(object):
|
||||
debug.warning("no __call__ func available", obj)
|
||||
else:
|
||||
debug.warning("no execution possible", obj)
|
||||
raise NotImplementedError()
|
||||
else:
|
||||
stmts = er.FunctionExecution(self, obj, params).get_return_types(evaluate_generator)
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class PyObject(Base):
|
||||
|
||||
def get_parent_until(self, *args, **kwargs):
|
||||
# compiled modules only use functions and classes/methods (2 levels)
|
||||
return getattr(self.parent, 'parent', self.parent) or self
|
||||
return getattr(self.parent, 'parent', self.parent) or self.parent or self
|
||||
|
||||
@underscore_memoization
|
||||
def _parse_function_doc(self):
|
||||
@@ -74,7 +74,8 @@ class PyObject(Base):
|
||||
|
||||
def get_subscope_by_name(self, name):
|
||||
if name in dir(self._cls().obj):
|
||||
return PyName(self._cls, name).parent
|
||||
print PyName(self._cls(), name).parent
|
||||
return PyName(self._cls(), name).parent
|
||||
else:
|
||||
raise KeyError("CompiledObject doesn't have an attribute '%s'." % name)
|
||||
|
||||
@@ -116,14 +117,14 @@ class PyName(object):
|
||||
@underscore_memoization
|
||||
def parent(self):
|
||||
try:
|
||||
# this has a builtin_function_or_method
|
||||
return create(getattr(self._obj.obj, self._name), self._obj,
|
||||
module=self._obj.get_parent_until())
|
||||
o = getattr(self._obj.obj, self._name)
|
||||
except AttributeError:
|
||||
# happens e.g. in properties of
|
||||
# PyQt4.QtGui.QStyleOptionComboBox.currentText
|
||||
# -> just set it to None
|
||||
return PyObject(None, builtin)
|
||||
else:
|
||||
return create(o, self._obj, module=self._obj.get_parent_until())
|
||||
|
||||
@property
|
||||
def names(self):
|
||||
|
||||
@@ -75,7 +75,7 @@ def _load_module(module):
|
||||
with open(os.path.join(path, 'fake', module_name) + '.pym') as f:
|
||||
source = f.read()
|
||||
except IOError:
|
||||
return {}
|
||||
return
|
||||
module = Parser(source, module_name).module
|
||||
modules[module_name] = module
|
||||
return module
|
||||
@@ -88,6 +88,8 @@ def get_faked(module, obj):
|
||||
return s
|
||||
|
||||
mod = _load_module(module)
|
||||
if mod is None:
|
||||
return
|
||||
|
||||
# Having the module as a `parser.representation.module`, we need to scan
|
||||
# for methods.
|
||||
@@ -97,8 +99,10 @@ def get_faked(module, obj):
|
||||
return from_scope(mod, obj)
|
||||
elif not inspect.isclass(obj):
|
||||
# object is a method or descriptor
|
||||
cls = obj.__objclass__
|
||||
return from_scope(from_scope(mod, cls), obj)
|
||||
cls = from_scope(mod, obj.__objclass__)
|
||||
if cls is None:
|
||||
return
|
||||
return from_scope(cls, obj)
|
||||
|
||||
|
||||
def is_class_instance(obj):
|
||||
|
||||
@@ -122,6 +122,7 @@ class Instance(use_metaclass(CachedMetaClass, Executable)):
|
||||
|
||||
def get_subscope_by_name(self, name):
|
||||
sub = self.base.get_subscope_by_name(name)
|
||||
print sub
|
||||
return InstanceElement(self._evaluator, self, sub, True)
|
||||
|
||||
def execute_subscope_by_name(self, name, args=()):
|
||||
@@ -202,8 +203,10 @@ class InstanceElement(use_metaclass(CachedMetaClass, pr.Base)):
|
||||
or isinstance(par, pr.Class) \
|
||||
and par == self.instance.base.base:
|
||||
par = self.instance
|
||||
elif not isinstance(par, pr.Module):
|
||||
elif not isinstance(par, (pr.Module, compiled.PyObject)):
|
||||
print 'HA', par, self.var
|
||||
par = InstanceElement(self.instance._evaluator, self.instance, par, self.is_class_var)
|
||||
print 'H2A', par
|
||||
return par
|
||||
|
||||
def get_parent_until(self, *args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user