classification
Title: pydoc.Helper.help() ignores input/output init parameters
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.8, Python 3.7, Python 3.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: berker.peksag Nosy List: ajaksu2, belopolsky, berker.peksag, bkad, eric.araujo, georg.brandl, miss-islington, tws5
Priority: normal Keywords: patch

Created on 2004-04-22 20:11 by tws5, last changed 2018-07-23 06:53 by berker.peksag. This issue is now closed.

Files
File name Uploaded Description Edit
helpredirect.diff bkad, 2010-11-21 22:03 patch for issue 940286 review
Pull Requests
URL Status Linked Edit
PR 8390 merged berker.peksag, 2018-07-22 05:05
PR 8402 merged miss-islington, 2018-07-23 05:37
PR 8403 merged miss-islington, 2018-07-23 05:38
Messages (15)
msg60481 - (view) Author: Maxim Krikun (tws5) Date: 2004-04-22 20:11
The ourput of pydoc.Helper help() method is always sent
to sys.stdout, even if Helper was supplied with
different input/output streams at initialization. Other
methods: listtopics etc. work as expected.

Example:
########################

import sys, pydoc
from StringIO import StringIO

buf=StringIO()
H=pydoc.Helper(sys.stdin,buf)

H.listtopics()
H.help("pydoc")
#at this point help on pydoc is printed to stdout
H.listtopics()

ss=buf.getvalue()
print ss
#at this point the list of topics is printed twice

########################

sys.version:
 '2.3 (#46, Aug 11 2003, 09:34:05) [MSC v.1200 32 bit
(Intel)]'

The problem persists in pydoc.py version 1.90 from CVS.

The reason for such behaviour is a call to global (in
module scope) function doc() at line 1628 in pydoc.py 1.90.
which doesn't care about Helper.input Helper.output
settings.
msg82047 - (view) Author: Daniel Diniz (ajaksu2) (Python triager) Date: 2009-02-14 13:53
Confirmed. Is it relevant?
msg122002 - (view) Author: Kevin Le (bkad) Date: 2010-11-21 22:03
This patch redirects output from Helper.help to whatever output stream is passed to the Helper constructor. If no output stream is specified, the fault behavior is to pass the output to the OS pager.
msg122004 - (view) Author: Kevin Le (bkad) Date: 2010-11-21 22:31
Created a rietveld review
http://codereview.appspot.com/3202042
msg122009 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010-11-21 22:48
Thanks for the patch.  I commented there.
msg122599 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010-11-28 02:11
Patchset 3 on codereview looks good.  I’d like another review, so I’m adding the latest developers who touched pydoc.
msg123198 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-12-03 07:47
Looks good; committed in r86957.
msg127840 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-02-04 00:32
I just added another comment on Rietveld because I thought this was not fixed :)  Demo session:

  $ pydoc3.2 nonlocal  # will launch my pager, then print to stdout
  
  Related help topics: global, NAMESPACES

Kevin Le, would you like to write a failing test to confirm my bug?
msg128199 - (view) Author: Kevin Le (bkad) Date: 2011-02-08 23:24
confirmed, I'll take a closer look
msg190051 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2013-05-26 02:59
One commit already so presumably not too much effort needed to close this one.
msg322131 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2018-07-22 05:12
I just noticed the same bug described by Éric in msg127840. PR 8390 should fix it. Unfortunately, it wasn't easy to create a test case, so I skipped that part. I'm open to suggestions if you have an idea on how to write a simple test that reproduces the bug.

Éric, could you confirm that the attached PR fixes the bug?
msg322173 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2018-07-23 03:08
Patch works!
msg322175 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2018-07-23 05:37
New changeset d04f46c59f1d07d9bcc0ba910741296ac88d370d by Berker Peksag in branch 'master':
bpo-940286: Fix pydoc to show cross refs correctly (GH-8390)
https://github.com/python/cpython/commit/d04f46c59f1d07d9bcc0ba910741296ac88d370d
msg322183 - (view) Author: miss-islington (miss-islington) Date: 2018-07-23 06:51
New changeset e9e6495eedd7fb588964ffa50e8bf2c5ce9c6051 by Miss Islington (bot) in branch '3.6':
bpo-940286: Fix pydoc to show cross refs correctly (GH-8390)
https://github.com/python/cpython/commit/e9e6495eedd7fb588964ffa50e8bf2c5ce9c6051
msg322184 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2018-07-23 06:51
New changeset 14f58f0ff823ba71e3f21803c509d348626b6089 by Berker Peksag (Miss Islington (bot)) in branch '3.7':
bpo-940286: Fix pydoc to show cross refs correctly (GH-8390)
https://github.com/python/cpython/commit/14f58f0ff823ba71e3f21803c509d348626b6089
History
Date User Action Args
2018-07-23 06:53:53berker.peksagsetstatus: open -> closed
stage: patch review -> resolved
2018-07-23 06:51:57berker.peksagsetmessages: + msg322184
2018-07-23 06:51:30miss-islingtonsetnosy: + miss-islington
messages: + msg322183
2018-07-23 05:38:57miss-islingtonsetpull_requests: + pull_request7929
2018-07-23 05:37:59miss-islingtonsetpull_requests: + pull_request7928
2018-07-23 05:37:50berker.peksagsetmessages: + msg322175
2018-07-23 03:08:54eric.araujosetassignee: eric.araujo -> berker.peksag
messages: + msg322173
2018-07-22 05:12:18berker.peksagsetversions: + Python 3.6, Python 3.7, Python 3.8, - Python 3.1, Python 2.7, Python 3.2
nosy: + berker.peksag

messages: + msg322131

keywords: - easy
2018-07-22 05:05:47berker.peksagsetpull_requests: + pull_request7918
2014-02-03 17:13:36BreamoreBoysetnosy: - BreamoreBoy
2013-05-26 02:59:01BreamoreBoysetnosy: + BreamoreBoy
messages: + msg190051
2011-06-14 15:46:02eric.araujolinkissue10457 superseder
2011-02-08 23:24:43bkadsetnosy: georg.brandl, belopolsky, ajaksu2, tws5, eric.araujo, bkad
messages: + msg128199
2011-02-06 18:48:23eric.araujosetstatus: closed -> open
nosy: georg.brandl, belopolsky, ajaksu2, tws5, eric.araujo, bkad
2011-02-04 00:32:46eric.araujosetnosy: georg.brandl, belopolsky, ajaksu2, tws5, eric.araujo, bkad
messages: + msg127840
2010-12-03 07:47:28georg.brandlsetstatus: open -> closed
resolution: fixed
messages: + msg123198
2010-11-28 02:11:16eric.araujosetnosy: + georg.brandl, belopolsky
messages: + msg122599
2010-11-28 01:59:47eric.araujosetassignee: eric.araujo
versions: - Python 2.6
2010-11-22 13:37:15eric.araujosetstage: test needed -> patch review
versions: + Python 3.1, Python 2.7
2010-11-21 22:48:22eric.araujosetnosy: + eric.araujo
messages: + msg122009
2010-11-21 22:31:01bkadsetmessages: + msg122004
2010-11-21 22:03:44bkadsetfiles: + helpredirect.diff
versions: + Python 3.2
nosy: + bkad

messages: + msg122002

keywords: + patch
2009-04-22 17:16:39ajaksu2setkeywords: + easy
stage: test needed
2009-02-14 13:53:53ajaksu2settype: behavior
messages: + msg82047
nosy: + ajaksu2
versions: + Python 2.6, - Python 2.3
2004-04-22 20:11:10tws5create