""" Context Member Model for EmotionMirror application. This module defines the ContextMember class that represents a member (person) in a group analysis context. """ from typing import Dict, Any, Optional from datetime import datetime class ContextMember: """ Represents a member (person) in a group analysis context. """ def __init__( self, member_id: str, name: Optional[str] = None, face_data: Optional[Dict[str, Any]] = None, emotion_data: Optional[Dict[str, float]] = None, metadata: Optional[Dict[str, Any]] = None ): """ Initialize a context member. Args: member_id: Unique identifier for the member name: Name of the person if known face_data: Face detection data including coordinates, etc. emotion_data: Emotion analysis results metadata: Additional member metadata """ self.member_id = member_id self.name = name or "Unknown" self.face_data = face_data or {} self.emotion_data = emotion_data or {} self.metadata = metadata or {} self.created_at = datetime.now() def to_dict(self) -> Dict[str, Any]: """ Convert the context member to a dictionary for storage or serialization. Returns: Dictionary representation of the context member """ return { "member_id": self.member_id, "name": self.name, "face_data": self.face_data, "emotion_data": self.emotion_data, "metadata": self.metadata, "created_at": self.created_at.isoformat() } @classmethod def from_dict(cls, data: Dict[str, Any]) -> 'ContextMember': """ Create a context member from a dictionary. Args: data: Dictionary with context member data Returns: A ContextMember instance """ instance = cls( member_id=data.get("member_id", ""), name=data.get("name", "Unknown"), face_data=data.get("face_data", {}), emotion_data=data.get("emotion_data", {}), metadata=data.get("metadata", {}) ) if "created_at" in data: instance.created_at = datetime.fromisoformat(data["created_at"]) return instance