Merge pull request #71 from ryanpetrello/master
Simplify our argspec compatability shim.
This commit is contained in:
commit
18d98d4a80
|
@ -25,32 +25,8 @@ def getargspec(func):
|
||||||
if sys.version_info < (3, 5):
|
if sys.version_info < (3, 5):
|
||||||
return inspect.getargspec(func)
|
return inspect.getargspec(func)
|
||||||
|
|
||||||
sig = inspect._signature_from_callable(func, follow_wrapper_chains=False,
|
|
||||||
skip_bound_arg=False,
|
|
||||||
sigcls=inspect.Signature)
|
|
||||||
args = [
|
|
||||||
p.name for p in sig.parameters.values()
|
|
||||||
if p.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD
|
|
||||||
]
|
|
||||||
varargs = [
|
|
||||||
p.name for p in sig.parameters.values()
|
|
||||||
if p.kind == inspect.Parameter.VAR_POSITIONAL
|
|
||||||
]
|
|
||||||
varargs = varargs[0] if varargs else None
|
|
||||||
varkw = [
|
|
||||||
p.name for p in sig.parameters.values()
|
|
||||||
if p.kind == inspect.Parameter.VAR_KEYWORD
|
|
||||||
]
|
|
||||||
varkw = varkw[0] if varkw else None
|
|
||||||
defaults = [
|
|
||||||
p.default for p in sig.parameters.values()
|
|
||||||
if (p.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD and
|
|
||||||
p.default is not p.empty)
|
|
||||||
] or None
|
|
||||||
if defaults is not None:
|
|
||||||
defaults = tuple(defaults)
|
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
ArgSpec = namedtuple('ArgSpec', 'args varargs keywords defaults')
|
ArgSpec = namedtuple('ArgSpec', 'args varargs keywords defaults')
|
||||||
|
args, varargs, keywords, defaults = inspect.getfullargspec(func)[:4]
|
||||||
return ArgSpec(args, varargs, varkw, defaults)
|
return ArgSpec(args=args, varargs=varargs, keywords=keywords,
|
||||||
|
defaults=defaults)
|
||||||
|
|
Loading…
Reference in New Issue