From: Armin Ronacher Date: Thu, 2 Apr 2009 12:04:41 +0000 (+0200) Subject: Documented more changes X-Git-Tag: 2.2~23^2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=32ed6c91fbab6c4b9fdd9cc2e57db9911bc45d79;p=jinja2.git Documented more changes --HG-- branch : trunk --- diff --git a/jinja2/debug.py b/jinja2/debug.py index ce794e2..ad7453e 100644 --- a/jinja2/debug.py +++ b/jinja2/debug.py @@ -65,6 +65,14 @@ class ProcessedTraceback(object): self.frames[0], limit=limit) return ''.join(lines).rstrip() + def render_as_html(self, full=False): + """Return a unicode string with the traceback as rendered HTML.""" + from jinja2.debugrenderer import render_traceback + return u'%s\n\n' % ( + render_traceback(self, full=full), + self.render_as_text().decode('utf-8', 'replace') + ) + @property def is_template_syntax_error(self): """`True` if this is a template syntax error.""" diff --git a/jinja2/environment.py b/jinja2/environment.py index 803e7a8..f163ab5 100644 --- a/jinja2/environment.py +++ b/jinja2/environment.py @@ -194,6 +194,7 @@ class Environment(object): #: must not be modified shared = False + #: these are currently EXPERIMENTAL undocumented features. exception_handler = None exception_formatter = None @@ -475,13 +476,21 @@ class Environment(object): global _make_traceback if exc_info is None: exc_info = sys.exc_info() + + # the debugging module is imported when it's used for the first time. + # we're doing a lot of stuff there and for applications that do not + # get any exceptions in template rendering there is no need to load + # all of that. if _make_traceback is None: from jinja2.debug import make_traceback as _make_traceback + traceback = _make_traceback(exc_info, source_hint) + if rendered and self.exception_formatter is not None: return self.exception_formatter(traceback) if self.exception_handler is not None: self.exception_handler(traceback) + exc_type, exc_value, tb = traceback.standard_exc_info raise exc_type, exc_value, tb