summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-06-08 03:14:26 (GMT)
committerBenjamin Peterson <benjamin@python.org>2014-06-08 03:14:26 (GMT)
commit75a55c32759c66cac479e6b9faf10e836e00f0d6 (patch)
tree6b1440a33c8688e029dd9cbcf524ee5ab4f49ae2
parent7e1eb5c713c6b14e5c71155f206d37cc16541300 (diff)
downloadcpython-75a55c32759c66cac479e6b9faf10e836e00f0d6.zip
cpython-75a55c32759c66cac479e6b9faf10e836e00f0d6.tar.gz
cpython-75a55c32759c66cac479e6b9faf10e836e00f0d6.tar.bz2
make sure the builtin help function doesn't fail when sys.stdin is not a valid file (closes #11709)
Original patch by Amaury Forgeot d'Arc with a test by bdettmer.
-rwxr-xr-xLib/pydoc.py2
-rw-r--r--Lib/test/test_pydoc.py8
-rw-r--r--Misc/NEWS3
3 files changed, 13 insertions, 0 deletions
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index 254fe40..218fd30 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -1377,6 +1377,8 @@ def getpager():
"""Decide what method to use for paging through text."""
if type(sys.stdout) is not types.FileType:
return plainpager
+ if not hasattr(sys.stdin, "isatty"):
+ return plainpager
if not sys.stdin.isatty() or not sys.stdout.isatty():
return plainpager
if 'PAGER' in os.environ:
diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py
index 7ff8d6d..763c319 100644
--- a/Lib/test/test_pydoc.py
+++ b/Lib/test/test_pydoc.py
@@ -333,6 +333,14 @@ class PydocDocTest(unittest.TestCase):
result, doc_loc = get_pydoc_text(xml.etree)
self.assertEqual(doc_loc, "", "MODULE DOCS incorrectly includes a link")
+ def test_getpager_with_stdin_none(self):
+ previous_stdin = sys.stdin
+ try:
+ sys.stdin = None
+ pydoc.getpager() # Shouldn't fail.
+ finally:
+ sys.stdin = previous_stdin
+
def test_non_str_name(self):
# issue14638
# Treat illegal (non-str) name like no name
diff --git a/Misc/NEWS b/Misc/NEWS
index 155811e..e3827bb 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -28,6 +28,9 @@ Library
- Issue #21304: Backport the key derivation function hashlib.pbkdf2_hmac from
Python 3 per PEP 466.
+- Issue #11709: Fix the pydoc.help function to not fail when sys.stdin is not a
+ valid file.
+
- Issue #13223: Fix pydoc.writedoc so that the HTML documentation for methods
that use 'self' in the example code is generated correctly.