From 70413768eff0fa2f1a98cc58891c4067f8c7f6d8 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 7 Jan 2014 18:45:02 +0100 Subject: [PATCH] add a 'compiled' module, to finally solve #102 and #335 --- jedi/evaluate/compiled.py | 24 ++++++++++++++++++++++++ test/test_compiled.py | 10 ++++++++++ 2 files changed, 34 insertions(+) create mode 100644 jedi/evaluate/compiled.py create mode 100644 test/test_compiled.py 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