[Python-checkins] bpo-32018: Fix inspect.signature repr to follow PEP 8 (#4408)

Yury Selivanov webhook-mailer at python.org
Wed Nov 15 13:31:07 EST 2017


https://github.com/python/cpython/commit/762b9571c9c8c6b036f1bf90140a1d030b3f9a01
commit: 762b9571c9c8c6b036f1bf90140a1d030b3f9a01
branch: master
author: Dong-hee Na <donghee.na92 at gmail.com>
committer: Yury Selivanov <yury at magic.io>
date: 2017-11-15T13:30:59-05:00
summary:

bpo-32018: Fix inspect.signature repr to follow PEP 8 (#4408)

files:
A Misc/NEWS.d/next/Library/2017-11-16-02-32-41.bpo-32018.YMQ7Q2.rst
M Lib/inspect.py
M Lib/test/test_inspect.py
M Lib/test/test_pydoc.py

diff --git a/Lib/inspect.py b/Lib/inspect.py
index 6d6fde9ee40..69f2b6209f6 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -2521,11 +2521,14 @@ def __str__(self):
 
         # Add annotation and default value
         if self._annotation is not _empty:
-            formatted = '{}:{}'.format(formatted,
+            formatted = '{}: {}'.format(formatted,
                                        formatannotation(self._annotation))
 
         if self._default is not _empty:
-            formatted = '{}={}'.format(formatted, repr(self._default))
+            if self._annotation is not _empty:
+                formatted = '{} = {}'.format(formatted, repr(self._default))
+            else:
+                formatted = '{}={}'.format(formatted, repr(self._default))
 
         if kind == _VAR_POSITIONAL:
             formatted = '*' + formatted
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index e64215d4677..13a86b12dd3 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -2875,12 +2875,12 @@ def test_signature_str(self):
         def foo(a:int=1, *, b, c=None, **kwargs) -> 42:
             pass
         self.assertEqual(str(inspect.signature(foo)),
-                         '(a:int=1, *, b, c=None, **kwargs) -> 42')
+                         '(a: int = 1, *, b, c=None, **kwargs) -> 42')
 
         def foo(a:int=1, *args, b, c=None, **kwargs) -> 42:
             pass
         self.assertEqual(str(inspect.signature(foo)),
-                         '(a:int=1, *args, b, c=None, **kwargs) -> 42')
+                         '(a: int = 1, *args, b, c=None, **kwargs) -> 42')
 
         def foo():
             pass
diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py
index 52830b49aea..2fa089320fd 100644
--- a/Lib/test/test_pydoc.py
+++ b/Lib/test/test_pydoc.py
@@ -824,7 +824,7 @@ def foo(data: typing.List[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)'
+                         '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)')
diff --git a/Misc/NEWS.d/next/Library/2017-11-16-02-32-41.bpo-32018.YMQ7Q2.rst b/Misc/NEWS.d/next/Library/2017-11-16-02-32-41.bpo-32018.YMQ7Q2.rst
new file mode 100644
index 00000000000..aa8a47cb382
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-11-16-02-32-41.bpo-32018.YMQ7Q2.rst
@@ -0,0 +1,2 @@
+inspect.signature should follow PEP 8, if the parameter has an annotation and a
+default value. Patch by Dong-hee Na.



More information about the Python-checkins mailing list