cpython: 3937502c149d (original) (raw)
Mercurial > cpython
changeset 104645:3937502c149d 3.6
Issue #27989: Tweak inspect.formatannotation() to improve pydoc rendering of function annotations. Ivan L. (3.5->3.6) [#27989]
Guido van Rossum guido@python.org | |
---|---|
date | Sat, 22 Oct 2016 07:56:58 -0700 |
parents | 05c3fbaa8fcf(current diff)dc030d15f80d(diff) |
children | 62127e60e7b0 cea983246919 |
files | Lib/inspect.py Lib/test/test_pydoc.py |
diffstat | 2 files changed, 15 insertions(+), 0 deletions(-)[+] [-] Lib/inspect.py 2 Lib/test/test_pydoc.py 13 |
line wrap: on
line diff
--- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -1140,6 +1140,8 @@ def getargvalues(frame): return ArgInfo(args, varargs, varkw, frame.f_locals) def formatannotation(annotation, base_module=None):
- if getattr(annotation, 'module', None) == 'typing':
if isinstance(annotation, type): if annotation.module in ('builtins', base_module): return annotation.qualnamereturn repr(annotation).replace('typing.', '')[](#l1.8)
--- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -15,6 +15,7 @@ import string import test.support import time import types +import typing import unittest import urllib.parse import xml.etree @@ -820,6 +821,18 @@ class TestDescriptions(unittest.TestCase expected = 'C in module %s object' % name self.assertIn(expected, pydoc.render_doc(c))
- def test_typing_pydoc(self):
def foo(data: typing.List[typing.Any],[](#l2.16)
x: int) -> typing.Iterator[typing.Tuple[int, typing.Any]]:[](#l2.17)
...[](#l2.18)
T = typing.TypeVar('T')[](#l2.19)
class C(typing.Generic[T], typing.Mapping[int, str]): ...[](#l2.20)
self.assertEqual(pydoc.render_doc(foo).splitlines()[-1],[](#l2.21)
'f\x08fo\x08oo\x08o(data:List[Any], x:int)'[](#l2.22)
' -> Iterator[Tuple[int, Any]]')[](#l2.23)
self.assertEqual(pydoc.render_doc(C).splitlines()[2],[](#l2.24)
'class C\x08C(typing.Mapping)')[](#l2.25)
+ def test_builtin(self): for name in ('str', 'str.translate', 'builtins.str', 'builtins.str.translate'):