@dataclass
class AbstractAnnotation(ABC):
target: str
authors: list[str]
reviewers: list[str]
comment: str
reviewResult: EnumReviewResult
def to_json(self) -> dict:
return asdict(self, dict_factory=EnumReviewResult.to_json)
@staticmethod
def from_json(json: Any) -> AbstractAnnotation:
review_result = EnumReviewResult(json.get("reviewResult", ""))
return AbstractAnnotation(
json["target"],
json["authors"],
json["reviewers"],
json.get("comment", ""),
review_result,
)