Mercurial > piecrust2
view piecrust/records.py @ 96:0445a2232de7
Improvements and fixes to incremental baking.
* Better handling of the render pass during page rendering.
* Used sources are paired with the pass they were used in.
* Proper use and invalidation of the rendered segments cache based on render
passes.
* The `Assetor` is also better tracking what was used in a page.
* Add flags on a page to get better caching information for the debug window.
* Property invalidation of the previous bake record when needed.
* Better information about why pages are delayed.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 07 Sep 2014 23:48:57 -0700 |
parents | e88e330eb8dc |
children | 133845647083 |
line wrap: on
line source
import os import os.path import pickle import logging from piecrust.events import Event logger = logging.getLogger(__name__) class Record(object): def __init__(self): self.entries = [] self.entry_added = Event() def addEntry(self, entry): self.entries.append(entry) self.entry_added.fire(entry) def save(self, path): path_dir = os.path.dirname(path) if not os.path.isdir(path_dir): os.makedirs(path_dir, 0o755) with open(path, 'wb') as fp: pickle.dump(self, fp, pickle.HIGHEST_PROTOCOL) def __getstate__(self): odict = self.__dict__.copy() del odict['entry_added'] return odict def __setstate__(self, state): for k, v in state.items(): setattr(self, k, v) self.entry_added = Event() @staticmethod def load(path): logger.debug("Loading bake record from: %s" % path) with open(path, 'rb') as fp: return pickle.load(fp)