Completed
Push — master ( 0ab0c7...4b8024 )
by Max
03:55 queued 58s
created

structured_data._pep_570_when.pep_570_when()   A

Complexity

Conditions 1

Size

Total Lines 18
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 13
nop 1
dl 0
loc 18
rs 9.75
c 0
b 0
f 0
1
import functools
2
import inspect
3
4
5
def pep_570_when(func):
6
    signature = inspect.signature(func)
7
    non_kwargs_only = dict(signature.parameters)
8
    kwargs = non_kwargs_only.pop(tuple(non_kwargs_only)[-1])
9
10
    parameters = [
11
        param.replace(kind=inspect.Parameter.POSITIONAL_ONLY)
12
        for param in non_kwargs_only.values()
13
    ]
14
15
    parameters.append(kwargs.replace(kind=inspect.Parameter.VAR_KEYWORD))
16
17
    @functools.wraps(func)
18
    def wrapped(*args, **kwargs):
19
        return func(*args, kwargs)
20
21
    wrapped.__signature__ = signature.replace(parameters=parameters)
22
    return wrapped
23