Skip to content

celsiusnarhwal/rich-tracebacks

Repository files navigation

rich-tracebacks

PyPI - Python Version PyPI GitHub release (latest SemVer) PyPI - License

rich-tracebacks automates the installation of Rich's traceback handler in Python programs. Compared to Rich's own sanctioned method of automatically installing its traceback handler, rich-tracebacks is markedly simpler and agnostic to your virtual environment.

Installation

pip install rich-tracebacks

Usage

Enabling

Set the RICH_TRACEBACKS environment variable. The value of the variable doesn't matter, but we'll use 1 as an example.

export RICH_TRACEBACKS=1

That's it. Rich's traceback handler will be automatically installed each time you run your program.

Disabling

Unset the RICH_TRACEBACKS environment variable.

unset RICH_TRACEBACKS

Configuration

You can configure the traceback handler with its supported options by creating an rt_config.py file at your project's root. The file should contain a dictionary named config that maps option names to their intended values. For example:

# rt_config.py

config = {
    "show_locals": True,
    "width": 120,
    "theme": "monokai",
    ...
}

Options that are not defined in rt_config.py will fall back to their default values. If rt_config.py does not exist, all options will fall back to their default values.

A note on the suppress option

Rich's traceback handler supports a suppress option to which you can pass an iterable of modules and paths to be excluded from tracebacks. To suppress a module, you would normally need to import the module and then pass the module object to the suppress option. For example:

import foo
from rich.traceback import install

install(suppress=[foo])

With rich-tracebacks, you also have the option of simply passing the module's name as a string. For example:

# rt_config.py

config = {
    "suppress": ["foo"],
    ...
}

rich-tracebacks will do the work of importing the module for you and passing the module object to Rich. Names it can't import will be passed to Rich as literal strings, which will in turn treat them as paths.

PyCharm Support

PyCharm users may find that rich-tracebacks doesn't seem to work if sys.excepthook is called while using the IDE's debugger. If that's you, setting the RICH_TRACEBACKS_PYCHARM environment variable in the relevant run configuration will apply an experimental fix for this issue. If it doesn't work, open an issue and I will try to help you as best I can.

License

rich-tracebacks is licensed under the MIT License.