示例#1
0
 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
示例#2
0
 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
示例#3
0
    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
示例#4
0
 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
示例#5
0
    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