File tree 2 files changed +31
-6
lines changed 2 files changed +31
-6
lines changed Original file line number Diff line number Diff line change 2
2
3
3
from __future__ import annotations
4
4
5
- from datetime import datetime
5
+ from dataclasses import dataclass
6
+ from typing import Annotated
6
7
7
- from pydantic .v1 import BaseModel , Field , parse_obj_as
8
+ from mashumaro import DataClassDictMixin
9
+ from mashumaro .types import Alias
8
10
9
11
from ..smartmodule import SmartModule
10
12
11
13
12
- class LogEntry (BaseModel ):
14
+ @dataclass
15
+ class LogEntry (DataClassDictMixin ):
13
16
"""Presentation of a single log entry."""
14
17
15
18
id : int
16
- event_id : str = Field ( alias = "eventId" )
17
- timestamp : datetime
19
+ event_id : Annotated [ str , Alias ( "eventId" )]
20
+ timestamp : int
18
21
event : str
19
22
20
23
@@ -31,4 +34,4 @@ def query(self) -> dict:
31
34
@property
32
35
def logs (self ) -> list [LogEntry ]:
33
36
"""Return logs."""
34
- return parse_obj_as ( list [LogEntry ], self .data ["logs" ])
37
+ return [LogEntry . from_dict ( log ) for log in self .data ["logs" ]]
Original file line number Diff line number Diff line change
1
+ from kasa import Device , Module
2
+
3
+ from ...device_fixtures import parametrize
4
+
5
+ triggerlogs = parametrize (
6
+ "has trigger_logs" ,
7
+ component_filter = "trigger_log" ,
8
+ protocol_filter = {"SMART" , "SMART.CHILD" },
9
+ )
10
+
11
+
12
+ @triggerlogs
13
+ async def test_trigger_logs (dev : Device ):
14
+ """Test that features are registered and work as expected."""
15
+ triggerlogs = dev .modules .get (Module .TriggerLogs )
16
+ assert triggerlogs is not None
17
+ if logs := triggerlogs .logs :
18
+ first = logs [0 ]
19
+ assert isinstance (first .id , int )
20
+ assert isinstance (first .timestamp , int )
21
+ assert isinstance (first .event , str )
22
+ assert isinstance (first .event_id , str )
You can’t perform that action at this time.
0 commit comments