mirror of
https://github.com/python/cpython.git
synced 2025-09-18 06:30:38 +00:00
Make “pydoc somebuiltin.somemethod” work (#8887)
This commit is contained in:
parent
158d7696f3
commit
e64e51bfa7
3 changed files with 28 additions and 6 deletions
13
Lib/pydoc.py
13
Lib/pydoc.py
|
@ -1482,13 +1482,14 @@ def locate(path, forceload=0):
|
||||||
else: break
|
else: break
|
||||||
if module:
|
if module:
|
||||||
object = module
|
object = module
|
||||||
for part in parts[n:]:
|
|
||||||
try: object = getattr(object, part)
|
|
||||||
except AttributeError: return None
|
|
||||||
return object
|
|
||||||
else:
|
else:
|
||||||
if hasattr(builtins, path):
|
object = builtins
|
||||||
return getattr(builtins, path)
|
for part in parts[n:]:
|
||||||
|
try:
|
||||||
|
object = getattr(object, part)
|
||||||
|
except AttributeError:
|
||||||
|
return None
|
||||||
|
return object
|
||||||
|
|
||||||
# --------------------------------------- interactive interpreter interface
|
# --------------------------------------- interactive interpreter interface
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import builtins
|
||||||
import difflib
|
import difflib
|
||||||
import inspect
|
import inspect
|
||||||
import pydoc
|
import pydoc
|
||||||
|
@ -419,6 +420,23 @@ class TestDescriptions(unittest.TestCase):
|
||||||
expected = 'C in module %s object' % __name__
|
expected = 'C in module %s object' % __name__
|
||||||
self.assertIn(expected, pydoc.render_doc(c))
|
self.assertIn(expected, pydoc.render_doc(c))
|
||||||
|
|
||||||
|
def test_builtin(self):
|
||||||
|
for name in ('str', 'str.translate', 'builtins.str',
|
||||||
|
'builtins.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 ('notbuiltins', 'strrr', 'strr.translate',
|
||||||
|
'str.trrrranslate', 'builtins.strrr',
|
||||||
|
'builtins.str.trrranslate'):
|
||||||
|
self.assertIsNone(pydoc.locate(name))
|
||||||
|
self.assertRaises(ImportError, pydoc.render_doc, name)
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(threading, 'Threading required for this test.')
|
@unittest.skipUnless(threading, 'Threading required for this test.')
|
||||||
class PydocServerTest(unittest.TestCase):
|
class PydocServerTest(unittest.TestCase):
|
||||||
|
|
|
@ -41,6 +41,9 @@ Core and Builtins
|
||||||
Library
|
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 #12603: Fix pydoc.synopsis() on files with non-negative st_mtime.
|
||||||
|
|
||||||
- Issue #12514: Use try/finally to assure the timeit module restores garbage
|
- Issue #12514: Use try/finally to assure the timeit module restores garbage
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue