Skip to content

Commit c543f1c

Browse files
committed
fix(parser): allow type override for payload as models
1 parent 4994349 commit c543f1c

File tree

11 files changed

+36
-28
lines changed

11 files changed

+36
-28
lines changed

Diff for: aws_lambda_powertools/utilities/parser/models/alb.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
from typing import Dict
1+
from typing import Dict, Union
22

33
from pydantic import BaseModel
44

5+
from aws_lambda_powertools.utilities.parser.types import Model
6+
57

68
class AlbRequestContextData(BaseModel):
79
targetGroupArn: str
@@ -14,7 +16,7 @@ class AlbRequestContext(BaseModel):
1416
class AlbModel(BaseModel):
1517
httpMethod: str
1618
path: str
17-
body: str
19+
body: Union[str, Model]
1820
isBase64Encoded: bool
1921
headers: Dict[str, str]
2022
queryStringParameters: Dict[str, str]

Diff for: aws_lambda_powertools/utilities/parser/models/apigw.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from datetime import datetime
2-
from typing import Any, Dict, List, Optional
2+
from typing import Any, Dict, List, Optional, Union
33

44
from pydantic import BaseModel, root_validator
55
from pydantic.networks import IPvAnyNetwork
66

7-
from ..types import Literal
7+
from aws_lambda_powertools.utilities.parser.types import Literal, Model
88

99

1010
class ApiGatewayUserCertValidity(BaseModel):
@@ -89,4 +89,4 @@ class APIGatewayProxyEventModel(BaseModel):
8989
pathParameters: Optional[Dict[str, str]]
9090
stageVariables: Optional[Dict[str, str]]
9191
isBase64Encoded: bool
92-
body: Optional[str]
92+
body: Optional[Union[str, Model]]

Diff for: aws_lambda_powertools/utilities/parser/models/apigwv2.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from datetime import datetime
2-
from typing import Any, Dict, List, Optional
2+
from typing import Any, Dict, List, Optional, Union
33

44
from pydantic import BaseModel, Field
55
from pydantic.networks import IPvAnyNetwork
66

7-
from ..types import Literal
7+
from aws_lambda_powertools.utilities.parser.types import Literal, Model
88

99

1010
class RequestContextV2AuthorizerIamCognito(BaseModel):
@@ -67,5 +67,5 @@ class APIGatewayProxyEventV2Model(BaseModel):
6767
pathParameters: Optional[Dict[str, str]]
6868
stageVariables: Optional[Dict[str, str]]
6969
requestContext: RequestContextV2
70-
body: Optional[str]
70+
body: Optional[Union[str, Model]]
7171
isBase64Encoded: bool

Diff for: aws_lambda_powertools/utilities/parser/models/cloudwatch.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@
33
import logging
44
import zlib
55
from datetime import datetime
6-
from typing import List
6+
from typing import List, Union
77

88
from pydantic import BaseModel, Field, validator
99

10+
from aws_lambda_powertools.utilities.parser.types import Model
11+
1012
logger = logging.getLogger(__name__)
1113

1214

1315
class CloudWatchLogsLogEvent(BaseModel):
1416
id: str # noqa AA03 VNE003
1517
timestamp: datetime
16-
message: str
18+
message: Union[str, Model]
1719

1820

1921
class CloudWatchLogsDecode(BaseModel):

Diff for: aws_lambda_powertools/utilities/parser/models/dynamodb.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
from datetime import date
2-
from typing import Any, Dict, List, Optional
2+
from typing import Any, Dict, List, Optional, Union
33

44
from pydantic import BaseModel
55

6-
from ..types import Literal
6+
from aws_lambda_powertools.utilities.parser.types import Literal, Model
77

88

99
class DynamoDBStreamChangedRecordModel(BaseModel):
1010
ApproximateCreationDateTime: Optional[date]
1111
Keys: Dict[str, Dict[str, Any]]
12-
NewImage: Optional[Dict[str, Any]]
13-
OldImage: Optional[Dict[str, Any]]
12+
NewImage: Optional[Union[Dict[str, Any], Model]]
13+
OldImage: Optional[Union[Dict[str, Any], Model]]
1414
SequenceNumber: str
1515
SizeBytes: int
1616
StreamViewType: Literal["NEW_AND_OLD_IMAGES", "KEYS_ONLY", "NEW_IMAGE", "OLD_IMAGE"]

