R. David Murray <rdmur...@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@python components: +Documentation nosy: +docs@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 <rep...@bugs.python.org> <http://bugs.python.org/issue12403> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com