11"""Definition of Binary messages."""
22from dataclasses import dataclass , field , fields , MISSING
33from functools import lru_cache
4- from typing import Type , Union , Optional
4+ from typing import Type , Union , Optional , cast
55from typing_extensions import get_args
66
77from ..binary_constants import BinaryMessageId , LightTransitionType , LightAnimationType
@@ -28,7 +28,7 @@ class Echo(utils.BinarySerializable):
2828 )
2929 length : utils .UInt16Field = field (default_factory = lambda : utils .UInt16Field (0 ))
3030 message : utils .BinaryFieldBase [bytes ] = field (
31- default_factory = utils .BinaryFieldBase (bytes ())
31+ default_factory = lambda : utils .BinaryFieldBase (bytes ())
3232 )
3333
3434
@@ -348,7 +348,7 @@ class WriteEEPromRequest(utils.BinarySerializable):
348348 default_factory = lambda : utils .UInt16Field (0 )
349349 )
350350 data_length : utils .UInt16Field = field (default_factory = lambda : utils .UInt16Field (0 ))
351- data : EepromDataField = field (default_factory = EepromDataField (bytes ()))
351+ data : EepromDataField = field (default_factory = lambda : EepromDataField (bytes ()))
352352
353353
354354@dataclass
@@ -377,7 +377,7 @@ class ReadEEPromResponse(utils.BinarySerializable):
377377 default_factory = lambda : utils .UInt16Field (0 )
378378 )
379379 data_length : utils .UInt16Field = field (default_factory = lambda : utils .UInt16Field (0 ))
380- data : EepromDataField = field (default_factory = EepromDataField (bytes ()))
380+ data : EepromDataField = field (default_factory = lambda : EepromDataField (bytes ()))
381381
382382
383383@dataclass
@@ -396,7 +396,7 @@ class AddLightActionRequest(utils.BinarySerializable):
396396 default_factory = lambda : utils .UInt16Field (0 )
397397 )
398398 transition_type : LightTransitionTypeField = field (
399- default_factory = LightTransitionTypeField (LightTransitionType .linear )
399+ default_factory = lambda : LightTransitionTypeField (LightTransitionType .linear )
400400 )
401401 red : utils .UInt8Field = field (default_factory = lambda : utils .UInt8Field (0 ))
402402 green : utils .UInt8Field = field (default_factory = lambda : utils .UInt8Field (0 ))
@@ -526,11 +526,11 @@ def get_binary_definition(
526526 message_type_field .default is not MISSING
527527 and message_type_field .default .value == message_id
528528 ):
529- return i
529+ return cast ( Type [ BinaryMessageDefinition ], i )
530530 if (
531531 message_type_field .default_factory is not MISSING
532532 and message_type_field .default_factory ().value == message_id
533533 ):
534- return i
534+ return cast ( Type [ BinaryMessageDefinition ], i )
535535 log .error ("No binary message definition found." )
536536 return None
0 commit comments