1
0
forked from VimPlug/jedi

fix some api stuff for PyObject

This commit is contained in:
Dave Halter
2014-01-09 01:52:10 +01:00
parent 0cb23dcfa2
commit e7e802408b
2 changed files with 11 additions and 5 deletions

View File

@@ -493,7 +493,9 @@ class Definition(BaseDefinition):
if isinstance(d, pr.Name):
d = d.parent
if isinstance(d, iterable.Array):
if isinstance(d, compiled.PyObject):
d = d.type() + ' ' + d.name
elif isinstance(d, iterable.Array):
d = 'class ' + d.type
elif isinstance(d, (pr.Class, er.Class, er.Instance)):
d = 'class ' + unicode(d.name)

View File

@@ -43,12 +43,13 @@ class PyObject(Base):
elif inspect.isbuiltin(self.obj) or inspect.ismethod(self.obj) \
or inspect.ismethoddescriptor(self.obj):
return 'def'
raise NotImplementedError()
def get_defined_names(self):
# We don't want to execute properties, therefore we have to try to get
# the class
cls = self
if not inspect.isclass(self.obj):
if self.type() not in ('class', 'module'):
cls = PyObject(self.obj.__class__, self.parent)
for name in dir(cls.obj):
@@ -60,10 +61,10 @@ class PyObject(Base):
return self.obj.__name__
def execute(self, params):
if inspect.isclass(self.obj):
t = self.type()
if t == 'class':
yield PyObject(self.obj, self.parent, True)
elif inspect.isbuiltin(self.obj) or inspect.ismethod(self.obj) \
or inspect.ismethoddescriptor(self.obj):
elif t == 'def':
for name in self._parse_function_doc()[1].split():
try:
yield PyObject(getattr(_builtins, name), builtin, True)
@@ -77,6 +78,9 @@ class PyName(object):
self._name = name
self.start_pos = 0, 0 # an illegal start_pos, to make sorting easy.
def __repr__(self):
return '<%s: %s.%s>' % (type(self).__name__, self._obj.obj, self._name)
@property
@underscore_memoization
def parent(self):