From 2b0d80a180201789c704ccad4b93f31343cdabdf Mon Sep 17 00:00:00 2001 From: Bogdan Nikitin Date: Wed, 21 Feb 2024 23:01:25 +0300 Subject: [PATCH] Use sys.displayhook for converting result to string --- ptpython/printer.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ptpython/printer.py b/ptpython/printer.py index 85bd9c88..4d4f6c6d 100644 --- a/ptpython/printer.py +++ b/ptpython/printer.py @@ -2,8 +2,10 @@ import sys import traceback +from contextlib import redirect_stdout from dataclasses import dataclass from enum import Enum +from io import StringIO from typing import Generator, Iterable from prompt_toolkit.formatted_text import ( @@ -164,7 +166,10 @@ def _format_result_output( # Call `__repr__` of given object first, to turn it in a string. try: - result_repr = repr(result) + result_repr_sio = StringIO() + with redirect_stdout(result_repr_sio): + sys.displayhook(result) + result_repr = result_repr_sio.getvalue()[:-1] # Remove '\n' at the end except KeyboardInterrupt: raise # Don't catch here. except BaseException as e: