diff --git a/jedi/evaluate/compiled.py b/jedi/evaluate/compiled.py new file mode 100644 index 00000000..f2f49837 --- /dev/null +++ b/jedi/evaluate/compiled.py @@ -0,0 +1,24 @@ +from jedi.cache import underscore_memoization + + +class PyObject(object): + def __init__(self, obj, parent=None): + self.obj = obj + self.parent = parent + + def get_defined_names(self): + for name in dir(self.obj): + yield PyName(self, name) + + +class PyName(object): + def __init__(self, obj, name): + self._obj = obj + self._name = name + + self.start_pos = 0, 0 # an illegal start_pos, to make sorting easy. + + @property + @underscore_memoization + def parent(self): + return PyObject(getattr(self._obj.obj, self._name), self._obj) diff --git a/test/test_compiled.py b/test/test_compiled.py new file mode 100644 index 00000000..45b64412 --- /dev/null +++ b/test/test_compiled.py @@ -0,0 +1,10 @@ +from jedi._compatibility import builtins +from jedi.evaluate import compiled +from jedi.evaluate import Evaluator + + +def test_simple(): + bltn = compiled.PyObject(builtins) + obj = compiled.PyObject('_str_', bltn) + upper = Evaluator().find_types(obj, 'upper') + assert len(upper) == 1