Skip to content

Commit 82c51e8

Browse files
committed
mypy is happy
1 parent 3b0c052 commit 82c51e8

File tree

4 files changed

+23
-16
lines changed

4 files changed

+23
-16
lines changed

services/storage/src/simcore_service_storage/models.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
field_validator,
4141
model_validator,
4242
validate_call,
43-
validator,
4443
)
4544

4645

@@ -223,7 +222,7 @@ class SearchFilesQueryParams(StorageQueryParamsBase):
223222
)
224223
offset: int = Field(default=0, ge=0, description="Page offset")
225224

226-
_empty_is_none = validator("startswith", allow_reuse=True, pre=True)(
225+
_empty_is_none = field_validator("startswith", mode="before")(
227226
empty_str_to_none_pre_validator
228227
)
229228

services/storage/src/simcore_service_storage/simcore_s3_dsm.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@
2020
S3MetaData,
2121
UploadedBytesTransferredCallback,
2222
)
23-
from models_library.api_schemas_storage import LinkType, S3BucketName, UploadedPart
23+
from models_library.api_schemas_storage import (
24+
UNDEFINED_SIZE_TYPE,
25+
LinkType,
26+
S3BucketName,
27+
UploadedPart,
28+
)
2429
from models_library.basic_types import SHA256Str
2530
from models_library.projects import ProjectID
2631
from models_library.projects_nodes_io import (
@@ -371,7 +376,7 @@ async def abort_file_upload(
371376
raise FileAccessRightError(access_right="write/delete", file_id=file_id)
372377

373378
fmd: FileMetaDataAtDB = await db_file_meta_data.get(
374-
conn, parse_obj_as(SimcoreS3FileID, file_id)
379+
conn, TypeAdapter(SimcoreS3FileID).validate_python(file_id)
375380
)
376381
if is_valid_managed_multipart_upload(fmd.upload_id):
377382
assert fmd.upload_id # nosec
@@ -620,7 +625,9 @@ async def deep_copy_project_simcore_s3(
620625
f"{len(src_project_files)} files",
621626
log_duration=True,
622627
):
623-
sizes_and_num_files: list[tuple[ByteSize, int]] = await limited_gather(
628+
sizes_and_num_files: list[
629+
tuple[ByteSize | UNDEFINED_SIZE_TYPE, int]
630+
] = await limited_gather(
624631
*[self._get_size_and_num_files(fmd) for fmd in src_project_files],
625632
limit=_MAX_PARALLEL_S3_CALLS,
626633
)
@@ -693,7 +700,7 @@ async def deep_copy_project_simcore_s3(
693700

694701
async def _get_size_and_num_files(
695702
self, fmd: FileMetaDataAtDB
696-
) -> tuple[ByteSize, int]:
703+
) -> tuple[ByteSize | UNDEFINED_SIZE_TYPE, int]:
697704
if not fmd.is_directory:
698705
return fmd.file_size, 1
699706

@@ -977,7 +984,7 @@ async def _copy_file_datcore_s3(
977984
with tempfile.TemporaryDirectory() as tmpdir:
978985
local_file_path = Path(tmpdir) / filename
979986
# Downloads DATCore -> local
980-
await download_to_file_or_raise(session, dc_link, local_file_path)
987+
await download_to_file_or_raise(session, f"{dc_link}", local_file_path)
981988

982989
# copying will happen using aioboto3, therefore multipart might happen
983990
async with self.engine.acquire() as conn:

services/storage/src/simcore_service_storage/simcore_s3_dsm_utils.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from contextlib import suppress
22
from pathlib import Path
3-
from typing import cast
43

54
from aiopg.sa.connection import SAConnection
65
from aws_library.s3 import S3MetaData, SimcoreS3API
@@ -10,7 +9,7 @@
109
SimcoreS3FileID,
1110
StorageFileID,
1211
)
13-
from pydantic import ByteSize, NonNegativeInt, parse_obj_as
12+
from pydantic import ByteSize, NonNegativeInt, TypeAdapter
1413
from servicelib.utils import ensure_ends_with
1514

1615
from . import db_file_meta_data
@@ -56,16 +55,16 @@ async def expand_directory(
5655
location_id=fmd.location_id,
5756
location=fmd.location,
5857
bucket_name=fmd.bucket_name,
59-
object_name=cast(SimcoreS3FileID, x.object_key),
58+
object_name=x.object_key,
6059
user_id=fmd.user_id,
6160
# NOTE: to ensure users have a consistent experience the
6261
# `created_at` field is inherited from the last_modified
6362
# coming from S3. This way if a file is created 1 month after the
6463
# creation of the directory, the file's creation date
6564
# will not be 1 month in the passed.
6665
created_at=x.last_modified,
67-
file_id=cast(SimcoreS3FileID, x.object_key),
68-
file_size=parse_obj_as(ByteSize, x.size),
66+
file_id=x.object_key,
67+
file_size=TypeAdapter(ByteSize).validate_python(x.size),
6968
last_modified=x.last_modified,
7069
entity_tag=x.e_tag,
7170
is_soft_link=False,
@@ -100,7 +99,7 @@ async def _get_fmd(
10099
) -> FileMetaDataAtDB | None:
101100
with suppress(FileMetaDataNotFoundError):
102101
return await db_file_meta_data.get(
103-
conn, parse_obj_as(SimcoreS3FileID, s3_file_id)
102+
conn, TypeAdapter(SimcoreS3FileID).validate_python(s3_file_id)
104103
)
105104
return None
106105

@@ -114,7 +113,9 @@ async def _get_fmd(
114113
# could not extract a directory name from the provided path
115114
return None
116115

117-
directory_file_id = parse_obj_as(SimcoreS3FileID, directory_file_id_str)
116+
directory_file_id = TypeAdapter(SimcoreS3FileID).validate_python(
117+
directory_file_id_str
118+
)
118119
directory_file_id_fmd = await _get_fmd(conn, directory_file_id)
119120

120121
return directory_file_id if directory_file_id_fmd else None

services/storage/tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ async def _uploader(
353353
file, file_upload_link
354354
)
355355
# complete the upload
356-
complete_url = URL(file_upload_link.links.complete_upload).relative()
356+
complete_url = URL(f"{file_upload_link.links.complete_upload}").relative()
357357
with log_context(logging.INFO, f"completing upload of {file=}"):
358358
response = await client.post(
359359
f"{complete_url}",
@@ -364,7 +364,7 @@ async def _uploader(
364364
assert not error
365365
assert data
366366
file_upload_complete_response = FileUploadCompleteResponse.parse_obj(data)
367-
state_url = URL(file_upload_complete_response.links.state).relative()
367+
state_url = URL(f"{file_upload_complete_response.links.state}").relative()
368368

369369
completion_etag = None
370370
async for attempt in AsyncRetrying(

0 commit comments

Comments
 (0)