Skip to content
This repository was archived by the owner on Mar 23, 2026. It is now read-only.

Commit c0216d3

Browse files
committed
improve typing of Events models
1 parent 7c60109 commit c0216d3

File tree

2 files changed

+21
-30
lines changed

2 files changed

+21
-30
lines changed

localstack-core/localstack/services/events/archive.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ def create_archive_service(
6060
region: str,
6161
account_id: str,
6262
event_source_arn: Arn,
63-
description: ArchiveDescription,
64-
event_pattern: EventPattern,
65-
retention_days: RetentionDays,
63+
description: ArchiveDescription | None,
64+
event_pattern: EventPattern | None,
65+
retention_days: RetentionDays | None,
6666
) -> Self:
6767
return cls(
6868
Archive(

localstack-core/localstack/services/events/models.py

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from dataclasses import dataclass, field
33
from datetime import UTC, datetime
44
from enum import Enum
5-
from typing import Literal, TypedDict
5+
from typing import Any, Literal, TypedDict
66

77
from localstack.aws.api import CommonServiceException
88
from 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

Comments
 (0)