Human-readable HTML tracebacks for Python exceptions
Project description
TraceRite
Beautiful, readable error messages for Python, with text and HTML formatting.
Installation
Python scripts or REPL
pip install tracerite
import tracerite; tracerite.load()
Any error message after that call will be prettified. Handles any syntax errors and uncaught exceptions, even captures logging.exception (optionally).
IPython or Jupyter Notebook
%pip install tracerite
%load_ext tracerite
This enables tracebacks in text or HTML format depending on where you are running. Add to ~/.ipython/profile_default/startup/tracerite.ipy to make it load automatically for all your ipython and notebook sessions. Alternatively, put the two lines at the top of your notebook.
FastAPI
Add the extension loader at the top of your app module:
from tracerite import patch_fastapi; patch_fastapi()
This monkeypatches Starlette error handling and FastAPI routing to work with HTML tracebacks. Note: this runs regardless of whether you are in production mode or debug mode, so you might want to call that function only conditionally in the latter.
Sanic
Comes with TraceRite built in whenever running in debug mode.
Clarity in complex situations
TraceRite shows even complex exception chains in chronological order, as opposed to the convoluted order of Python's own tracebacks where the entry point
func() is near bottom and the flow jumps back and forth.
Features
- Chronological order - Single timeline with the program entry point is at top, and the finally uncaught exception bottom.
- Minimalistic output - Smart pruning to show only relevant pieces of information, excluding library internals where not relevant and avoiding any repetition.
- ExceptionGroups - Full tracebacks of the subexceptions from exceptions that occurred in parallel execution.
- Variable inspection - See the values of your variables in a pretty printed HTML format, Terminal or JSON-compatible machine-readable dict.
- JSON output - Intermediady dict format is JSON-compatible, useful for machine processing and used by our HTML and TTY modules.
- HTML output - Works in Jupyter, Colab, and web frameworks such as FastAPI and Sanic as the debug mode error handler.
- TTY output - Colorful, formatted tracebacks for terminal applications and Python REPL.
- Custom Styling - Theme with your colors by defining CSS variables or tty.COLORS.
- Automatic dark mode - Saves your eyes.
Python 3.11+ introduced
ExceptionGroup for parallel execution errors (e.g., asyncio.TaskGroup). TraceRite displays these clearly.
Usage
html_traceback(exc)
Renders an exception as interactive HTML that can be included on a page. Pass an exception object, or call with no arguments inside an except block to use the current exception.
extract_chain(exc)
Extracts exception information as a list of dictionaries—useful for logging, custom formatting, or machine processing.
prettyvalue(value)
Formats any value with smart truncation, array shape display, and SI-scaled numerics. Useful beyond exceptions for debugging tools or custom logging.
extract_variables(locals, source)
Extracts and formats variables mentioned in a line of source code.
load() / unload()
Load or remove TraceRite as the default exception handler for terminal applications. Handles both sys.excepthook and threading.excepthook.
tty_traceback(exc)
Renders an exception as colorful terminal output with ANSI escape codes. Pass an exception object, or call with no arguments inside an except block.
See the API documentation for details, or Development guide for contributors.
License
Public Domain or equivalent.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tracerite-2.3.1.tar.gz.
File metadata
- Download URL: tracerite-2.3.1.tar.gz
- Upload date:
- Size: 61.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f46ee672d240d500a2331781b09eb33564d473f6ae60cd871ebce6c2413cffa8
|
|
| MD5 |
0b29a859a87ece39558056b363ef693d
|
|
| BLAKE2b-256 |
15b989b065c1818e5973c333a33311f823954ff4c7c48440c20b37669c5b752c
|
File details
Details for the file tracerite-2.3.1-py3-none-any.whl.
File metadata
- Download URL: tracerite-2.3.1-py3-none-any.whl
- Upload date:
- Size: 65.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f9595ba90f075b58e14a9baf84d8204fec3cdce50029f1c32d757af79d9ccbe
|
|
| MD5 |
b148285d42d6e7d306fb66cf14771feb
|
|
| BLAKE2b-256 |
b6623f385a67ff3cc91209f107d20bbebdecf7a4e4aba55a43f9f71bddc424a9
|