mirror of https://github.com/python/cpython
Merge fix for #8887 from 3.2
This commit is contained in:
commit
c473f8ceac
13
Lib/pydoc.py
13
Lib/pydoc.py
|
@ -1479,13 +1479,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(builtins, path):
|
||||
return getattr(builtins, path)
|
||||
object = builtins
|
||||
for part in parts[n:]:
|
||||
try:
|
||||
object = getattr(object, part)
|
||||
except AttributeError:
|
||||
return None
|
||||
return object
|
||||
|
||||
# --------------------------------------- interactive interpreter interface
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import os
|
||||
import sys
|
||||
import builtins
|
||||
import difflib
|
||||
import inspect
|
||||
import pydoc
|
||||
|
@ -425,6 +426,23 @@ class TestDescriptions(unittest.TestCase):
|
|||
expected = 'C in module %s object' % __name__
|
||||
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.')
|
||||
class PydocServerTest(unittest.TestCase):
|
||||
|
|
|
@ -244,6 +244,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 #10968: Remove indirection in threading. The public names (Thread,
|
||||
Condition, etc.) used to be factory functions returning instances of hidden
|
||||
classes (_Thread, _Condition, etc.), because (if Guido recalls correctly) this
|
||||
|
|
Loading…
Reference in New Issue