1
0
forked from VimPlug/jedi

better environment for compiled executions

This commit is contained in:
Dave Halter
2014-01-08 02:20:41 +01:00
parent f257e279c2
commit d71fe3061b
3 changed files with 40 additions and 4 deletions

View File

@@ -1,13 +1,17 @@
"""
Imitate the parser representation.
"""
import inspect
from jedi._compatibility import builtins
from jedi.cache import underscore_memoization
class PyObject(object):
def __init__(self, obj, parent=None):
def __init__(self, obj, parent=None, instantiated=False):
self.obj = obj
self.parent = parent
self.instantiated = instantiated
def get_defined_names(self):
for name in dir(self.obj):
@@ -16,6 +20,21 @@ class PyObject(object):
def isinstance(self, *obj):
return isinstance(self, obj)
@property
def name(self):
# might not exist sometimes (raises AttributeError)
return self.obj.__name__
def execute(self, params):
if inspect.isclass(self.obj):
return [PyObject(self.obj, self.parent, True)]
elif inspect.isbuiltin(self.obj) or inspect.ismethod(self.obj) \
or inspect.ismethoddescriptor(self.obj):
return []
else:
return []
return []
class PyName(object):
def __init__(self, obj, name):
@@ -27,7 +46,17 @@ class PyName(object):
@property
@underscore_memoization
def parent(self):
return PyObject(getattr(self._obj.obj, self._name), self._obj)
try:
# this has a builtin_function_or_method
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(obj, py_builtin)
return PyObject(o, self._obj)
def get_code(self):
return self._name
py_builtin = PyObject(builtins)