Provides functions for neatly printing debug information to the terminal output, well-suited for multithreaded programs.
Supports PyQt5, PyQt6, PySide2 and PySide6.
- Github: https://github.com/Dennis-van-Gils/python-dvg-debug-functions
- PyPI: https://pypi.org/project/dvg-debug-functions
Installation:
pip install dvg-debug-functions
print_fancy_traceback(err=None, back: int = 3, show_full_paths: bool = False)
Print the exception or the current regular call-stack traceback to the terminal, using ANSI color codes that mimic the IPython command shell.
- Args:
- err (
Exception
|str
|None
, optional): When
err
is of typeException
, then an exception traceback will be printed. Whenerr
is of another type, then the current regular call-stack traceback will be printed.Default:
None
- back (
int
, optional): Depth of the traceback to print.
Default:
3
- show_full_paths (
bool
, optional): Shows the full filepath in the traceback when True, otherwise just the filename.
Default:
False
- err (
Example output:
dprint(str_msg: str, ANSI_color: str = None)
'Debug' print a single line to the terminal with optional ANSI color codes. There is a lot of overhead using this print statement, but it is particularly well-suited for multithreaded PyQt programs where multiple threads are each printing information to the same terminal. The
dprint()
function ensure that each line sent to the terminal will remain as a continious single line, whereas a regularprint()
statement will likely result in the lines getting mixed up.The line will be terminated with a newline character and the terminal output buffer is forced to flush before and after every print. In addition, if PyQt5 is present in the Python environment, then a mutex lock will be obtained and released again for each
dprint()
execution.tprint(str_msg: str, ANSI_color: str = None)
Identical to
dprint()
, but now prepended with atime.perf_counter()
timestamp.
class ANSI: NONE = "" RED = "\033[1;31m" GREEN = "\033[1;32m" YELLOW = "\033[1;33m" BLUE = "\033[1;34m" PURPLE = "\033[1;35m" # aka MAGENTA MAGENTA = "\033[1;35m" CYAN = "\033[1;36m" WHITE = "\033[1;37m"