27 lines
860 B
Python
27 lines
860 B
Python
|
# -*- encoding: utf-8 -*-
|
||
|
|
||
|
from typing import Callable
|
||
|
from typing import List
|
||
|
|
||
|
|
||
|
class KeywordArgumentsDeleter(object):
|
||
|
def __init__(self, *kwargs_changes: List[str]):
|
||
|
for oldkw in kwargs_changes:
|
||
|
assert isinstance(oldkw, str)
|
||
|
self.kwargs_changes = kwargs_changes
|
||
|
|
||
|
def __call__(self, c):
|
||
|
return KeywordArgumentsDeleterConfigured(c, *self.kwargs_changes)
|
||
|
|
||
|
|
||
|
class KeywordArgumentsDeleterConfigured(object): # Don't instantiate this class manually
|
||
|
def __init__(self, clb: Callable, *kwargs_changes: List[str]):
|
||
|
self.kwargs_changes = kwargs_changes
|
||
|
self.callback = clb
|
||
|
|
||
|
def __call__(self, *args, **kwargs):
|
||
|
newkwargs = kwargs.copy()
|
||
|
for k in self.kwargs_changes:
|
||
|
if k in newkwargs:
|
||
|
del newkwargs[k]
|
||
|
return self.callback(*args, **newkwargs)
|