@@ -20,11 +20,12 @@ class ExportMessageNode(BaseModel):
20
20
rank : int | None
21
21
synthetic : bool | None
22
22
model_name : str | None
23
+ emojis : dict [str , int ] | None
23
24
replies : list [ExportMessageNode ] | None
24
25
25
- @classmethod
26
- def prep_message_export (cls , message : Message ) -> ExportMessageNode :
27
- return cls (
26
+ @staticmethod
27
+ def prep_message_export (message : Message ) -> ExportMessageNode :
28
+ return ExportMessageNode (
28
29
message_id = str (message .id ),
29
30
parent_id = str (message .parent_id ) if message .parent_id else None ,
30
31
text = str (message .payload .payload .text ),
@@ -33,6 +34,7 @@ def prep_message_export(cls, message: Message) -> ExportMessageNode:
33
34
review_count = message .review_count ,
34
35
synthetic = message .synthetic ,
35
36
model_name = message .model_name ,
37
+ emojis = message .emojis ,
36
38
rank = message .rank ,
37
39
)
38
40
@@ -43,23 +45,20 @@ class ExportMessageTree(BaseModel):
43
45
44
46
45
47
def build_export_tree (message_tree_id : str , messages : list [Message ]) -> ExportMessageTree :
46
- export_tree = ExportMessageTree (message_tree_id = str (message_tree_id ))
47
- export_tree_data = [ExportMessageNode .prep_message_export (m ) for m in messages ]
48
+ export_messages = [ExportMessageNode .prep_message_export (m ) for m in messages ]
48
49
49
- message_parents = defaultdict (list )
50
- for message in export_tree_data :
51
- message_parents [message .parent_id ].append (message )
50
+ messages_by_parent = defaultdict (list )
51
+ for message in export_messages :
52
+ messages_by_parent [message .parent_id ].append (message )
52
53
53
- def build_tree (tree : dict , parent : Optional [str ], messages : list [Message ]):
54
- children = message_parents [parent ]
55
- tree .replies = children
54
+ def assign_replies (node : ExportMessageNode ) -> ExportMessageNode :
55
+ node .replies = messages_by_parent [node .message_id ]
56
+ for child in node .replies :
57
+ assign_replies (child )
58
+ return node
56
59
57
- for idx , child in enumerate (tree .replies ):
58
- build_tree (tree .replies [idx ], child .message_id , messages )
59
-
60
- build_tree (export_tree , None , export_tree_data )
61
-
62
- return export_tree
60
+ prompt = assign_replies (messages_by_parent [None ][0 ])
61
+ return ExportMessageTree (message_tree_id = str (message_tree_id ), prompt = prompt )
63
62
64
63
65
64
def write_trees_to_file (file , trees : list [ExportMessageTree ], use_compression : bool = True ) -> None :
0 commit comments