Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Lib/pydoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -1790,7 +1790,10 @@ def doc(thing, title='Python Library Documentation: %s', forceload=0,
raise
print(exc)
else:
output.write(render_doc(thing, title, forceload, plaintext))
try:
output.write(render_doc(thing, title, forceload, plaintext))
except ImportError as exc:
output.write(str(exc))

def writedoc(thing, forceload=0):
"""Write HTML documentation to a file in the current directory."""
Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_pydoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,13 @@ def test_builtin_on_metaclasses(self):
# Testing that the subclasses section does not appear
self.assertNotIn('Built-in subclasses', text)

def test_fail_help_output_redirect(self):
with StringIO() as buf:
helper = pydoc.Helper(output=buf)
helper.help("abd")
expected = missing_pattern % "abd"
self.assertEqual(expected, buf.getvalue().strip().replace('\n', os.linesep))

@unittest.skipIf(hasattr(sys, 'gettrace') and sys.gettrace(),
'trace function introduces __locals__ unexpectedly')
@requires_docstrings
Expand Down