diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index a2b3ad81..f07abf88 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -114,8 +114,12 @@ class Evaluator(object): self.reset_recursion_limitations() # Constants + # TODO move to get_builtins_module self.BUILTINS = compiled.get_special_object(self, 'BUILTINS') + def get_builtins_module(self): + return self.BUILTINS + def reset_recursion_limitations(self): self.recursion_detector = recursion.RecursionDetector() self.execution_recursion_detector = recursion.ExecutionRecursionDetector(self) diff --git a/jedi/evaluate/compiled/__init__.py b/jedi/evaluate/compiled/__init__.py index e74a4fb3..d3ac7c70 100644 --- a/jedi/evaluate/compiled/__init__.py +++ b/jedi/evaluate/compiled/__init__.py @@ -1,12 +1,13 @@ from jedi._compatibility import builtins as _builtins from jedi.evaluate.compiled.context import CompiledObject, CompiledName, \ - CompiledObjectFilter, CompiledContextName, create_from_access_path + CompiledObjectFilter, CompiledContextName, create_from_access_path, \ + create_from_name from jedi.evaluate.compiled import access def builtin_from_name(evaluator, string): - bltn_obj = getattr(_builtins, string) - return create(evaluator, bltn_obj) + builtins = evaluator.get_builtins_module() + return create_from_name(evaluator, builtins, string) def create_simple_object(evaluator, obj): diff --git a/jedi/evaluate/compiled/context.py b/jedi/evaluate/compiled/context.py index 6b03fa1b..c6dbbbd2 100644 --- a/jedi/evaluate/compiled/context.py +++ b/jedi/evaluate/compiled/context.py @@ -172,6 +172,8 @@ class CompiledObject(Context): return for name in self._parse_function_doc()[1].split(): try: + # TODO wtf is this? this is exactly the same as the thing + # below. It uses getattr as well. self.evaluator.BUILTINS.access_handle.getattr(name) except AttributeError: continue @@ -228,7 +230,7 @@ class CompiledName(AbstractNameDefinition): @underscore_memoization def infer(self): - return ContextSet(_create_from_name( + return ContextSet(create_from_name( self._evaluator, self.parent_context, self.string_name )) @@ -394,7 +396,7 @@ def _parse_function_doc(doc): return param_str, ret -def _create_from_name(evaluator, compiled_object, name): +def create_from_name(evaluator, compiled_object, name): faked = None try: faked = fake.get_faked_with_parent_context(compiled_object, name) diff --git a/test/test_evaluate/test_compiled.py b/test/test_evaluate/test_compiled.py index 067e993f..0553f8a2 100644 --- a/test/test_evaluate/test_compiled.py +++ b/test/test_evaluate/test_compiled.py @@ -23,7 +23,7 @@ def test_simple(evaluator): def test_fake_loading(evaluator): builtin = compiled.get_special_object(evaluator, 'BUILTINS') string, = builtin.py__getattribute__('str') - from_name = compiled.context._create_from_name(evaluator, string, '__init__') + from_name = compiled.context.create_from_name(evaluator, string, '__init__') assert from_name.tree_node