furmeet-bot/webproj/kwargsFromArgs.py

28 lines
933 B
Python

# -*- encoding: utf-8 -*-
from typing import Callable
from typing import List
from typing import Any
class KeywordArgumentsFromArguments(object):
def __init__(self, *kwargs_changes: List[str]):
for oldkw in kwargs_changes:
assert isinstance(oldkw, str) or oldkw is None
self.kwargs_changes = kwargs_changes
def __call__(self, c):
return KeywordArgumentsFromArgumentsConfigured(c, *self.kwargs_changes)
class KeywordArgumentsFromArgumentsConfigured(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 i, kw in enumerate(self.kwargs_changes):
if kw is not None:
newkwargs[kw] = args[i]
return self.callback(**newkwargs)