From 909cf4257a8c47df49e79344fbb9f014e58ab061 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 9 Jul 2019 14:28:24 +0100 Subject: [PATCH] Tweak exception debug HTML --- starlette/middleware/errors.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/starlette/middleware/errors.py b/starlette/middleware/errors.py index 0d153ac4..547ff075 100644 --- a/starlette/middleware/errors.py +++ b/starlette/middleware/errors.py @@ -52,6 +52,11 @@ p { .collapsed { display: none; } +.source-code { + font-family: courier; + font-size: small; + padding-bottom: 10px; +} """ JS = """ @@ -98,7 +103,7 @@ FRAME_TEMPLATE = """ in {frame_name}

-
{code_context}
+
{code_context}
""" @@ -183,7 +188,7 @@ class ServerErrorMiddleware: return LINE.format(**values) return CENTER_LINE.format(**values) - def generate_frame_html(self, frame: inspect.FrameInfo, center_lineno: int) -> str: + def generate_frame_html(self, frame: inspect.FrameInfo, center_lineno: int, is_collapsed: bool) -> str: code_context = "".join( self.format_line(context_position, line, frame.lineno, center_lineno) for context_position, line in enumerate(frame.code_context) @@ -194,6 +199,7 @@ class ServerErrorMiddleware: "frame_lineno": frame.lineno, "frame_name": frame.function, "code_context": code_context, + "collapsed": "collapsed" if is_collapsed else "" } return FRAME_TEMPLATE.format(**values) @@ -206,9 +212,12 @@ class ServerErrorMiddleware: ) center_lineno = int((limit - 1) / 2) - exc_html = "".join( - self.generate_frame_html(frame, center_lineno) for frame in reversed(frames) - ) + exc_html = "" + is_collapsed = False + for frame in reversed(frames): + exc_html += self.generate_frame_html(frame, center_lineno, is_collapsed) + is_collapsed = True + error = f"{traceback_obj.exc_type.__name__}: {traceback_obj}" return TEMPLATE.format(styles=STYLES, js=JS, error=error, exc_html=exc_html)