forked from BasedHardware/omi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfactory.py
More file actions
20 lines (14 loc) · 824 Bytes
/
Copy pathfactory.py
File metadata and controls
20 lines (14 loc) · 824 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from typing import Any, List, Mapping, Sequence, Union
from models.conversation import Conversation
def deserialize_conversation(data: Union[Conversation, Mapping[str, Any]]) -> Conversation:
"""Convert a raw dict (e.g. from Firestore) into a Conversation object.
If already a Conversation instance, returns it unchanged.
Construction goes through Conversation(**data) so __init__ side-effects
(plugins_results sync, processing_memory_id sync) are preserved.
"""
if not isinstance(data, Mapping):
return data
return Conversation(**data)
def deserialize_conversations(items: Sequence[Union[Conversation, Mapping[str, Any]]]) -> List[Conversation]:
"""Batch-deserialize a sequence of dicts or Conversation objects."""
return [deserialize_conversation(item) for item in items]