Skip to content

Commit 98c0a2a

Browse files
authored
engine/backup.py: remove conditional code related to target_dir (cvat-ai#9998)
In `TaskExporter`, it is trivially obviated by using "" as the default directory. In `ProjectExporter`, target directories are not supported at all, so remove such parameters completely. Also, add/improve type annotations for all affected methods.
1 parent 9c57111 commit 98c0a2a

File tree

1 file changed

+25
-31
lines changed

1 file changed

+25
-31
lines changed

cvat/apps/engine/backup.py

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,17 @@ def _get_label_mapping(db_labels):
9191

9292

9393
def _write_annotation_guide(
94-
zip_object, annotation_guide, guide_filename, assets_dirname, target_dir=None
95-
):
94+
zip_object: ZipFile,
95+
annotation_guide: Optional[models.AnnotationGuide],
96+
guide_filename: str,
97+
assets_dirname: str,
98+
target_dir: str,
99+
) -> None:
96100
if annotation_guide is not None:
97101
md = annotation_guide.markdown
98102
assets = annotation_guide.assets.all()
99-
assets_dirname = os.path.join(target_dir or "", assets_dirname)
100-
guide_filename = os.path.join(target_dir or "", guide_filename)
103+
assets_dirname = os.path.join(target_dir, assets_dirname)
104+
guide_filename = os.path.join(target_dir, guide_filename)
101105

102106
for db_asset in assets:
103107
md = md.replace(
@@ -386,7 +390,7 @@ def _write_directory(
386390
)
387391

388392
@abstractmethod
389-
def export_to(self, file: str | ZipFile, target_dir: str | None = None): ...
393+
def export_to(self, file: str) -> None: ...
390394

391395
@classmethod
392396
def get_object(cls, pk: int) -> models.Project | models.Task:
@@ -420,7 +424,7 @@ def __init__(self, pk, version=Version.V1, *, lightweight: bool):
420424
self._label_mapping = _get_label_mapping(db_labels)
421425
self._lightweight = lightweight
422426

423-
def _write_annotation_guide(self, zip_object, target_dir=None):
427+
def _write_annotation_guide(self, zip_object: ZipFile, target_dir: str) -> None:
424428
annotation_guide = (
425429
self._db_task.annotation_guide if hasattr(self._db_task, "annotation_guide") else None
426430
)
@@ -432,10 +436,9 @@ def _write_annotation_guide(self, zip_object, target_dir=None):
432436
target_dir=target_dir,
433437
)
434438

