Author r.david.murray
Recipients docs@python, r.david.murray, santoso.wijaya, tebeka
Date 2011-06-25.14:43:28
SpamBayes Score 1.45902e-08
Marked as misclassified No
Message-id <1309013009.33.0.57885083201.issue12403@psf.upfronthosting.co.za>
In-reply-to
Content
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.
History
Date User Action Args
2011-06-25 14:43:29r.david.murraysetrecipients: + r.david.murray, tebeka, santoso.wijaya, docs@python
2011-06-25 14:43:29r.david.murraysetmessageid: <1309013009.33.0.57885083201.issue12403@psf.upfronthosting.co.za>
2011-06-25 14:43:28r.david.murraylinkissue12403 messages
2011-06-25 14:43:28r.david.murraycreate