[issue12403] Mention sys.displayhook in code module docs and the compile builtin docs
R. David Murray
report at bugs.python.org
Sat Jun 25 16:43:29 CEST 2011
R. David Murray <rdmurray at bitdance.com> added the comment:
Well, the code is being executed by an exec call on a code object that was compiled with the 'single' flag, which is what causes non-None values to get "printed". The compile docs aren't clear on how "printed" is implemented, but the answer is that it calls sys.displayhook. So the way to control that part of the output is to assign your own function to sys.displayhook. None of this is documented, and it should be (it took me a while to figure it out, and I had a suspicions about how it worked), so I'm changing this to a documentation bug.
However, you mention in the other ticket that are trying to do the interactive interpreter trick through a socket. For that application I think you want to ignore both the write method and sys.displayhook, and instead directly patch sys.stdout and sys.stderr. Otherwise you'd also miss output sent to those destinations via print statements or writing directly to the sys objects, which would confuse the user of your interface since the in the normal interactive prompt those show up on the console.
assignee: -> docs at python
nosy: +docs at python, r.david.murray
stage: -> needs patch
title: Allow overriding of writing to stdout in code.InteractiveConsole -> Mention sys.displayhook in code module docs and the compile builtin docs
type: feature request -> behavior
versions: +Python 3.1
Python tracker <report at bugs.python.org>
More information about the Python-bugs-list