Skip to content

Commit 4ac38c9

Browse files
committed
Apply proper annotations, fix tests, fix lint
1 parent 2706455 commit 4ac38c9

File tree

4 files changed

+29
-31
lines changed

4 files changed

+29
-31
lines changed

docs/modules/ROOT/examples/merging/tutorial001.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
def app(event: StreamTimeEvent, api: Api, cache: Cache):
77
# since we passed merge_events=True all 3 incoming events
88
# and their records will be merged into a single event with 9 records
9-
assert len(event.records) != 9 # this will not fail
9+
assert len(event.records) == 9 # this will not fail
1010
return event

src/corva/handlers.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import pydantic
2121
import redis
22-
from typing_extensions import assert_never
2322

2423
from corva.api import Api
2524
from corva.configuration import SETTINGS
@@ -89,7 +88,13 @@ def wrapper(aws_event: Any, aws_context: Any) -> List[Any]:
8988
)
9089
data_transformation_type = raw_custom_event_type or raw_event_type
9190
if merge_events:
92-
aws_event = _merge_events(aws_event, data_transformation_type)
91+
aws_event = _merge_events(
92+
aws_event,
93+
cast(
94+
Union[Type[RawScheduledEvent], Type[RawStreamEvent]],
95+
data_transformation_type,
96+
),
97+
)
9398
raw_events = data_transformation_type.from_raw_event(event=aws_event)
9499

95100
if (
@@ -567,7 +572,10 @@ def _get_custom_event_type_by_raw_aws_event(
567572
return None, None
568573

569574

570-
def _merge_events(aws_event: Any, data_transformation_type: Type[RawBaseEvent]) -> Any:
575+
def _merge_events(
576+
aws_event: Any,
577+
data_transformation_type: Union[Type[RawScheduledEvent], Type[RawStreamEvent]],
578+
) -> Any:
571579
"""
572580
Merges incoming aws_events into one.
573581
Merge happens differently, depending on app type.
@@ -578,7 +586,10 @@ def _merge_events(aws_event: Any, data_transformation_type: Type[RawBaseEvent])
578586
# scheduled event
579587
if not isinstance(aws_event[0], dict):
580588
aws_event = list(itertools.chain(*aws_event))
581-
is_depth = aws_event[0]["scheduler_type"] == SchedulerType.data_depth_milestone
589+
scheduler_type = aws_event[0]["scheduler_type"]
590+
if isinstance(scheduler_type, SchedulerType):
591+
scheduler_type = scheduler_type.value
592+
is_depth = scheduler_type == SchedulerType.data_depth_milestone.value
582593
event_start, event_end = (
583594
("top_depth", "bottom_depth")
584595
if is_depth
@@ -595,13 +606,8 @@ def _merge_events(aws_event: Any, data_transformation_type: Type[RawBaseEvent])
595606
aws_event = aws_event[0]
596607
return aws_event
597608

598-
elif data_transformation_type == RawStreamEvent:
599-
# stream event
600-
for event in aws_event[1:]:
601-
aws_event[0]["records"].extend(event["records"])
602-
aws_event = [aws_event[0]]
603-
return aws_event
604-
605-
else:
606-
# unexpected event type, raise an exception
607-
assert_never(data_transformation_type) # type: ignore
609+
# stream event
610+
for event in aws_event[1:]:
611+
aws_event[0]["records"].extend(event["records"])
612+
aws_event = [aws_event[0]]
613+
return aws_event

tests/unit/test_docs/test_merging.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ def test_tutorial001(context):
4646
asset_id=1,
4747
company_id=1,
4848
),
49+
RawTimeRecord(
50+
collection=str(),
51+
timestamp=timestamp + 2,
52+
asset_id=1,
53+
company_id=1,
54+
),
4955
],
5056
metadata=RawMetadata(
5157
app_stream_id=1,
@@ -55,10 +61,10 @@ def test_tutorial001(context):
5561
).dict()
5662
]
5763
)
58-
timestamp += 2
64+
timestamp += 3
5965

6066
result_event: StreamTimeEvent = tutorial001.app(event, context)[0]
61-
assert len(result_event.records) == 6, "records were not merged into a single event"
67+
assert len(result_event.records) == 9, "records were not merged into a single event"
6268

6369

6470
@pytest.mark.parametrize(

tests/unit/test_merge_events.py

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)