summaryrefslogtreecommitdiff
path: root/modules/responses/responses.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/responses/responses.py')
-rw-r--r--modules/responses/responses.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/modules/responses/responses.py b/modules/responses/responses.py
new file mode 100644
index 0000000..1836deb
--- /dev/null
+++ b/modules/responses/responses.py
@@ -0,0 +1,37 @@
+from dataclasses import dataclass, field
+from typing import List, Dict, Any
+
+@dataclass(frozen=True)
+class ResponseData:
+ sentence_texts: List[str]
+
+@dataclass(frozen=True)
+class Response:
+ name: str
+ data: List[ResponseData] = field(default_factory=list)
+
+@dataclass(frozen=True)
+class Responses:
+ responses: Dict[str, Response]
+
+ @staticmethod
+ def from_dict(input_dict: Dict[str, Any]) -> "Responses":
+ # responses:
+ # ResponseName:
+ # data:
+ # - sentences:
+ # - "<sentence>"
+ return Responses(
+ responses={
+ response_name: Response(
+ name=response_name,
+ data=[
+ ResponseData(
+ sentence_texts=data_dict["sentences"],
+ )
+ for data_dict in response_dict["data"]
+ ],
+ )
+ for response_name, response_dict in input_dict["responses"].items()
+ },
+ ) \ No newline at end of file