@classmethod
def _parse_kwargs(cls, template_kwargs):
    """
        "kwargs": [ {"key1": "value1"}, {"key2": "value2"} ]
        """
    kwargs = {}
    if not template_kwargs:
        return kwargs
    if not isinstance(template_kwargs, dict):
        raise TypeError(f'{template_kwargs.__name__} has to be a dict')
    for key, value in template_kwargs.items():
        if isinstance(value, (str, int, float, bool)):
            kwargs[key] = value
        elif value == 'kwargs':
            kwargs[key] = cls._parse_kwargs(value['kwargs'])
        elif isinstance(value, dict):
            kwargs[key] = cls._parse_dict(value)
        elif key == 'choices':
            continue
        else:
            raise NotImplementedError
    return kwargs