Diff for: aws_lambda_powertools/utilities/parser/models/event_bridge.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from datetime import datetime
2-
from typing import Any, Dict, List, Optional
2+
from typing import Any, Dict, List, Optional, Union
33

44
from pydantic import BaseModel, Field
55

6+
from aws_lambda_powertools.utilities.parser.types import Model
7+
68

79
class EventBridgeModel(BaseModel):
810
version: str
@@ -13,5 +15,5 @@ class EventBridgeModel(BaseModel):
1315
region: str
1416
resources: List[str]
1517
detail_type: str = Field(None, alias="detail-type")
16-
detail: Dict[str, Any]
18+
detail: Union[Dict[str, Any], Model]
1719
replay_name: Optional[str] = Field(None, alias="replay-name")

Diff for: aws_lambda_powertools/utilities/parser/models/kinesis.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import base64
22
import logging
33
from binascii import Error as BinAsciiError
4-
from typing import List
4+
from typing import List, Union
55

66
from pydantic import BaseModel, validator
77
from pydantic.types import PositiveInt
88

9-
from ..types import Literal
9+
from aws_lambda_powertools.utilities.parser.types import Literal, Model
1010

1111
logger = logging.getLogger(__name__)
1212

@@ -15,7 +15,7 @@ class KinesisDataStreamRecordPayload(BaseModel):
1515
kinesisSchemaVersion: str
1616
partitionKey: str
1717
sequenceNumber: PositiveInt
18-
data: bytes # base64 encoded str is parsed into bytes
18+
data: Union[bytes, Model] # base64 encoded str is parsed into bytes
1919
approximateArrivalTimestamp: float
2020

2121
@validator("data", pre=True, allow_reuse=True)

Diff for: aws_lambda_powertools/utilities/parser/models/s3.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from pydantic.networks import IPvAnyNetwork
77
from pydantic.types import NonNegativeFloat
88

9-
from ..types import Literal
9+
from aws_lambda_powertools.utilities.parser.types import Literal
1010

1111

1212
class S3EventRecordGlacierRestoreEventData(BaseModel):

Diff for: aws_lambda_powertools/utilities/parser/models/s3_object_event.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
from typing import Dict, Optional
1+
from typing import Dict, Optional, Union
22

33
from pydantic import BaseModel, HttpUrl
44

5+
from aws_lambda_powertools.utilities.parser.types import Model
6+
57

68
class S3ObjectContext(BaseModel):
79
inputS3Url: HttpUrl
@@ -12,7 +14,7 @@ class S3ObjectContext(BaseModel):
1214
class S3ObjectConfiguration(BaseModel):
1315
accessPointArn: str
1416
supportingAccessPointArn: str
15-
payload: str
17+
payload: Union[str, Model]
1618

1719

1820
class S3ObjectUserRequest(BaseModel):

Diff for: aws_lambda_powertools/utilities/parser/models/sns.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from datetime import datetime
2-
from typing import Dict, List, Optional
2+
from typing import Dict, List, Optional, Union
33

44
from pydantic import BaseModel, root_validator
55
from pydantic.networks import HttpUrl
66

7-
from ..types import Literal
7+
from aws_lambda_powertools.utilities.parser.types import Literal, Model
88

99

1010
class SnsMsgAttributeModel(BaseModel):
@@ -18,7 +18,7 @@ class SnsNotificationModel(BaseModel):
1818
UnsubscribeUrl: HttpUrl
1919
Type: Literal["Notification"]
2020
MessageAttributes: Optional[Dict[str, SnsMsgAttributeModel]]
21-
Message: str
21+
Message: Union[str, Model]
2222
MessageId: str
2323
SigningCertUrl: HttpUrl
2424
Signature: str

Diff for: aws_lambda_powertools/utilities/parser/models/sqs.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from datetime import datetime
2-
from typing import Dict, List, Optional
2+
from typing import Dict, List, Optional, Union
33

44
from pydantic import BaseModel
55

6-
from ..types import Literal
6+
from aws_lambda_powertools.utilities.parser.types import Literal, Model
77

88

99
class SqsAttributesModel(BaseModel):
@@ -52,7 +52,7 @@ class SqsMsgAttributeModel(BaseModel):
5252
class SqsRecordModel(BaseModel):
5353
messageId: str
5454
receiptHandle: str
55-
body: str
55+
body: Union[str, Model]
5656
attributes: SqsAttributesModel
5757
messageAttributes: Dict[str, SqsMsgAttributeModel]
5858
md5OfBody: str

0 commit comments

Comments
 (0)