From 79071790daacd4ed57a0bf829810cd544ae9e129 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 5 Dec 2017 00:32:39 +0100 Subject: [PATCH] Move get_special_object --- jedi/evaluate/compiled/__init__.py | 23 ++++------------------- jedi/evaluate/compiled/access.py | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/jedi/evaluate/compiled/__init__.py b/jedi/evaluate/compiled/__init__.py index 0ed539e0..a31ec0ed 100644 --- a/jedi/evaluate/compiled/__init__.py +++ b/jedi/evaluate/compiled/__init__.py @@ -1,5 +1,3 @@ -import types - from jedi._compatibility import builtins as _builtins from jedi.evaluate.compiled.context import CompiledObject, CompiledName, \ CompiledObjectFilter, CompiledContextName, create_from_access_path @@ -26,24 +24,11 @@ def create(evaluator, obj): ) -def _a_generator(foo): - """Used to have an object to return for generators.""" - yield 42 - yield foo - - -_SPECIAL_OBJECTS = { - 'FUNCTION_CLASS': types.FunctionType, - 'METHOD_CLASS': type(CompiledObject.is_class), - 'MODULE_CLASS': types.ModuleType, - 'GENERATOR_OBJECT': _a_generator(1.0), - 'BUILTINS': _builtins, -} - - def get_special_object(evaluator, identifier): - obj = _SPECIAL_OBJECTS[identifier] - return create(evaluator, obj) + return create_from_access_path( + evaluator, + access.get_special_object(evaluator, identifier) + ) def load_module(evaluator, path=None, name=None): diff --git a/jedi/evaluate/compiled/access.py b/jedi/evaluate/compiled/access.py index c6459087..514b3ef9 100644 --- a/jedi/evaluate/compiled/access.py +++ b/jedi/evaluate/compiled/access.py @@ -55,6 +55,13 @@ ALLOWED_DESCRIPTOR_ACCESS = ( classmethod, ) + +def _a_generator(foo): + """Used to have an object to return for generators.""" + yield 42 + yield foo + + _sentinel = object() # Maps Python syntax to the operator module. @@ -378,3 +385,18 @@ def _is_class_instance(obj): return False else: return cls != type and not issubclass(cls, NOT_CLASS_TYPES) + + +_SPECIAL_OBJECTS = { + 'FUNCTION_CLASS': types.FunctionType, + 'METHOD_CLASS': type(DirectObjectAccess.py__bool__), + 'MODULE_CLASS': types.ModuleType, + 'GENERATOR_OBJECT': _a_generator(1.0), + 'BUILTINS': builtins, +} + +def get_special_object(evaluator, identifier): + obj = _SPECIAL_OBJECTS[identifier] + return create_access_path(evaluator, obj) + +