[Python-checkins] cpython (2.7): Make “pydoc somebuiltin.somemethod” work (#8887)

eric.araujo python-checkins at python.org
Fri Jul 29 17:36:32 CEST 2011


http://hg.python.org/cpython/rev/68df566cbf92
changeset: 71599:68df566cbf92
branch: 2.7
user: Éric Araujo <merwok at netwok.org>
date: Fri Jul 29 17:34:35 2011 +0200
summary:
 Make “pydoc somebuiltin.somemethod” work (#8887)
files:
 Lib/pydoc.py | 13 +++++++------
 Lib/test/test_pydoc.py | 21 +++++++++++++++++++--
 Misc/NEWS | 3 +++
 3 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -1454,13 +1454,14 @@
 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
 
diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py
--- a/Lib/test/test_pydoc.py
+++ b/Lib/test/test_pydoc.py
@@ -1,8 +1,8 @@
+import os
 import sys
-import os
-import os.path
 import difflib
 import subprocess
+import __builtin__
 import re
 import pydoc
 import inspect
@@ -357,6 +357,23 @@
 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,
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -37,6 +37,9 @@
 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
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /