11"""A base class for AWS Lambda handlers."""
22
33from abc import ABC
4- from typing import Any , Dict , Tuple , Callable , Optional
4+ from typing import Any , Dict , Tuple , NewType , Callable , Optional
55from functools import wraps
66
77Event = Dict [str , Any ]
8- Context = Dict [ str , Any ]
8+ LambdaContext = NewType ( 'LambdaContext' , object )
99
1010
1111class LambdaHandler (ABC ):
@@ -17,25 +17,20 @@ class LambdaHandler(ABC):
1717 def __init__ (self , handler : Optional [Callable ] = None ):
1818 self ._handler = handler
1919
20- def __call__ (self , handler : Callable ):
21- """Decorate `handler`."""
20+ def __call__ (self , handler : Callable ): # noqa: D102
2221 @wraps (handler )
2322 def wrapper (event , context ):
2423 return self ._call_handler (handler , event , context )
24+
2525 return wrapper
2626
27- def _call_handler (
28- self ,
29- handler : Callable ,
30- event : Event ,
31- context : Context ,
32- ) -> Any :
27+ def _call_handler (self , handler : Callable , event : Event , context : LambdaContext ) -> Any :
3328 try :
3429 return self .after (handler (* self .before (event , context )))
3530 except Exception as exception :
3631 return self .on_exception (exception )
3732
38- def before (self , event : Event , context : Context ) -> Tuple [Event , Context ]:
33+ def before (self , event : Event , context : LambdaContext ) -> Tuple [Event , LambdaContext ]:
3934 """Event method to be called just before the handler is executed."""
4035 return event , context
4136
0 commit comments