From dc180abec6ecfc8407ee6c7ddb308b2595ae4f80 Mon Sep 17 00:00:00 2001 From: ltsyk Date: Thu, 30 Jul 2026 15:21:08 +0800 Subject: [PATCH] fix: safe formatting for surrogates in pluggy tracing Avoid UnicodeEncodeError in tracing (issue #681) --- src/pluggy/_tracing.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/pluggy/_tracing.py b/src/pluggy/_tracing.py index e90418f5..514154c4 100644 --- a/src/pluggy/_tracing.py +++ b/src/pluggy/_tracing.py @@ -29,13 +29,17 @@ def _format_message(self, tags: Sequence[str], args: Sequence[object]) -> str: else: extra = {} - content = " ".join(map(str, args)) + def _safe(obj: object) -> str: + text = str(obj) + return text.encode("utf-8", "backslashreplace").decode("utf-8") + + content = " ".join(map(_safe, args)) indent = " " * self.indent lines = [f"{indent}{content} [{':'.join(tags)}]\n"] for name, value in extra.items(): - lines.append(f"{indent} {name}: {value}\n") + lines.append(f"{indent} {name}: {_safe(value)}\n") return "".join(lines)