diff options
author | Éric Araujo <merwok@netwok.org> | 2011-07-29 15:38:23 (GMT) |
---|---|---|
committer | Éric Araujo <merwok@netwok.org> | 2011-07-29 15:38:23 (GMT) |
commit | c473f8ceac03338657cb30314b4b1c8733b17ac9 (patch) | |
tree | 40c4a0a2a91119013a44ef3e76d9247cae5a1292 | |
parent | 947fed42b8f1eb6c1b7cc9dec4e51db589d76bd8 (diff) | |
parent | e64e51bfa78cd8ec046e187a3214cd9d477fc65c (diff) | |
download | cpython-c473f8ceac03338657cb30314b4b1c8733b17ac9.zip cpython-c473f8ceac03338657cb30314b4b1c8733b17ac9.tar.gz cpython-c473f8ceac03338657cb30314b4b1c8733b17ac9.tar.bz2 |
Merge fix for #8887 from 3.2
-rwxr-xr-x | Lib/pydoc.py | 13 | ||||
-rw-r--r-- | Lib/test/test_pydoc.py | 18 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 28 insertions, 6 deletions
diff --git a/Lib/pydoc.py b/Lib/pydoc.py index ebd8a61..f0b0200 100755 --- a/Lib/pydoc.py +++ b/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 diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py index 7591303..ae56996 100644 --- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -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 |