|
2 | 2 |
|
3 | 3 | import logging
|
4 | 4 | import typing
|
5 |
| -from typing import Any, Callable, Dict, Optional, Type, overload |
| 5 | +from typing import TYPE_CHECKING, Any, Callable, overload |
6 | 6 |
|
7 | 7 | from pydantic import PydanticSchemaGenerationError, ValidationError
|
8 | 8 |
|
9 | 9 | from aws_lambda_powertools.middleware_factory import lambda_handler_decorator
|
10 |
| -from aws_lambda_powertools.utilities.parser.envelopes.base import Envelope |
11 | 10 | from aws_lambda_powertools.utilities.parser.exceptions import InvalidEnvelopeError, InvalidModelTypeError
|
12 | 11 | from aws_lambda_powertools.utilities.parser.functions import _retrieve_or_set_model_from_cache
|
13 |
| -from aws_lambda_powertools.utilities.parser.types import EventParserReturnType, T |
14 |
| -from aws_lambda_powertools.utilities.typing import LambdaContext |
| 12 | + |
| 13 | +if TYPE_CHECKING: |
| 14 | + from aws_lambda_powertools.utilities.parser.envelopes.base import Envelope |
| 15 | + from aws_lambda_powertools.utilities.parser.types import EventParserReturnType, T |
| 16 | + from aws_lambda_powertools.utilities.typing import LambdaContext |
15 | 17 |
|
16 | 18 | logger = logging.getLogger(__name__)
|
17 | 19 |
|
18 | 20 |
|
19 | 21 | @lambda_handler_decorator
|
20 | 22 | def event_parser(
|
21 | 23 | handler: Callable[..., EventParserReturnType],
|
22 |
| - event: Dict[str, Any], |
| 24 | + event: dict[str, Any], |
23 | 25 | context: LambdaContext,
|
24 |
| - model: Optional[type[T]] = None, |
25 |
| - envelope: Optional[Type[Envelope]] = None, |
| 26 | + model: type[T] | None = None, |
| 27 | + envelope: type[Envelope] | None = None, |
26 | 28 | **kwargs: Any,
|
27 | 29 | ) -> EventParserReturnType:
|
28 | 30 | """Lambda handler decorator to parse & validate events using Pydantic models
|
@@ -67,11 +69,11 @@ def handler(event: Order, context: LambdaContext):
|
67 | 69 | ----------
|
68 | 70 | handler: Callable
|
69 | 71 | Method to annotate on
|
70 |
| - event: Dict |
| 72 | + event: dict |
71 | 73 | Lambda event to be parsed & validated
|
72 | 74 | context: LambdaContext
|
73 | 75 | Lambda context object
|
74 |
| - model: Optional[type[T]] |
| 76 | + model: type[T] | None |
75 | 77 | Your data model that will replace the event.
|
76 | 78 | envelope: Envelope
|
77 | 79 | Optional envelope to extract the model from
|
@@ -111,14 +113,14 @@ def handler(event: Order, context: LambdaContext):
|
111 | 113 |
|
112 | 114 |
|
113 | 115 | @overload
|
114 |
| -def parse(event: Dict[str, Any], model: type[T]) -> T: ... # pragma: no cover |
| 116 | +def parse(event: dict[str, Any], model: type[T]) -> T: ... # pragma: no cover |
115 | 117 |
|
116 | 118 |
|
117 | 119 | @overload
|
118 |
| -def parse(event: Dict[str, Any], model: type[T], envelope: Type[Envelope]) -> T: ... # pragma: no cover |
| 120 | +def parse(event: dict[str, Any], model: type[T], envelope: type[Envelope]) -> T: ... # pragma: no cover |
119 | 121 |
|
120 | 122 |
|
121 |
| -def parse(event: Dict[str, Any], model: type[T], envelope: Optional[Type[Envelope]] = None): |
| 123 | +def parse(event: dict[str, Any], model: type[T], envelope: type[Envelope] | None = None): |
122 | 124 | """Standalone function to parse & validate events using Pydantic models
|
123 | 125 |
|
124 | 126 | Typically used when you need fine-grained control over error handling compared to event_parser decorator.
|
@@ -156,7 +158,7 @@ def handler(event: Order, context: LambdaContext):
|
156 | 158 |
|
157 | 159 | Parameters
|
158 | 160 | ----------
|
159 |
| - event: Dict |
| 161 | + event: dict |
160 | 162 | Lambda event to be parsed & validated
|
161 | 163 | model: Model
|
162 | 164 | Your data model that will replace the event
|
|
0 commit comments