From 75df015f610a3c3689420e2dafe3241a0a70c4b8 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders Date: Wed, 15 May 2019 23:23:02 +0200 Subject: [PATCH] Render by default to stderr if stdout is redirected. --- prompt_toolkit/output/defaults.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/prompt_toolkit/output/defaults.py b/prompt_toolkit/output/defaults.py index b199c8309..3471bfc69 100644 --- a/prompt_toolkit/output/defaults.py +++ b/prompt_toolkit/output/defaults.py @@ -21,7 +21,15 @@ def create_output(stdout: Optional[TextIO] = None) -> Output: :param stdout: The stdout object """ - stdout = stdout or sys.__stdout__ + if stdout is None: + # By default, render to stdout. If the output is piped somewhere else, + # render to stderr. The prompt_toolkit render output is not meant to be + # consumed by something other then a terminal, so this is a reasonable + # default. + if sys.stdout.isatty(): + stdout = sys.stdout + else: + stdout = sys.stderr if is_windows(): from .conemu import ConEmuOutput