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

structured_data._pep_570_when   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 16
dl 0
loc 23
rs 10
c 0
b 0
f 0
wmc 1

1 Function

Rating   Name   Duplication   Size   Complexity  
A pep_570_when() 0 18 1
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