Total Complexity | 3 |
Total Lines | 44 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | from dataclasses import dataclass |
||
2 | from typing import Any |
||
3 | from datetime import datetime |
||
4 | from models import ( |
||
5 | from_str, from_bool, from_datetime |
||
6 | ) |
||
7 | from models.user import User, user_from_dict |
||
8 | |||
9 | |||
10 | @dataclass |
||
11 | class ChatMessage: |
||
12 | id: str |
||
13 | user: User |
||
14 | bot: str |
||
15 | posted_at: datetime |
||
16 | message: str |
||
17 | message_plain: str |
||
18 | highlight: bool |
||
19 | is_bot: bool |
||
20 | is_system: bool |
||
21 | |||
22 | @staticmethod |
||
23 | def from_dict(obj: Any) -> 'ChatMessage': |
||
24 | if not isinstance(obj, dict): |
||
25 | return None |
||
26 | id = from_str(obj.get("id")) |
||
27 | user = user_from_dict(obj.get("user")) |
||
28 | bot = from_str(obj.get("bot")) |
||
29 | posted_at = from_datetime(obj.get("posted_at")) |
||
30 | message = from_str(obj.get("message")) |
||
31 | message_plain = from_str(obj.get("message_plain")) |
||
32 | highlight = from_bool(obj.get("highlight")) |
||
33 | is_bot = from_bool(obj.get("is_bot")) |
||
34 | is_system = from_bool(obj.get("is_system")) |
||
35 | |||
36 | return ChatMessage( |
||
37 | id=id, user=user, bot=bot, posted_at=posted_at, message=message, |
||
38 | message_plain=message_plain, highlight=highlight, is_bot=is_bot, |
||
39 | is_system=is_system) |
||
40 | |||
41 | |||
42 | def chat_message_from_dict(s: Any) -> ChatMessage: |
||
43 | return ChatMessage.from_dict(s) |
||
44 |