15
15
16
16
@lambda_handler_decorator
17
17
def event_parser (
18
- handler : Callable [[ Any , LambdaContext ] , EventParserReturnType ],
18
+ handler : Callable [... , EventParserReturnType ],
19
19
event : Dict [str , Any ],
20
20
context : LambdaContext ,
21
21
model : Optional [Type [Model ]] = None ,
22
22
envelope : Optional [Type [Envelope ]] = None ,
23
+ ** kwargs : Any ,
23
24
) -> EventParserReturnType :
24
25
"""Lambda handler decorator to parse & validate events using Pydantic models
25
26
@@ -93,9 +94,13 @@ def handler(event: Order, context: LambdaContext):
93
94
"or as the type hint of `event` in the handler that it wraps" ,
94
95
)
95
96
96
- parsed_event = parse (event = event , model = model , envelope = envelope ) if envelope else parse (event = event , model = model )
97
+ if envelope :
98
+ parsed_event = parse (event = event , model = model , envelope = envelope )
99
+ else :
100
+ parsed_event = parse (event = event , model = model )
101
+
97
102
logger .debug (f"Calling handler { handler .__name__ } " )
98
- return handler (parsed_event , context )
103
+ return handler (parsed_event , context , ** kwargs )
99
104
100
105
101
106
@overload
@@ -104,7 +109,7 @@ def parse(event: Dict[str, Any], model: Type[Model]) -> Model:
104
109
105
110
106
111
@overload
107
- def parse (event : Dict [str , Any ], model : Type [Model ], envelope : Type [Envelope ]):
112
+ def parse (event : Dict [str , Any ], model : Type [Model ], envelope : Type [Envelope ]) -> Model :
108
113
... # pragma: no cover
109
114
110
115
0 commit comments