1
0
forked from VimPlug/jedi

in the process...

This commit is contained in:
Dave Halter
2014-01-11 02:55:50 +01:00
parent e7c7bbca79
commit 28ab937eca
4 changed files with 19 additions and 10 deletions

View File

@@ -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):

View File

@@ -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):