Skip to content

Commit 13f6935

Browse files
Migrating functions from v1 to v2
1 parent 25a65b2 commit 13f6935

File tree

6 files changed

+343
-325
lines changed

6 files changed

+343
-325
lines changed

aws_lambda_powertools/event_handler/openapi/encoders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from uuid import UUID
1111

1212
from pydantic import BaseModel
13-
from pydantic.color import Color
1413
from pydantic.types import SecretBytes, SecretStr
14+
from pydantic_extra_types.color import Color
1515

1616
from aws_lambda_powertools.event_handler.openapi.compat import _model_dump
1717
from aws_lambda_powertools.event_handler.openapi.types import IncEx

aws_lambda_powertools/utilities/parser/models/s3.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import datetime
22
from typing import List, Optional
33

4-
from pydantic import BaseModel, root_validator
4+
from pydantic import BaseModel, model_validator
55
from pydantic.fields import Field
66
from pydantic.networks import IPvAnyNetwork
77
from pydantic.types import NonNegativeFloat
@@ -101,13 +101,12 @@ class S3RecordModel(BaseModel):
101101
s3: S3Message
102102
glacierEventData: Optional[S3EventRecordGlacierEventData] = None
103103

104-
@root_validator(allow_reuse=True, skip_on_failure=True) # review
104+
@model_validator(mode="before")
105105
def validate_s3_object(cls, values):
106106
event_name = values.get("eventName")
107-
s3_object = values.get("s3").object
108-
if "ObjectRemoved" not in event_name:
109-
if s3_object.size is None or s3_object.eTag is None:
110-
raise ValueError("S3Object.size and S3Object.eTag are required for non-ObjectRemoved events")
107+
s3_object = values.get("s3").get("object")
108+
if "ObjectRemoved" not in event_name and (s3_object.get("size") is None or s3_object.get("eTag") is None):
109+
raise ValueError("S3Object.size and S3Object.eTag are required for non-ObjectRemoved events")
111110
return values
112111

113112

aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any, Dict, List, Optional
22

3-
from pydantic import BaseModel, validator
3+
from pydantic import BaseModel, model_validator
44

55
from aws_lambda_powertools.utilities.parser.types import Literal
66

@@ -12,14 +12,12 @@ class S3BatchOperationTaskModel(BaseModel):
1212
s3BucketArn: Optional[str] = None
1313
s3Bucket: Optional[str] = None
1414

15-
@validator("s3Bucket", pre=True, always=True) # review
16-
def validate_bucket(cls, current_value, values):
17-
# Get the s3 bucket, either from 's3Bucket' property (invocationSchemaVersion '2.0')
18-
# or from 's3BucketArn' (invocationSchemaVersion '1.0')
19-
if values.get("s3BucketArn") and not current_value:
20-
# Replace s3Bucket value with the value from s3BucketArn
21-
return values["s3BucketArn"].split(":::")[-1]
22-
return current_value
15+
@model_validator(mode="before")
16+
def validate_s3bucket(cls, values: Dict[str, Any]) -> Dict[str, Any]:
17+
if values.get("s3BucketArn") and not values.get("s3Bucket"):
18+
values["s3Bucket"] = values["s3BucketArn"].split(":::")[-1]
19+
20+
return values
2321

2422

2523
class S3BatchOperationJobModel(BaseModel):

0 commit comments

Comments
 (0)