forked from VimPlug/jedi
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import types
|
|
|
|
from jedi._compatibility import builtins as _builtins
|
|
from jedi.evaluate.compiled.context import CompiledObject, CompiledName, \
|
|
CompiledObjectFilter, CompiledContextName, create_from_access_path
|
|
from jedi.evaluate.compiled import access
|
|
|
|
|
|
def builtin_from_name(evaluator, string):
|
|
bltn_obj = getattr(_builtins, string)
|
|
return create(evaluator, bltn_obj)
|
|
|
|
|
|
def create_simple_object(evaluator, obj):
|
|
"""
|
|
Only allows creations of objects that are easily picklable across Python
|
|
versions.
|
|
"""
|
|
assert isinstance(obj, (int, float, str, bytes, slice, complex, type(Ellipsis)))
|
|
return create(evaluator, obj)
|
|
|
|
|
|
def create(evaluator, obj):
|
|
return create_from_access_path(
|
|
evaluator, access.create_access_path(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)
|
|
|
|
|
|
def load_module(evaluator, path=None, name=None):
|
|
return create_from_access_path(
|
|
evaluator,
|
|
access.load_module(evaluator, path=path, name=name)
|
|
)
|