def parser(self): """ get the parser lazy """ if not self._parser: try: timestamp, parser = self.cache[self.path or self.name] if not self.path or os.path.getmtime(self.path) <= timestamp: self._parser = parser else: # In case there is already a module cached and this module # has to be reparsed, we also need to invalidate the import # caches. cache.invalidate_star_import_cache(parser.module) raise KeyError() except KeyError: self._load_module() return self._parser
def parser(self): """ get the parser lazy """ if not self._parser: try: parser = cache.parser_cache[self.path].parser cache.invalidate_star_import_cache(parser.module) except KeyError: pass # Call the parser already here, because it will be used anyways. # Also, the position is here important (which will not be used by # default), therefore fill the cache here. self._parser = fast_parser.FastParser(self.source, self.path, self.position) # don't pickle that module, because it's changing fast cache.save_module(self.path, self.name, self._parser, pickling=False) return self._parser
def parser(self): """ get the parser lazy """ if not self._parser: try: ts, parser = builtin.CachedModule.cache[self.path] cache.invalidate_star_import_cache(parser.module) del builtin.CachedModule.cache[self.path] except KeyError: pass # Call the parser already here, because it will be used anyways. # Also, the position is here important (which will not be used by # default), therefore fill the cache here. self._parser = fast_parser.FastParser(self.source, self.path, self.position) if self.path is not None: builtin.CachedModule.cache[self.path] = time.time(), self._parser return self._parser
def parser(self): """ get the parser lazy """ if not self._parser: try: ts, parser = builtin.CachedModule.cache[self.path] cache.invalidate_star_import_cache(parser.module) del builtin.CachedModule.cache[self.path] except KeyError: pass # Call the parser already here, because it will be used anyways. # Also, the position is here important (which will not be used by # default), therefore fill the cache here. self._parser = fast_parser.FastParser(self.source, self.path, self.position) if self.path is not None: builtin.CachedModule.cache[self.path] = time.time(), \ self._parser return self._parser