Spaces:
Running
Running
import inspect | |
from typing import Any, Dict, List | |
class ProcessorMixin: | |
def __init__(self) -> None: | |
self._forward_parameter_names = inspect.signature(self.forward).parameters.keys() | |
self.output_names: List[str] = None | |
self.input_names: Dict[str, Any] = None | |
def __call__(self, *args, **kwargs) -> Any: | |
shallow_copy_kwargs = dict(kwargs.items()) | |
if self.input_names is not None: | |
for k, v in self.input_names.items(): | |
shallow_copy_kwargs[v] = shallow_copy_kwargs.pop(k) | |
acceptable_kwargs = {k: v for k, v in shallow_copy_kwargs.items() if k in self._forward_parameter_names} | |
return self.forward(*args, **acceptable_kwargs) | |
def forward(self, *args, **kwargs) -> Any: | |
raise NotImplementedError("ProcessorMixin::forward method should be implemented by the subclass.") | |