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