435-
def _write_data(self, zip_object, target_dir=None):
436-
target_data_dir = (
437-
os.path.join(target_dir, self.DATA_DIRNAME) if target_dir else self.DATA_DIRNAME
438-
)
439+
def _write_data(self, zip_object: ZipFile, target_dir: str) -> None:
440+
target_data_dir = os.path.join(target_dir, self.DATA_DIRNAME)
441+
439442
if self._db_data.storage == StorageChoice.LOCAL:
440443
data_dir = self._db_data.get_upload_dirname()
441444
self._write_directory(
@@ -547,19 +550,18 @@ def _write_data(self, zip_object, target_dir=None):
547550
else:
548551
raise NotImplementedError
549552

550-
def _write_task(self, zip_object, target_dir=None):
553+
def _write_task(self, zip_object: ZipFile, target_dir: str) -> None:
551554
task_dir = self._db_task.get_dirname()
552-
target_task_dir = (
553-
os.path.join(target_dir, self.TASK_DIRNAME) if target_dir else self.TASK_DIRNAME
554-
)
555+
target_task_dir = os.path.join(target_dir, self.TASK_DIRNAME)
556+
555557
self._write_directory(
556558
source_dir=task_dir,
557559
zip_object=zip_object,
558560
target_dir=target_task_dir,
559561
recursive=False,
560562
)
561563

562-
def _write_manifest(self, zip_object, target_dir=None):
564+
def _write_manifest(self, zip_object: ZipFile, target_dir: str) -> None:
563565
def serialize_task():
564566
task_serializer = TaskReadSerializer(self._db_task)
565567
for field in ("url", "owner", "assignee"):
@@ -674,14 +676,10 @@ def serialize_data():
674676
task["data"] = serialize_data()
675677
task["jobs"] = serialize_jobs()
676678

677-
target_manifest_file = (
678-
os.path.join(target_dir, self.MANIFEST_FILENAME)
679-
if target_dir
680-
else self.MANIFEST_FILENAME
681-
)
679+
target_manifest_file = os.path.join(target_dir, self.MANIFEST_FILENAME)
682680
zip_object.writestr(target_manifest_file, data=JSONRenderer().render(task))
683681

684-
def _write_annotations(self, zip_object: ZipFile, target_dir: Optional[str] = None) -> None:
682+
def _write_annotations(self, zip_object: ZipFile, target_dir: str) -> None:
685683
def serialize_annotations():
686684
db_jobs = self._get_db_jobs()
687685
db_job_ids = (j.id for j in db_jobs)
@@ -708,22 +706,18 @@ def serialize_shapes():
708706
yield self._prepare_annotations(annotation_data, self._label_mapping)
709707

710708
annotations = serialize_annotations()
711-
target_annotations_file = (
712-
os.path.join(target_dir, self.ANNOTATIONS_FILENAME)
713-
if target_dir
714-
else self.ANNOTATIONS_FILENAME
715-
)
709+
target_annotations_file = os.path.join(target_dir, self.ANNOTATIONS_FILENAME)
716710
with zip_object.open(target_annotations_file, "w") as f:
717711
rapidjson.dump(annotations, f)
718712

719-
def _export_task(self, zip_obj, target_dir=None):
713+
def _export_task(self, zip_obj: ZipFile, target_dir: str) -> None:
720714
self._write_data(zip_obj, target_dir)
721715
self._write_task(zip_obj, target_dir)
722716
self._write_manifest(zip_obj, target_dir)
723717
self._write_annotations(zip_obj, target_dir)
724718
self._write_annotation_guide(zip_obj, target_dir)
725719

726-
def export_to(self, file: str | ZipFile, target_dir: str | None = None):
720+
def export_to(self, file: str | ZipFile, target_dir: str = "") -> None:
727721
if (
728722
self._db_task.data.storage_method == StorageMethodChoice.FILE_SYSTEM
729723
and self._db_task.data.storage == StorageChoice.SHARE
@@ -1154,7 +1148,7 @@ def __init__(self, pk, *, lightweight: bool, version: Version = Version.V1):
11541148
self._label_mapping = _get_label_mapping(db_labels)
11551149
self._lightweight = lightweight
11561150

1157-
def _write_annotation_guide(self, zip_object, target_dir=None):
1151+
def _write_annotation_guide(self, zip_object: ZipFile) -> None:
11581152
annotation_guide = (
11591153
self._db_project.annotation_guide
11601154
if hasattr(self._db_project, "annotation_guide")
@@ -1165,7 +1159,7 @@ def _write_annotation_guide(self, zip_object, target_dir=None):
11651159
annotation_guide,
11661160
self.ANNOTATION_GUIDE_FILENAME,
11671161
self.ASSETS_DIRNAME,
1168-
target_dir=target_dir,
1162+
target_dir="",
11691163
)
11701164

11711165
def _write_tasks(self, zip_object):
@@ -1201,7 +1195,7 @@ def serialize_project():
12011195

12021196
zip_object.writestr(self.MANIFEST_FILENAME, data=JSONRenderer().render(project))
12031197

1204-
def export_to(self, file: str, target_dir: str | None = None):
1198+
def export_to(self, file: str) -> None:
12051199
with ZipFile(file, "w") as output_file:
12061200
self._write_annotation_guide(output_file)
12071201
self._write_manifest(output_file)

0 commit comments

Comments
 (0)