fix print_signatures.py when defaults=None, test=develop, test=document_fix (#23784)

revert-23830-2.0-beta
Zeng Jinle 6 years ago committed by GitHub
parent 532079a222
commit 96add8a469
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -53,19 +53,23 @@ def get_functools_partial_spec(func):
return '{}(args={}, keywords={})'.format(func_str, args, keywords)
def format_spec_doc(spec, doc=None):
def format_spec(spec):
args = spec.args
varargs = spec.varargs
keywords = spec.keywords
defaults = list(spec.defaults)
for idx, item in enumerate(defaults):
if not isinstance(item, functools.partial):
continue
defaults = spec.defaults
if defaults is not None:
defaults = list(defaults)
for idx, item in enumerate(defaults):
if not isinstance(item, functools.partial):
continue
defaults[idx] = get_functools_partial_spec(item)
defaults[idx] = get_functools_partial_spec(item)
defaults = tuple(defaults)
return 'ArgSpec(args={}, varargs={}, keywords={}, defaults={})'.format(
args, varargs, keywords, tuple(defaults))
args, varargs, keywords, defaults)
def queue_dict(member, cur_name):
@ -78,12 +82,18 @@ def queue_dict(member, cur_name):
args = member.__module__ + "." + member.__name__
else:
try:
args = format_spec_doc(inspect.getargspec(member))
args = inspect.getargspec(member)
has_type_error = False
except TypeError: # special for PyBind method
args = " ".join([
line.strip() for line in pydoc.render_doc(member).split('\n')
if "->" in line
])
has_type_error = True
if not has_type_error:
args = format_spec(args)
member_dict[cur_name] = "({}, ('document', '{}'))".format(args, doc_md5)

Loading…
Cancel
Save