22from dataclasses import dataclass , field
33from datetime import UTC , datetime
44from enum import Enum
5- from typing import Literal , TypedDict
5+ from typing import Any , Literal , TypedDict
66
77from localstack .aws .api import CommonServiceException
88from localstack .aws .api .events import (
@@ -90,7 +90,7 @@ def __init__(self, reason=None, message=None) -> None:
9090 "time" : EventTime ,
9191 "region" : str ,
9292 "resources" : EventResourceList | None ,
93- "detail" : dict [str , str | dict ],
93+ "detail" : dict [str , Any ],
9494 "replay-name" : ReplayName | None ,
9595 "event-bus-name" : EventBusName ,
9696 },
@@ -191,13 +191,14 @@ class Archive:
191191 region : str
192192 account_id : str
193193 event_source_arn : Arn
194- description : ArchiveDescription = None
195- event_pattern : EventPattern = None
196- retention_days : RetentionDays = None
197- state : ArchiveState = ArchiveState .DISABLED
198- creation_time : Timestamp = None
199- size_bytes : int = 0 # TODO how to deal with updating this value?
200- events : FormattedEventDict = field (default_factory = dict )
194+ description : ArchiveDescription | None = None
195+ event_pattern : EventPattern | None = None
196+ retention_days : RetentionDays | None = None
197+ state : ArchiveState = field (init = False , default = ArchiveState .DISABLED )
198+ creation_time : Timestamp = field (init = False , default_factory = lambda : datetime .now (UTC ))
199+ events : FormattedEventDict = field (init = False , default_factory = dict )
200+ # TODO how to deal with updating this value?
201+ size_bytes : int = field (init = False , default = 0 )
201202
202203 @property
203204 def arn (self ) -> Arn :
@@ -221,12 +222,10 @@ class EventBus:
221222 tags : TagList = field (default_factory = list )
222223 policy : ResourcePolicy | None = None
223224 rules : RuleDict = field (default_factory = dict )
224- creation_time : Timestamp = field (init = False )
225- last_modified_time : Timestamp = field (init = False )
225+ creation_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
226+ last_modified_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
226227
227228 def __post_init__ (self ):
228- self .creation_time = datetime .now (UTC )
229- self .last_modified_time = datetime .now (UTC )
230229 if self .rules is None :
231230 self .rules = {}
232231 if self .tags is None :
@@ -251,17 +250,13 @@ class Connection:
251250 secret_arn : Arn
252251 description : ConnectionDescription | None = None
253252 invocation_connectivity_parameters : ConnectivityResourceParameters | None = None
254- creation_time : Timestamp = field (init = False )
255- last_modified_time : Timestamp = field (init = False )
256- last_authorized_time : Timestamp = field (init = False )
253+ creation_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
254+ last_modified_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
255+ last_authorized_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
257256 tags : TagList = field (default_factory = list )
258257 id : str = str (uuid .uuid4 ())
259258
260259 def __post_init__ (self ):
261- timestamp_now = datetime .now (UTC )
262- self .creation_time = timestamp_now
263- self .last_modified_time = timestamp_now
264- self .last_authorized_time = timestamp_now
265260 if self .tags is None :
266261 self .tags = []
267262
@@ -284,17 +279,13 @@ class ApiDestination:
284279 state : ApiDestinationState
285280 _invocation_rate_limit_per_second : ApiDestinationInvocationRateLimitPerSecond | None = None
286281 description : ApiDestinationDescription | None = None
287- creation_time : Timestamp = field (init = False )
288- last_modified_time : Timestamp = field (init = False )
289- last_authorized_time : Timestamp = field (init = False )
282+ creation_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
283+ last_modified_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
284+ last_authorized_time : Timestamp = field (init = False , default_factory = lambda : datetime . now ( UTC ) )
290285 tags : TagList = field (default_factory = list )
291286 id : str = str (short_uid ())
292287
293288 def __post_init__ (self ):
294- timestamp_now = datetime .now (UTC )
295- self .creation_time = timestamp_now
296- self .last_modified_time = timestamp_now
297- self .last_authorized_time = timestamp_now
298289 if self .tags is None :
299290 self .tags = []
300291
0 commit comments