Merge pull request #2354 from komoto48g/introspection

Fix wx.py.shell.Shell calltip
This commit is contained in:
Scott Talbert
2023-03-03 17:30:13 -05:00
committed by GitHub

View File

@@ -3,6 +3,7 @@ things like call tips and command auto completion."""
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
import re
import sys
import inspect
import tokenize
@@ -175,8 +176,11 @@ def getCallTip(command='', locals=None):
pass
elif inspect.isfunction(obj):
# tip1 is a string like: "getCallTip(command='', locals=None)"
argspec = inspect.getargspec(obj) if not PY3 else inspect.getfullargspec(obj)
argspec = inspect.formatargspec(*argspec)
try:
argspec = str(inspect.signature(obj)) # PY35 or later
except AttributeError:
argspec = inspect.getargspec(obj) if not PY3 else inspect.getfullargspec(obj)
argspec = inspect.formatargspec(*argspec)
if dropSelf:
# The first parameter to a method is a reference to an
# instance, usually coded as "self", and is usually passed
@@ -211,7 +215,11 @@ def getCallTip(command='', locals=None):
tip = '%s%s\n\n%s' % (tip1, tip2, tip3)
else:
tip = tip1
calltip = (name, argspec[1:-1], tip.strip())
# Extract argspec from the signature e.g., (x, /, *, ...) -> int
m = re.search(r'\((.*)\)', argspec)
if m:
argspec = m.group(1)
calltip = (name, argspec, tip.strip())
return calltip
def getRoot(command, terminator=None):