File tree Expand file tree Collapse file tree 1 file changed +13
-3
lines changed
Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Original file line number Diff line number Diff line change 77import contextlib
88import copy
99import dataclasses
10+ import datetime
1011import functools
1112import inspect
1213import pickle
@@ -306,6 +307,14 @@ async def _resolve_delta(delta: Delta) -> Delta:
306307 return delta
307308
308309
310+ _deserializers = {
311+ int : int ,
312+ float : float ,
313+ datetime .datetime : datetime .datetime .fromisoformat ,
314+ datetime .date : datetime .date .fromisoformat ,
315+ datetime .time : datetime .time .fromisoformat ,
316+ }
317+
309318all_base_state_classes : dict [str , None ] = {}
310319
311320
@@ -1872,11 +1881,12 @@ async def _process_event(
18721881 hinted_args is tuple or hinted_args is tuple
18731882 ):
18741883 payload [arg ] = tuple (value )
1875- elif isinstance (value , str ) and (
1876- hinted_args is int or hinted_args is float
1884+ elif (
1885+ isinstance (value , str )
1886+ and (deserializer := _deserializers .get (hinted_args )) is not None
18771887 ):
18781888 try :
1879- payload [arg ] = hinted_args (value )
1889+ payload [arg ] = deserializer (value )
18801890 except ValueError :
18811891 msg = f"Received a string value ({ value } ) for { arg } but expected a { hinted_args } "
18821892 raise ValueError (msg ) from None
You can’t perform that action at this time.
0 commit comments