Mercurial > genshi > mirror
diff genshi/template/base.py @ 715:b5bd8c109209 trunk
Enable pickling of `Template` and `Code` objects.
author | cmlenz |
---|---|
date | Tue, 08 Apr 2008 22:34:01 +0000 |
parents | fc6d9d2a3527 |
children | 01bdf155db95 |
line wrap: on
line diff
--- a/genshi/template/base.py +++ b/genshi/template/base.py @@ -363,10 +363,7 @@ self.loader = loader self.lookup = lookup self.allow_exec = allow_exec - - self.filters = [self._flatten, self._eval, self._exec] - if loader: - self.filters.append(self._include) + self._init_filters() if isinstance(source, basestring): source = StringIO(source) @@ -377,9 +374,23 @@ except ParseError, e: raise TemplateSyntaxError(e.msg, self.filepath, e.lineno, e.offset) + def __getstate__(self): + state = self.__dict__.copy() + state['filters'] = [] + return state + + def __setstate__(self, state): + self.__dict__ = state + self._init_filters() + def __repr__(self): return '<%s "%s">' % (self.__class__.__name__, self.filename) + def _init_filters(self): + self.filters = [self._flatten, self._eval, self._exec] + if self.loader: + self.filters.append(self._include) + def _parse(self, source, encoding): """Parse the template.