def render_summary(self, include_title=True):
        """Render the traceback for the interactive console."""
        title = ''
        description = ''
        frames = []
        classes = ['traceback']
        if not self.frames:
            classes.append('noframe-traceback')

        if include_title:
            if self.is_syntax_error:
                title = text_('Syntax Error')
            else:
                title = text_('Traceback <em>(most recent call last)</em>:')

        for frame in self.frames:
            frames.append(text_('<li%s>%s') % (
                frame.info and text_(' title="%s"') % escape(frame.info) or text_(''),
                frame.render()
                ))

        if self.is_syntax_error:
            description_wrapper = text_('<pre class=syntaxerror>%s</pre>')
        else:
            description_wrapper = text_('<blockquote>%s</blockquote>')

        return SUMMARY_HTML % {
            'classes':      text_(' '.join(classes)),
            'title':        title and text_('<h3>%s</h3>' % title) or text_(''),
            'frames':       text_('\n'.join(frames)),
            'description':  description_wrapper % escape(self.exception)
        }
Exemple #2
0
    def render_summary(self, include_title=True):
        """Render the traceback for the interactive console."""
        title = ''
        description = ''
        frames = []
        classes = ['traceback']
        if not self.frames:
            classes.append('noframe-traceback')

        if include_title:
            if self.is_syntax_error:
                title = text_('Syntax Error')
            else:
                title = text_('Traceback <em>(most recent call last)</em>:')

        for frame in self.frames:
            frames.append(
                text_('<li%s>%s') %
                (frame.info and text_(' title="%s"') % escape(frame.info)
                 or text_(''), frame.render()))

        if self.is_syntax_error:
            description_wrapper = text_('<pre class=syntaxerror>%s</pre>')
        else:
            description_wrapper = text_('<blockquote>%s</blockquote>')

        return SUMMARY_HTML % {
            'classes': text_(' '.join(classes)),
            'title': title and text_('<h3>%s</h3>' % title) or text_(''),
            'frames': text_('\n'.join(frames)),
            'description': description_wrapper % escape(self.exception)
        }
 def render(self):
     """Render a single frame in a traceback."""
     return FRAME_HTML % {
         'id':               self.id,
         'filename':         escape(self.filename),
         'lineno':           self.lineno,
         'function_name':    escape(self.function_name),
         'current_line':     escape(self.current_line.strip())
     }
Exemple #4
0
 def render(self):
     """Render a single frame in a traceback."""
     return FRAME_HTML % {
         'id': self.id,
         'filename': escape(self.filename),
         'lineno': self.lineno,
         'function_name': escape(self.function_name),
         'current_line': escape(self.current_line.strip())
     }
Exemple #5
0
 def render_object_dump(self, items, title, repr=None):
     html_items = []
     for key, value in items:
         html_items.append('<tr><th>%s<td><pre class=repr>%s</pre>' %
                           (escape(key), value))
     if not html_items:
         html_items.append('<tr><td><em>Nothing</em>')
     return OBJECT_DUMP_HTML % {
         'title': escape(title),
         'repr': repr and '<pre class=repr>%s</pre>' % repr or '',
         'items': '\n'.join(html_items)
     }
Exemple #6
0
 def render_object_dump(self, items, title, repr=None):
     html_items = []
     for key, value in items:
         html_items.append('<tr><th>%s<td><pre class=repr>%s</pre>' %
                           (escape(key), value))
     if not html_items:
         html_items.append('<tr><td><em>Nothing</em>')
     return OBJECT_DUMP_HTML % {
         'title':    escape(title),
         'repr':     repr and '<pre class=repr>%s</pre>' % repr or '',
         'items':    '\n'.join(html_items)
     }
Exemple #7
0
 def render_full(self, evalex=False, secret=None):
     """Render the Full HTML page with the traceback info."""
     exc = escape(self.exception)
     return PAGE_HTML % {
         'evalex':           evalex and 'true' or 'false',
         'console':          'false',
         'title':            exc,
         'exception':        exc,
         'exception_type':   escape(self.exception_type),
         'summary':          self.render_summary(include_title=False),
         'plaintext':        self.plaintext,
         'plaintext_cs':     re.sub('-{2,}', '-', self.plaintext),
         'traceback_id':     self.id,
         'secret':           secret
     }
Exemple #8
0
 def render_full(self, evalex=False, secret=None):
     """Render the Full HTML page with the traceback info."""
     exc = escape(self.exception)
     return PAGE_HTML % {
         'evalex': evalex and 'true' or 'false',
         'console': 'false',
         'title': exc,
         'exception': exc,
         'exception_type': escape(self.exception_type),
         'summary': self.render_summary(include_title=False),
         'plaintext': self.plaintext,
         'plaintext_cs': re.sub('-{2,}', '-', self.plaintext),
         'traceback_id': self.id,
         'secret': secret
     }
Exemple #9
0
 def fallback_repr(self):
     try:
         info = ''.join(format_exception_only(*sys.exc_info()[:2]))
     except Exception:  # pragma: no cover
         info = '?'
     return text_('<span class="brokenrepr">&lt;broken repr (%s)&gt;'
                  '</span>' %
                  escape(text_(info, 'utf-8', 'ignore').strip()))
Exemple #10
0
 def fallback_repr(self):
     try:
         info = ''.join(format_exception_only(*sys.exc_info()[:2]))
     except Exception: # pragma: no cover
         info = '?'
     return text_(
         '<span class="brokenrepr">&lt;broken repr (%s)&gt;'
         '</span>' % escape(text_(info, 'utf-8', 'ignore').strip())
     )
Exemple #11
0
 def py3_text_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_(''.join(buf)), obj, text_type)
Exemple #12
0
 def py3_text_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_(''.join(buf)), obj, text_type)
Exemple #13
0
 def py2_string_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if isinstance(obj, text_type):
         buf.append('u')
         a = a[1:]
         b = b[1:]
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_('').join(buf), obj, (str, unicode))
Exemple #14
0
 def py2_string_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if isinstance(obj, text_type):
         buf.append('u')
         a = a[1:]
         b = b[1:]
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_('').join(buf), obj, (str, unicode))
Exemple #15
0
 def write(self, x):
     self._write(escape(x))
Exemple #16
0
 def write(self, x):
     self._write(escape(x))
Exemple #17
0
 def object_repr(self, obj):
     return text_('<span class="object">%s</span>' %
                  escape(text_(repr(obj), 'utf-8', 'replace')))
Exemple #18
0
 def render(self):
     return SOURCE_LINE_HTML % {
         'classes': text_(' ').join(self.classes),
         'lineno': self.lineno,
         'code': escape(self.code)
     }
Exemple #19
0
 def writelines(self, x):
     self._write(escape(''.join(x)))
Exemple #20
0
 def render(self):
     return SOURCE_LINE_HTML % {
         'classes':      text_(' ').join(self.classes),
         'lineno':       self.lineno,
         'code':         escape(self.code)
     }
Exemple #21
0
 def object_repr(self, obj):
     return text_('<span class="object">%s</span>' %
                  escape(text_(repr(obj), 'utf-8', 'replace')))
Exemple #22
0
 def writelines(self, x):
     self._write(escape(''.join(x)))