-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinspect_patch.py
More file actions
22 lines (18 loc) · 768 Bytes
/
Copy pathinspect_patch.py
File metadata and controls
22 lines (18 loc) · 768 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import inspect
import collections
if not hasattr(inspect, 'getargspec'):
def getargspec(func):
sig = inspect.signature(func)
args, varargs, keywords, defaults = [], None, None, []
for p in sig.parameters.values():
if p.kind in (p.POSITIONAL_ONLY, p.POSITIONAL_OR_KEYWORD):
args.append(p.name)
if p.default is not p.empty:
defaults.append(p.default)
elif p.kind == p.VAR_POSITIONAL:
varargs = p.name
elif p.kind == p.VAR_KEYWORD:
keywords = p.name
return collections.namedtuple('ArgSpec', 'args varargs keywords defaults')(
args, varargs, keywords, tuple(defaults) if defaults else None
)