diff --git a/CHANGELOG.md b/CHANGELOG.md index 5952e405..07cd14b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,11 @@ You can find our backwards-compatibility policy [here](https://github.com/hynek/ - Python 3.8 support. +### Changed + +- `structlog.dev.ConsoleRenderer` does not warn anymore when the `exception` key has a rendered value despite having a fancy formatter configured. + [#790](https://github.com/hynek/structlog/pull/790) + ## [25.5.0](https://github.com/hynek/structlog/compare/25.4.0...25.5.0) - 2025-10-27 diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 110cdb51..b14eb39a 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -915,13 +915,6 @@ def __call__( if exc_info: self._exception_formatter(sio, exc_info) elif exc is not None: - if self._exception_formatter is not plain_traceback: - warnings.warn( - "Remove `format_exc_info` from your processor chain " - "if you want pretty exceptions.", - stacklevel=2, - ) - sio.write("\n" + exc) return sio.getvalue() diff --git a/tests/test_dev.py b/tests/test_dev.py index fc825d8f..7c6a20ba 100644 --- a/tests/test_dev.py +++ b/tests/test_dev.py @@ -358,37 +358,17 @@ def test_key_values_unsorted(self, styles, padded): + styles.reset ) == rv - @pytest.mark.parametrize("wrap", [True, False]) - def test_exception_rendered( - self, cr, recwarn, wrap, styles, padded, monkeypatch - ): + def test_exception_rendered(self, cr, styles, padded): """ Exceptions are rendered after a new line if they are already rendered in the event dict. - - A warning is emitted if exception printing is "customized". """ exc = "Traceback:\nFake traceback...\nFakeError: yolo" - # Wrap the formatter to provoke the warning. - if wrap: - monkeypatch.setattr( - cr, - "_exception_formatter", - lambda s, ei: dev.plain_traceback(s, ei), # noqa: PLW0108 - ) - rv = cr(None, None, {"event": "test", "exception": exc}) assert (f"{padded}\n" + exc) == rv - if wrap: - (w,) = recwarn.list - assert ( - "Remove `format_exc_info` from your processor chain " - "if you want pretty exceptions.", - ) == w.message.args - def test_stack_info(self, cr, styles, padded): """ Stack traces are rendered after a new line.