Make “pydoc somebuiltin.somemethod” work (#8887)

This commit is contained in:
Éric Araujo 2011-07-29 17:34:35 +02:00
parent 271208e225
commit 9a528306b9
3 changed files with 29 additions and 8 deletions

View File

@ -1454,13 +1454,14 @@ def locate(path, forceload=0):
else: break
if module:
object = module
for part in parts[n:]:
try: object = getattr(object, part)
except AttributeError: return None
return object
else:
if hasattr(__builtin__, path):
return getattr(__builtin__, path)
object = __builtin__
for part in parts[n:]:
try:
object = getattr(object, part)
except AttributeError:
return None
return object
# --------------------------------------- interactive interpreter interface

View File

@ -1,8 +1,8 @@
import sys
import os
import os.path
import sys
import difflib
import subprocess
import __builtin__
import re
import pydoc
import inspect
@ -357,6 +357,23 @@ class TestHelper(unittest.TestCase):
self.assertEqual(sorted(pydoc.Helper.keywords),
sorted(keyword.kwlist))
def test_builtin(self):
for name in ('str', 'str.translate', '__builtin__.str',
'__builtin__.str.translate'):
# test low-level function
self.assertIsNotNone(pydoc.locate(name))
# test high-level function
try:
pydoc.render_doc(name)
except ImportError:
self.fail('finding the doc of {!r} failed'.format(o))
for name in ('not__builtin__', 'strrr', 'strr.translate',
'str.trrrranslate', '__builtin__.strrr',
'__builtin__.str.trrranslate'):
self.assertIsNone(pydoc.locate(name))
self.assertRaises(ImportError, pydoc.render_doc, name)
def test_main():
test.test_support.run_unittest(PyDocDocTest,

View File

@ -37,6 +37,9 @@ Core and Builtins
Library
-------
- Issue #8887: "pydoc somebuiltin.somemethod" (or help('somebuiltin.somemethod')
in Python code) now finds the doc of the method.
- Issue #12603: Fix pydoc.synopsis() on files with non-negative st_mtime.
- Issue #12514: Use try/finally to assure the timeit module restores garbage