1
0
forked from VimPlug/jedi

Create CompiledModule to have a better differentiation between compiled modules and compiles values

This commit is contained in:
Dave Halter
2020-01-24 13:01:54 +01:00
parent e3e6727a2d
commit 4d3f314baa

View File

@@ -86,32 +86,12 @@ class CompiledObject(Value):
for access in self.access_handle.py__bases__() for access in self.access_handle.py__bases__()
) )
def py__path__(self):
paths = self.access_handle.py__path__()
if paths is None:
return None
return map(cast_path, paths)
def is_package(self):
return self.py__path__() is not None
@property
def string_names(self):
# For modules
name = self.py__name__()
if name is None:
return ()
return tuple(name.split('.'))
def get_qualified_names(self): def get_qualified_names(self):
return self.access_handle.get_qualified_names() return self.access_handle.get_qualified_names()
def py__bool__(self): def py__bool__(self):
return self.access_handle.py__bool__() return self.access_handle.py__bool__()
def py__file__(self):
return cast_path(self.access_handle.py__file__())
def is_class(self): def is_class(self):
return self.access_handle.is_class() return self.access_handle.is_class()
@@ -298,11 +278,7 @@ class CompiledObject(Value):
def get_metaclasses(self): def get_metaclasses(self):
return NO_VALUES return NO_VALUES
file_io = None # For modules
def _as_context(self): def _as_context(self):
if self.parent_context is None:
return CompiledModuleContext(self)
return CompiledContext(self) return CompiledContext(self)
@property @property
@@ -316,6 +292,33 @@ class CompiledObject(Value):
] ]
class CompiledModule(CompiledObject):
file_io = None # For modules
def _as_context(self):
return CompiledModuleContext(self)
def py__path__(self):
paths = self.access_handle.py__path__()
if paths is None:
return None
return map(cast_path, paths)
def is_package(self):
return self.py__path__() is not None
@property
def string_names(self):
# For modules
name = self.py__name__()
if name is None:
return ()
return tuple(name.split('.'))
def py__file__(self):
return cast_path(self.access_handle.py__file__())
class CompiledName(AbstractNameDefinition): class CompiledName(AbstractNameDefinition):
def __init__(self, inference_state, parent_value, name): def __init__(self, inference_state, parent_value, name):
self._inference_state = inference_state self._inference_state = inference_state
@@ -624,4 +627,8 @@ def create_from_access_path(inference_state, access_path):
@inference_state_function_cache() @inference_state_function_cache()
def create_cached_compiled_object(inference_state, access_handle, parent_context): def create_cached_compiled_object(inference_state, access_handle, parent_context):
assert not isinstance(parent_context, CompiledObject) assert not isinstance(parent_context, CompiledObject)
return CompiledObject(inference_state, access_handle, parent_context) if parent_context is None:
cls = CompiledModule
else:
cls = CompiledObject
return cls(inference_state, access_handle, parent_context)