Skip to content
Snippets Groups Projects
Unverified Commit c076d488 authored by Miss Islington (bot)'s avatar Miss Islington (bot) Committed by GitHub
Browse files

bpo-42416: Use inspect.getdoc for IDLE calltips (GH-23416)



Inspect.getdoc(ob) sometimes gets docstrings when ob.__doc__ is None.
(cherry picked from commit 7ddbaa7a)

Co-authored-by: default avatarTerry Jan Reedy <tjreedy@udel.edu>
parent 5f463e50
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,9 @@ Released on 2020-12-??
======================================
bpo-42416: Get docstrings for IDLE calltips more often
by using inspect.getdoc.
bpo-33987: Mostly finish using ttk widgets, mainly for editor,
settings, and searches. Some patches by Mark Roseman.
......
......@@ -165,6 +165,7 @@ def get_argspec(ob):
ob_call = ob.__call__
except BaseException: # Buggy user object could raise anything.
return '' # No popup for non-callables.
# For Get_argspecTest.test_buggy_getattr_class, CallA() & CallB().
fob = ob_call if isinstance(ob_call, types.MethodType) else ob
# Initialize argspec and wrap it to get lines.
......@@ -185,10 +186,7 @@ def get_argspec(ob):
if len(argspec) > _MAX_COLS else [argspec] if argspec else [])
# Augment lines from docstring, if any, and join to get argspec.
if isinstance(ob_call, types.MethodType):
doc = ob_call.__doc__
else:
doc = getattr(ob, "__doc__", "")
doc = inspect.getdoc(ob)
if doc:
for line in doc.split('\n', _MAX_LINES)[:_MAX_LINES]:
line = line.strip()
......
......@@ -99,7 +99,12 @@ def test_signature_wrap(self):
(width=70, initial_indent='', subsequent_indent='', expand_tabs=True,
replace_whitespace=True, fix_sentence_endings=False, break_long_words=True,
drop_whitespace=True, break_on_hyphens=True, tabsize=8, *, max_lines=None,
placeholder=' [...]')''')
placeholder=' [...]')
Object for wrapping/filling text. The public interface consists of
the wrap() and fill() methods; the other methods are just there for
subclasses to override in order to tweak the default behaviour.
If you want to completely replace the main wrapping algorithm,
you\'ll probably have to override _wrap_chunks().''')
def test_properly_formated(self):
......@@ -241,7 +246,7 @@ class Type(type): # Type() requires 3 type args, returns class.
__class__ = property({}.__getitem__, {}.__setitem__)
class Object(metaclass=Type):
__slots__ = '__class__'
for meth, mtip in ((Type, default_tip), (Object, default_tip),
for meth, mtip in ((Type, get_spec(type)), (Object, default_tip),
(Object(), '')):
with self.subTest(meth=meth, mtip=mtip):
self.assertEqual(get_spec(meth), mtip)
......
Get docstrings for IDLE calltips more often by using inspect.getdoc.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment