xdev.tracebacks module

xdev.tracebacks.make_warnings_print_tracebacks()[source]

Makes warnings show tracebacks when displayed.

Applies a monkeypatch to warnings.formatwarning that includes a traceback in the displayed warning message.

Note

Use the context manager :class:WarningsWithTracebacks instead, or WarningsWithTracebacks.apply() if global modification is needed.

Example

>>> # xdoctest: +SKIP
>>> make_warnings_print_tracebacks()
>>> warnings.warn('This is a test warning')
class xdev.tracebacks.WarningsWithTracebacks(thread_safe=True)[source]

Bases: object

Makes warnings show tracebacks when displayed.

Applies a monkeypatch to warnings.formatwarning that includes a traceback in the displayed warning message.

CommandLine

xdoctest -m xdev.tracebacks WarningsWithTracebacks:0
xdoctest -m xdev.tracebacks WarningsWithTracebacks:1

Example

>>> # xdoctest: +IGNORE_WANT
>>> from xdev.tracebacks import *  # NOQA
>>> import warnings
>>> with WarningsWithTracebacks():
...     warnings.warn('This is a test warning')
<string>:1: UserWarning: This is a test warning
Traceback (most recent call last):
...

Example

>>> from xdev.tracebacks import *  # NOQA
>>> import warnings
>>> warnings.warn('This warning1 has no traceback')
>>> with WarningsWithTracebacks():
>>>     warnings.warn('This warning2 has a traceback')
>>> warnings.warn('This warning3 has no traceback')

Example

>>> import warnings
>>> def my_function():
...     with WarningsWithTracebacks():
...         warnings.warn('This is a test warning')
>>> def driver():
>>>     my_function()
>>> driver()
_enter_count = 0
_monkeypatch_formatwarning_tb(*args, **kwargs)[source]
classmethod apply()[source]

Apply this warnings traceback patch globaly. It will not be undone.