def _serialize_variables(variables): hidden = variables.get("__traceback_hidden_variables__", ()) if hidden is True: return if not isinstance(hidden, (tuple, list)): hidden = () variables = tuple((safe_force_text(key), safe_force_text(value)) for key, value in variables.items() if not key in hidden) if variables: yield wl.OpenerView([ "Local variables", wl.Grid( iterate((("Key", "Value"), ), variables), Background=[None, [wl.LightGray]], Alignment=wl.Left, Frame=wl.LightGray, ), ]) else: yield "No local variables"
def serialize_traceback(exc_type, exc_value, tb, **opts): return wl.OpenerView([ wl.Row([ safe_force_text(exc_type.__name__), " ", safe_force_text(exc_value) ]), wl.Style( wl.Column(_serialize_traceback(exc_type, exc_value, tb, **opts)), FontFamily="Courier") ], True)
def _serialize_frames(filename, function, pre_context, post_context, context_line, variables, lineno, pre_context_lineno, is_opened=False, **opts): if filename: description = wl.Row([ wl.Button( wl.Style(filename, wl.RGBColor(0.25, 0.48, 1), wl.Small, FontFamily="Courier"), wl.If(wl.FileExistsQ(filename), wl.SystemOpen(filename)), Appearance="Frameless", ), " in ", function, ]) else: description = function yield wl.OpenerView( [ description, wl.Column( iterate( (wl.Column( iterate( (_paginate(pre_context_lineno + i, l) for i, l in enumerate(pre_context)), [ wl.Item( _paginate(lineno, context_line), Background=wl.LightYellow, ) ], (_paginate(lineno + i + 1, l) for i, l in enumerate(post_context)), ), Background=[[wl.GrayLevel(0.95), wl.GrayLevel(1)]], Frame=wl.LightGray, ), ), _serialize_variables(variables), )), ], is_opened, )