[Python-checkins] cpython (merge 3.6 -> default): Issue #27989: Tweak inspect.formatannotation() to improve pydoc rendering of
guido.van.rossum
python-checkins at python.org
Sat Oct 22 10:58:08 EDT 2016
https://hg.python.org/cpython/rev/62127e60e7b0
changeset: 104646:62127e60e7b0
parent: 104643:4b6e6a77e501
parent: 104645:3937502c149d
user: Guido van Rossum <guido at python.org>
date: Sat Oct 22 07:57:24 2016 -0700
summary:
Issue #27989: Tweak inspect.formatannotation() to improve pydoc rendering of function annotations. Ivan L. (3.6->3.7)
files:
Lib/inspect.py | 2 ++
Lib/test/test_pydoc.py | 13 +++++++++++++
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/Lib/inspect.py b/Lib/inspect.py
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -1140,6 +1140,8 @@
return ArgInfo(args, varargs, varkw, frame.f_locals)
def formatannotation(annotation, base_module=None):
+ if getattr(annotation, '__module__', None) == 'typing':
+ return repr(annotation).replace('typing.', '')
if isinstance(annotation, type):
if annotation.__module__ in ('builtins', base_module):
return annotation.__qualname__
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
@@ -15,6 +15,7 @@
import test.support
import time
import types
+import typing
import unittest
import urllib.parse
import xml.etree
@@ -820,6 +821,18 @@
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],
+ x: int) -> typing.Iterator[typing.Tuple[int, typing.Any]]:
+ ...
+ T = typing.TypeVar('T')
+ class C(typing.Generic[T], typing.Mapping[int, str]): ...
+ self.assertEqual(pydoc.render_doc(foo).splitlines()[-1],
+ 'f\x08fo\x08oo\x08o(data:List[Any], x:int)'
+ ' -> Iterator[Tuple[int, Any]]')
+ self.assertEqual(pydoc.render_doc(C).splitlines()[2],
+ 'class C\x08C(typing.Mapping)')
+
def test_builtin(self):
for name in ('str', 'str.translate', 'builtins.str',
'builtins.str.translate'):
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list