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