(self, exc: Exception, limit: int = 7)
| 222 | return FRAME_TEMPLATE.format(**values) |
| 223 | |
| 224 | def generate_html(self, exc: Exception, limit: int = 7) -> str: |
| 225 | traceback_obj = traceback.TracebackException.from_exception(exc, capture_locals=True) |
| 226 | |
| 227 | exc_html = class="st">"" |
| 228 | is_collapsed = False |
| 229 | exc_traceback = exc.__traceback__ |
| 230 | if exc_traceback is not None: |
| 231 | frames = inspect.getinnerframes(exc_traceback, limit) |
| 232 | for frame in reversed(frames): |
| 233 | exc_html += self.generate_frame_html(frame, is_collapsed) |
| 234 | is_collapsed = True |
| 235 | |
| 236 | if sys.version_info >= (3, 13): class="cm"># pragma: no cover |
| 237 | exc_type_str = traceback_obj.exc_type_str |
| 238 | else: class="cm"># pragma: no cover |
| 239 | exc_type_str = traceback_obj.exc_type.__name__ |
| 240 | |
| 241 | class="cm"># escape error class and text |
| 242 | error = fclass="st">"{html.escape(exc_type_str)}: {html.escape(str(traceback_obj))}" |
| 243 | |
| 244 | return TEMPLATE.format(styles=STYLES, js=JS, error=error, exc_html=exc_html) |
| 245 | |
| 246 | def generate_plain_text(self, exc: Exception) -> str: |
| 247 | return class="st">"".join(traceback.format_exception(type(exc), exc, exc.__traceback__)) |
no test coverage detected