[New-bugs-announce] [issue8198] Importing pydoc and overwriting sys.stdout, causes one char to be sent to the console when calling help()

François Granade report at bugs.python.org
Mon Mar 22 06:22:04 CET 2010


New submission from François Granade <francois at granade.com>:

When the "pydoc" module is imported, and the sys.stdout is overwriten, a end-of-line is sent to the console (on sdtout) when the help() function is sent.

to reproduce (this is on Python 2.5 but the same happens on Pythjon 3.1):

bash-3.2$ python2.5 -c "import pydoc; import sys; from StringIO import StringIO; sys.stdout = StringIO(); help(sys)"

bash-3.2$ 

(note the one empty line)

whereas:

bash-3.2$ python2.5 -c "import sys; from StringIO import StringIO; sys.stdout = StringIO(); help(sys)"
bash-3.2$ 

(no empty line)

The funny thing is that the difference only occurs if sys.stdout is redirected; if it is not, importing pydoc doesn't change anything to the output:

bash-3.2$ python2.5 -c "import pydoc; import sys; help(sys)" | wc
     256    1298   10690
bash-3.2$ python2.5 -c "import sys; help(sys)" | wc
     256    1298   10690
bash-3.2$ 




Note that this is related to 1700304, but is actually *one specific case* since *only one character* is not redirected - I would expect them all or none

----------
components: Library (Lib)
messages: 101479
nosy: farialima
severity: normal
status: open
title: Importing pydoc and overwriting sys.stdout, causes one char to be sent to the console when calling help()
versions: Python 2.5, Python 2.6, Python 2.7, Python 3.1

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8198>
_______________________________________


More information about the New-bugs-announce mailing list