Skip to content

Commit d9a8b4a

Browse files
authored
lambdas: bump pydantic to v2 (#4355)
1 parent 19d837d commit d9a8b4a

File tree

8 files changed

+35
-23
lines changed

8 files changed

+35
-23
lines changed

lambdas/pkgpush/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ where verb is one of
1616

1717
## Changes
1818

19+
- [Changed] Bump pydantic to v2 ([#4355](https://github.com/quiltdata/quilt/pull/4355))
1920
- [Added] Entrypoint for Quilt Packaging Engine ([#4304](https://github.com/quiltdata/quilt/pull/4304))
2021
- [Fixed] Fix promotion with data copy to unversioned buckets ([#4300](https://github.com/quiltdata/quilt/pull/4300))
2122
- [Changed] Upgrade to Python 3.11 ([#4241](https://github.com/quiltdata/quilt/pull/4241))

lambdas/pkgpush/requirements.txt

+7-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
#
55
# pip-compile
66
#
7+
annotated-types==0.7.0
8+
# via pydantic
79
attrs==24.2.0
810
# via
911
# jsonschema
@@ -47,15 +49,17 @@ mypy-boto3-sts==1.35.61
4749
# via boto3-stubs
4850
platformdirs==4.3.6
4951
# via quilt3
50-
pydantic==1.10.19
52+
pydantic==2.10.6
5153
# via
5254
# quilt-shared
5355
# t4_lambda_pkgpush (setup.py)
56+
pydantic-core==2.27.2
57+
# via pydantic
5458
python-dateutil==2.9.0.post0
5559
# via botocore
5660
pyyaml==6.0.2
5761
# via quilt3
58-
quilt-shared[boto,pydantic,quilt] @ https://github.com/quiltdata/quilt/archive/438b031534d5c9f92734d8120e69088ae32d8fdb.zip#subdirectory=py-shared
62+
quilt-shared[boto,pydantic,quilt] @ https://github.com/quiltdata/quilt/archive/2818a8f869a6596f7f0833d3259fcb35797afa30.zip#subdirectory=py-shared
5963
# via t4_lambda_pkgpush (setup.py)
6064
quilt3 @ https://github.com/quiltdata/quilt/archive/5c2b79128fe4d5d1e6093ff6a7d11d09d3315843.zip#subdirectory=api/python
6165
# via
@@ -102,6 +106,7 @@ typing-extensions==4.12.2
102106
# mypy-boto3-s3
103107
# mypy-boto3-sts
104108
# pydantic
109+
# pydantic-core
105110
# quilt-shared
106111
# types-aiobotocore
107112
# types-aiobotocore-s3

lambdas/pkgpush/setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
package_dir={"": "src"},
88
install_requires=[
99
"boto3 ~= 1.28",
10-
"pydantic ~= 1.10",
10+
"pydantic ~= 2.10",
1111
"rfc3986 ~= 2.0",
1212
(
1313
"quilt3 @ https://github.com/quiltdata/quilt/archive/"
@@ -16,7 +16,7 @@
1616
),
1717
(
1818
"quilt_shared[pydantic,boto,quilt] @ https://github.com/quiltdata/quilt/archive/"
19-
"438b031534d5c9f92734d8120e69088ae32d8fdb.zip"
19+
"2818a8f869a6596f7f0833d3259fcb35797afa30.zip"
2020
"#subdirectory=py-shared"
2121
),
2222
],

lambdas/pkgpush/src/t4_lambda_pkgpush/__init__.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import botocore.client
1515
import botocore.credentials
1616
import botocore.exceptions
17-
import pydantic
17+
import pydantic.v1
1818
import rfc3986
1919

2020
# Must be done before importing quilt3.
@@ -96,7 +96,7 @@ def from_quilt_exception(cls, qe: quilt3.util.QuiltException):
9696
return cls(name, {"details": qe.message})
9797

9898

99-
def invoke_lambda(*, function_name: str, params: pydantic.BaseModel, err_prefix: str):
99+
def invoke_lambda(*, function_name: str, params: pydantic.v1.BaseModel, err_prefix: str):
100100
resp = lambda_.invoke(
101101
FunctionName=function_name,
102102
Payload=params.json(exclude_defaults=True),
@@ -225,7 +225,7 @@ def copy_file_list(
225225
get_user_boto_session = boto3.Session
226226

227227

228-
class Event(pydantic.BaseModel):
228+
class Event(pydantic.v1.BaseModel):
229229
credentials: AWSCredentials
230230
params: T.Any
231231

@@ -242,7 +242,7 @@ def setup_user_boto_session(session):
242242

243243
def auth(f):
244244
@functools.wraps(f)
245-
@pydantic.validate_arguments
245+
@pydantic.v1.validate_arguments
246246
def wrapper(event: Event):
247247
with setup_user_boto_session(get_user_boto_session(**event.credentials.boto_args)):
248248
return f(event.params)
@@ -270,7 +270,7 @@ def wrapper(event, context):
270270
except PkgpushException as e:
271271
logger.exception("PkgpushException")
272272
return {"error": e.dict()}
273-
except pydantic.ValidationError as e:
273+
except pydantic.v1.ValidationError as e:
274274
# XXX: make it .info()?
275275
logger.exception("ValidationError")
276276
# XXX: expose advanced pydantic error reporting capabilities?
@@ -392,7 +392,7 @@ def _push_pkg_to_successor(
392392
@exception_handler
393393
@auth
394394
@setup_telemetry
395-
@pydantic.validate_arguments
395+
@pydantic.v1.validate_arguments
396396
def promote_package(params: PackagePromoteParams) -> PackagePushResult:
397397
def get_pkg(src_registry: S3PackageRegistryV1):
398398
quilt3.util.validate_package_name(params.src.name)
@@ -531,7 +531,7 @@ def create_package(req_file: T.IO[bytes]) -> PackagePushResult:
531531
return PackagePushResult(top_hash=TopHash(top_hash))
532532

533533

534-
class PackagerEvent(pydantic.BaseModel):
534+
class PackagerEvent(pydantic.v1.BaseModel):
535535
source_prefix: str
536536
registry: str | None = None
537537
package_name: str | None = None
@@ -540,7 +540,7 @@ class PackagerEvent(pydantic.BaseModel):
540540
workflow: str | None = None
541541
commit_message: str | None = None
542542

543-
@pydantic.root_validator
543+
@pydantic.v1.root_validator
544544
def validate_metadata(cls, values):
545545
metadata, metadata_uri = values["metadata"], values["metadata_uri"]
546546
if metadata is not None and metadata_uri is not None:

lambdas/s3hash/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ where verb is one of
1717

1818
## Changes
1919

20+
- [Changed] Bump pydantic to v2 ([#4355](https://github.com/quiltdata/quilt/pull/4355))
2021
- [Fixed] Fix copy to unversioned buckets ([#4300](https://github.com/quiltdata/quilt/pull/4300))
2122
- [Changed] Upgrade to Python 3.11 ([#4241](https://github.com/quiltdata/quilt/pull/4241))
2223
- [Fixed] Fix invalid checksum for some non-canonical objects with existing checksum ([#4062](https://github.com/quiltdata/quilt/pull/4062))

lambdas/s3hash/requirements.txt

+7-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ aioitertools==0.12.0
1414
# via aiobotocore
1515
aiosignal==1.3.1
1616
# via aiohttp
17+
annotated-types==0.7.0
18+
# via pydantic
1719
attrs==24.2.0
1820
# via
1921
# aiohttp
@@ -73,15 +75,17 @@ propcache==0.2.0
7375
# via
7476
# aiohttp
7577
# yarl
76-
pydantic==1.10.19
78+
pydantic==2.10.6
7779
# via
7880
# quilt-shared
7981
# t4_lambda_s3hash (setup.py)
82+
pydantic-core==2.27.2
83+
# via pydantic
8084
python-dateutil==2.9.0.post0
8185
# via botocore
8286
pyyaml==6.0.2
8387
# via quilt3
84-
quilt-shared[boto,pydantic,quilt] @ https://github.com/quiltdata/quilt/archive/438b031534d5c9f92734d8120e69088ae32d8fdb.zip#subdirectory=py-shared
88+
quilt-shared[boto,pydantic,quilt] @ https://github.com/quiltdata/quilt/archive/2818a8f869a6596f7f0833d3259fcb35797afa30.zip#subdirectory=py-shared
8589
# via t4_lambda_s3hash (setup.py)
8690
quilt3==5.4.0
8791
# via quilt-shared
@@ -126,6 +130,7 @@ typing-extensions==4.12.2
126130
# mypy-boto3-s3
127131
# mypy-boto3-sts
128132
# pydantic
133+
# pydantic-core
129134
# quilt-shared
130135
# types-aiobotocore
131136
# types-aiobotocore-s3

lambdas/s3hash/setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
install_requires=[
99
"aiobotocore ~= 2.11",
1010
"botocore ~= 1.31",
11-
"pydantic ~= 1.10",
11+
"pydantic ~= 2.10",
1212
"types-aiobotocore[s3] ~= 2.11",
1313
(
1414
"quilt_shared[pydantic,boto,quilt] @ https://github.com/quiltdata/quilt/archive/"
15-
"438b031534d5c9f92734d8120e69088ae32d8fdb.zip"
15+
"2818a8f869a6596f7f0833d3259fcb35797afa30.zip"
1616
"#subdirectory=py-shared"
1717
),
1818
],

lambdas/s3hash/src/t4_lambda_s3hash/__init__.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import aiobotocore.response
1616
import aiobotocore.session
1717
import botocore.exceptions
18-
import pydantic
18+
import pydantic.v1
1919

2020
from quilt_shared.aws import AWSCredentials
2121
from quilt_shared.lambdas_errors import LambdaError
@@ -188,7 +188,7 @@ def hash_parts(parts: T.Sequence[bytes]) -> bytes:
188188
return hashlib.sha256(b"".join(parts)).digest()
189189

190190

191-
class PartDef(pydantic.BaseModel):
191+
class PartDef(pydantic.v1.BaseModel):
192192
part_number: int
193193
range: T.Optional[T.Tuple[int, int]]
194194

@@ -287,7 +287,7 @@ async def compute_part_checksums(
287287
return checksums
288288

289289

290-
class PartUploadResult(pydantic.BaseModel):
290+
class PartUploadResult(pydantic.v1.BaseModel):
291291
etag: str
292292
sha256: str # base64-encoded
293293

@@ -300,7 +300,7 @@ def boto_args(self):
300300

301301

302302
class MPURef(MPURefBase):
303-
_completed: bool = pydantic.PrivateAttr(default=False)
303+
_completed: bool = pydantic.v1.PrivateAttr(default=False)
304304

305305
@property
306306
def completed(self):
@@ -370,7 +370,7 @@ def wrapper(event: AnyDict, context: LambdaContext) -> AnyDict:
370370
)
371371
except asyncio.TimeoutError:
372372
raise LambdaError("Timeout")
373-
except pydantic.ValidationError as e:
373+
except pydantic.v1.ValidationError as e:
374374
# XXX: make it .info()?
375375
logger.exception("ValidationError")
376376
# TODO: expose advanced pydantic error reporting capabilities
@@ -430,7 +430,7 @@ async def compute_checksum(location: S3ObjectSource, scratch_buckets: T.Dict[str
430430

431431
# XXX: move decorators to shared?
432432
@lambda_wrapper
433-
@pydantic.validate_arguments
433+
@pydantic.v1.validate_arguments
434434
async def lambda_handler(
435435
*,
436436
credentials: AWSCredentials,
@@ -463,7 +463,7 @@ async def copy(location: S3ObjectSource, target: S3ObjectDestination) -> CopyRes
463463

464464
# XXX: move decorators to shared?
465465
@lambda_wrapper
466-
@pydantic.validate_arguments
466+
@pydantic.v1.validate_arguments
467467
async def lambda_handler_copy(
468468
*,
469469
credentials: AWSCredentials,

0 commit comments

Comments
 (0)