]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-35641: IDLE - format calltip properly when no docstring (GH-11415)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 3 Jan 2019 09:44:47 +0000 (01:44 -0800)
committerGitHub <noreply@github.com>
Thu, 3 Jan 2019 09:44:47 +0000 (01:44 -0800)
(cherry picked from commit ab54b9a130c88f708077c2ef6c4963b632c132b3)

Co-authored-by: Emmanuel Arias <emmanuelarias30@gmail.com>
Lib/idlelib/calltip.py
Lib/idlelib/idle_test/test_calltip.py
Misc/ACKS
Misc/NEWS.d/next/Library/2019-01-02-22-15-01.bpo-35641.QEaANl.rst [new file with mode: 0644]

index 758569a45fdf5810b187398d64a4fe9e2d86202e..2a9a131ed96b3c74d8f852d0678cc1c1782d4cfb 100644 (file)
@@ -167,7 +167,7 @@ def get_argspec(ob):
             if len(line) > _MAX_COLS:
                 line = line[: _MAX_COLS - 3] + '...'
             lines.append(line)
-        argspec = '\n'.join(lines)
+    argspec = '\n'.join(lines)
     if not argspec:
         argspec = _default_callable_argspec
     return argspec
index 0698d4f8b99ea993091ca3ee357054ceb800c8b1..833351bd799601de55c6c445c637a2f929ed76db 100644 (file)
@@ -99,6 +99,35 @@ non-overlapping occurrences o...''')
     drop_whitespace=True, break_on_hyphens=True, tabsize=8, *, max_lines=None,
     placeholder=' [...]')''')
 
+    def test_properly_formated(self):
+        def foo(s='a'*100):
+            pass
+
+        def bar(s='a'*100):
+            """Hello Guido"""
+            pass
+
+        def baz(s='a'*100, z='b'*100):
+            pass
+
+        indent = calltip._INDENT
+
+        str_foo = "(s='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"\
+                  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" + indent + "aaaaaaaaa"\
+                  "aaaaaaaaaa')"
+        str_bar = "(s='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"\
+                  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" + indent + "aaaaaaaaa"\
+                  "aaaaaaaaaa')\nHello Guido"
+        str_baz = "(s='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"\
+                  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" + indent + "aaaaaaaaa"\
+                  "aaaaaaaaaa', z='bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"\
+                  "bbbbbbbbbbbbbbbbb\n" + indent + "bbbbbbbbbbbbbbbbbbbbbb"\
+                  "bbbbbbbbbbbbbbbbbbbbbb')"
+
+        self.assertEqual(calltip.get_argspec(foo), str_foo)
+        self.assertEqual(calltip.get_argspec(bar), str_bar)
+        self.assertEqual(calltip.get_argspec(baz), str_baz)
+
     def test_docline_truncation(self):
         def f(): pass
         f.__doc__ = 'a'*300
index f384084912881cc2dfee75bb7168a9ea97ef45e9..027e013072258235d317b814aab48add2deb5d1d 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -60,6 +60,7 @@ Heidi Annexstad
 Ramchandra Apte
 Éric Araujo
 Alexandru Ardelean
+Emmanuel Arias
 Alicia Arlen
 Jeffrey Armstrong
 Jason Asbahr
diff --git a/Misc/NEWS.d/next/Library/2019-01-02-22-15-01.bpo-35641.QEaANl.rst b/Misc/NEWS.d/next/Library/2019-01-02-22-15-01.bpo-35641.QEaANl.rst
new file mode 100644 (file)
index 0000000..5abba69
--- /dev/null
@@ -0,0 +1 @@
+Proper format `calltip` when the function has no docstring.