1
0
forked from VimPlug/jedi

FastModule seems to be compatible now with the normal Module, because it inherits from it and makes some minor modifications in some cases.

This commit is contained in:
Dave Halter
2015-01-28 15:11:21 +01:00
parent c7563470b1
commit b8c63f366c

View File

@@ -19,20 +19,19 @@ from jedi.parser.tokenize import (source_tokens, FLOWS, NEWLINE,
class FastModule(pr.SubModule):
type = 'file_input'
def __init__(self):
def __init__(self, module_path):
super(FastModule, self).__init__([])
self.modules = []
self.reset_caches()
self.names_dict = {}
self.path = module_path
def reset_caches(self):
self.modules = []
def __getattr__(self, name):
if name.startswith('__'):
raise AttributeError('Not available!')
else:
return getattr(self.modules[0], name)
try:
del self._used_names # Remove the used names cache.
except AttributeError:
pass # It was never used.
@property
@cache.underscore_memoization
@@ -48,6 +47,14 @@ class FastModule(pr.SubModule):
"""
return MergedNamesDict([m.used_names for m in self.modules])
@property
def global_names(self):
return [name for m in self.modules for name in m.global_names]
@property
def error_statement_stacks(self):
return [e for m in self.modules for e in m.error_statement_stacks]
def __repr__(self):
return "<fast.%s: %s@%s-%s>" % (type(self).__name__, self.name,
self.start_pos[0], self.end_pos[0])
@@ -283,7 +290,7 @@ class FastParser(use_metaclass(CachedFastParser)):
self.update(source)
def _reset_caches(self):
self.module = FastModule()
self.module = FastModule(self.module_path)
self.current_node = ParserNode(self.module)
self.current_node.set_parser(self, '')