3535 StorageFileID ,
3636)
3737from models_library .users import UserID
38- from pydantic import AnyUrl , ByteSize , NonNegativeInt , TypeAdapter , parse_obj_as
38+ from pydantic import AnyUrl , ByteSize , NonNegativeInt , TypeAdapter
3939from servicelib .aiohttp .client_session import get_client_session
4040from servicelib .aiohttp .long_running_tasks .server import TaskProgress
4141from servicelib .logging_utils import log_context
@@ -257,7 +257,7 @@ async def get_file(self, user_id: UserID, file_id: StorageFileID) -> FileMetaDat
257257 raise FileAccessRightError (access_right = "read" , file_id = file_id )
258258
259259 fmd = await db_file_meta_data .get (
260- conn , parse_obj_as (SimcoreS3FileID , file_id )
260+ conn , TypeAdapter (SimcoreS3FileID ). validate_python ( file_id )
261261 )
262262 if is_file_entry_valid (fmd ):
263263 return convert_db_to_model (fmd )
@@ -412,7 +412,7 @@ async def complete_file_upload(
412412 if not can .write :
413413 raise FileAccessRightError (access_right = "write" , file_id = file_id )
414414 fmd = await db_file_meta_data .get (
415- conn , parse_obj_as (SimcoreS3FileID , file_id )
415+ conn , TypeAdapter (SimcoreS3FileID ). validate_python ( file_id )
416416 )
417417
418418 if is_valid_managed_multipart_upload (fmd .upload_id ):
@@ -460,12 +460,12 @@ async def create_file_download_link(
460460 ):
461461 raise S3KeyNotFoundError (key = file_id , bucket = self .simcore_bucket_name )
462462 return await self .__get_link (
463- parse_obj_as (SimcoreS3FileID , file_id ), link_type
463+ TypeAdapter (SimcoreS3FileID ). validate_python ( file_id ), link_type
464464 )
465465 # standard file link
466466 async with self .engine .acquire () as conn :
467467 fmd = await db_file_meta_data .get (
468- conn , parse_obj_as (SimcoreS3FileID , file_id )
468+ conn , TypeAdapter (SimcoreS3FileID ). validate_python ( file_id )
469469 )
470470 if not is_file_entry_valid (fmd ):
471471 # try lazy update
@@ -487,9 +487,8 @@ async def __ensure_read_access_rights(
487487 async def __get_link (
488488 self , s3_file_id : SimcoreS3FileID , link_type : LinkType
489489 ) -> AnyUrl :
490- link : AnyUrl = parse_obj_as (
491- AnyUrl ,
492- f"s3://{ self .simcore_bucket_name } /{ urllib .parse .quote (s3_file_id )} " ,
490+ link : AnyUrl = TypeAdapter (AnyUrl ).validate_python (
491+ f"s3://{ self .simcore_bucket_name } /{ urllib .parse .quote (s3_file_id )} "
493492 )
494493 if link_type == LinkType .PRESIGNED :
495494 link = await get_s3_client (self .app ).create_single_presigned_download_link (
@@ -528,7 +527,7 @@ async def delete_file(
528527 # NOTE: deleting might be slow, so better ensure we release the connection
529528 async with self .engine .acquire () as conn :
530529 file : FileMetaDataAtDB = await db_file_meta_data .get (
531- conn , parse_obj_as (SimcoreS3FileID , file_id )
530+ conn , TypeAdapter (SimcoreS3FileID ). validate_python ( file_id )
532531 )
533532 await get_s3_client (self .app ).delete_objects_recursively (
534533 bucket = file .bucket_name ,
@@ -632,9 +631,9 @@ async def deep_copy_project_simcore_s3(
632631 limit = _MAX_PARALLEL_S3_CALLS ,
633632 )
634633 total_num_of_files = sum (n for _ , n in sizes_and_num_files )
635- src_project_total_data_size : ByteSize = parse_obj_as (
636- ByteSize , sum ( n for n , _ in sizes_and_num_files )
637- )
634+ src_project_total_data_size : ByteSize = TypeAdapter (
635+ ByteSize
636+ ). validate_python ( sum ( n for n , _ in sizes_and_num_files ))
638637 with log_context (
639638 _logger ,
640639 logging .INFO ,
@@ -660,7 +659,7 @@ async def deep_copy_project_simcore_s3(
660659 self ._copy_path_s3_s3 (
661660 user_id ,
662661 src_fmd = src_fmd ,
663- dst_file_id = SimcoreS3FileID (
662+ dst_file_id = TypeAdapter ( SimcoreS3FileID ). validate_python (
664663 f"{ dst_project_uuid } /{ new_node_id } /{ src_fmd .object_name .split ('/' , maxsplit = 2 )[- 1 ]} "
665664 ),
666665 bytes_transfered_cb = s3_transfered_data_cb .copy_transfer_cb ,
@@ -718,7 +717,7 @@ async def _get_size_and_num_files(
718717 total_size += sum (x .size for x in s3_objects )
719718 total_num_s3_objects += len (s3_objects )
720719
721- return parse_obj_as (ByteSize , total_size ), total_num_s3_objects
720+ return TypeAdapter (ByteSize ). validate_python ( total_size ), total_num_s3_objects
722721
723722 async def search_owned_files (
724723 self ,
@@ -759,7 +758,7 @@ async def create_soft_link(
759758 ) -> FileMetaData :
760759 async with self .engine .acquire () as conn :
761760 if await db_file_meta_data .exists (
762- conn , parse_obj_as (SimcoreS3FileID , link_file_id )
761+ conn , TypeAdapter (SimcoreS3FileID ). validate_python ( link_file_id )
763762 ):
764763 raise LinkAlreadyExistsError (file_id = link_file_id )
765764 # validate target_uuid
@@ -908,7 +907,7 @@ async def _update_fmd_from_other(
908907 s3_metadata = await get_s3_client (self .app ).get_object_metadata (
909908 bucket = fmd .bucket_name , object_key = fmd .object_name
910909 )
911- fmd .file_size = parse_obj_as (ByteSize , s3_metadata .size )
910+ fmd .file_size = TypeAdapter (ByteSize ). validate_python ( s3_metadata .size )
912911 fmd .last_modified = s3_metadata .last_modified
913912 fmd .entity_tag = s3_metadata .e_tag
914913 else :
@@ -945,12 +944,12 @@ async def _update_database_from_storage(
945944 s3_metadata = await self ._get_s3_metadata (fmd )
946945 if not fmd .is_directory :
947946 assert isinstance (s3_metadata , S3MetaData ) # nosec
948- fmd .file_size = parse_obj_as (ByteSize , s3_metadata .size )
947+ fmd .file_size = TypeAdapter (ByteSize ). validate_python ( s3_metadata .size )
949948 fmd .last_modified = s3_metadata .last_modified
950949 fmd .entity_tag = s3_metadata .e_tag
951950 elif fmd .is_directory :
952951 assert isinstance (s3_metadata , S3DirectoryMetaData ) # nosec
953- fmd .file_size = parse_obj_as (ByteSize , s3_metadata .size )
952+ fmd .file_size = TypeAdapter (ByteSize ). validate_python ( s3_metadata .size )
954953 fmd .upload_expires_at = None
955954 fmd .upload_id = None
956955 async with self .engine .acquire () as conn :
@@ -978,7 +977,9 @@ async def _copy_file_datcore_s3(
978977 )
979978 assert dc_link .path # nosec
980979 filename = Path (dc_link .path ).name
981- dst_file_id = SimcoreS3FileID (f"{ dest_project_id } /{ dest_node_id } /{ filename } " )
980+ dst_file_id = TypeAdapter (SimcoreS3FileID ).validate_python (
981+ f"{ dest_project_id } /{ dest_node_id } /{ filename } "
982+ )
982983 _logger .debug ("copying %s to %s" , f"{ source_uuid = } " , f"{ dst_file_id = } " )
983984
984985 with tempfile .TemporaryDirectory () as tmpdir :
@@ -1075,7 +1076,7 @@ async def _create_fmd_for_upload(
10751076 )
10761077 fmd = FileMetaData .from_simcore_node (
10771078 user_id = user_id ,
1078- file_id = parse_obj_as (SimcoreS3FileID , file_id ),
1079+ file_id = TypeAdapter (SimcoreS3FileID ). validate_python ( file_id ),
10791080 bucket = self .simcore_bucket_name ,
10801081 location_id = self .location_id ,
10811082 location_name = self .location_name ,
@@ -1092,7 +1093,9 @@ def create_simcore_s3_data_manager(app: web.Application) -> SimcoreS3DataManager
10921093 assert cfg .STORAGE_S3 # nosec
10931094 return SimcoreS3DataManager (
10941095 engine = app [APP_AIOPG_ENGINE_KEY ],
1095- simcore_bucket_name = parse_obj_as (S3BucketName , cfg .STORAGE_S3 .S3_BUCKET_NAME ),
1096+ simcore_bucket_name = TypeAdapter (S3BucketName ).validate_python (
1097+ cfg .STORAGE_S3 .S3_BUCKET_NAME
1098+ ),
10961099 app = app ,
10971100 settings = cfg ,
10981101 )
0 commit comments