Skip to content

Commit 17afc8c

Browse files
committed
⚡️ Add check that deleted folder is returned, also add some performance improvements
1 parent d870b5f commit 17afc8c

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

simvue/api/objects/base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,10 @@ def get(
412412
f"Expected key 'data' for retrieval of {_class_instance.__class__.__name__.lower()}s"
413413
)
414414

415+
# If data is an empty list
416+
if not _data:
417+
return
418+
415419
for entry in _data:
416420
_id = entry["id"]
417421
yield _id, cls(_read_only=True, identifier=_id, _local=True, **entry)

simvue/client.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,16 @@
3232
from .models import FOLDER_REGEX, NAME_REGEX
3333
from .config.user import SimvueConfiguration
3434
from .api.request import get_json_from_response
35-
from .api.objects import Run, Folder, Tag, Artifact, Alert, FileArtifact, ObjectArtifact
35+
from .api.objects import (
36+
Run,
37+
Folder,
38+
Tag,
39+
Artifact,
40+
Alert,
41+
FileArtifact,
42+
ObjectArtifact,
43+
get_folder_from_path,
44+
)
3645

3746

3847
CONCURRENT_DOWNLOADS = 10
@@ -429,6 +438,9 @@ def delete_folder(
429438
delete_runs=remove_runs, recursive=recursive, runs_only=False
430439
)
431440

441+
if folder_path not in _response.get("folders", []):
442+
raise RuntimeError("Deletion of folder failed, server returned mismatch.")
443+
432444
return _response.get("runs", [])
433445

434446
@prettify_pydantic
@@ -665,17 +677,12 @@ def get_folder(
665677
RuntimeError
666678
if there was a failure when retrieving information from the server
667679
"""
668-
_folders: typing.Generator[tuple[str, Folder], None, None] = Folder.get(
669-
filters=json.dumps([f"path == {folder_path}"])
670-
) # type: ignore
671-
672680
try:
673-
_, _folder = next(_folders)
674-
if not read_only:
675-
_folder.read_only(read_only)
676-
return _folder
677-
except StopIteration:
681+
_folder = get_folder_from_path(path=folder_path)
682+
except ObjectNotFoundError:
678683
return None
684+
_folder.read_only(is_read_only=read_only)
685+
return _folder
679686

680687
@pydantic.validate_call
681688
def get_folders(

0 commit comments

Comments
 (0)