Spaces:
Runtime error
Runtime error
from abc import ABC, abstractmethod | |
from dataclasses import dataclass | |
from typing import Dict, Union, List | |
SLOT = Union[str, List[str], Dict[str, str]] | |
class Formatter(ABC): | |
slot: SLOT = "" | |
def apply(self, **kwargs) -> SLOT: ... | |
class EmptyFormatter(Formatter): | |
def apply(self, **kwargs) -> SLOT: | |
return self.slot | |
class StringFormatter(Formatter): | |
def apply(self, **kwargs) -> SLOT: | |
msg = "" | |
for name, value in kwargs.items(): | |
if value is None: | |
msg = self.slot.split(':')[0] + ":" | |
return msg | |
if not isinstance(value, str): | |
raise RuntimeError("Expected a string, got {}".format(value)) | |
msg = self.slot.replace("{{" + name + "}}", value, 1) | |
return msg | |