diff --git a/cvat/apps/engine/backup.py b/cvat/apps/engine/backup.py index 927689f3b29..87f9244fc53 100644 --- a/cvat/apps/engine/backup.py +++ b/cvat/apps/engine/backup.py @@ -3,7 +3,7 @@ # # SPDX-License-Identifier: MIT -import encodings +import codecs import io import json import mimetypes @@ -613,7 +613,7 @@ def serialize_annotations(): annotations = serialize_annotations() target_annotations_file = os.path.join(target_dir, self.ANNOTATIONS_FILENAME) if target_dir else self.ANNOTATIONS_FILENAME with zip_object.open(target_annotations_file, 'w') as f: - json.dump(annotations, encodings.utf_8.StreamWriter(f), separators=(',', ':')) + json.dump(annotations, codecs.getwriter('utf-8')(f), separators=(',', ':')) def _export_task(self, zip_obj, target_dir=None): self._write_data(zip_obj, target_dir) diff --git a/cvat/requirements/base.in b/cvat/requirements/base.in index c812da5440b..380e066d889 100644 --- a/cvat/requirements/base.in +++ b/cvat/requirements/base.in @@ -33,6 +33,7 @@ djangorestframework>=3.15.2,<4 drf-spectacular==0.26.2 furl==2.1.0 google-cloud-storage==1.42.0 +json-stream>=2.0 lxml>=5.2.1,<6 natsort==8.0.0 numpy~=1.22.2 @@ -57,4 +58,3 @@ rq==1.16.0 rules>=3.3 Shapely==1.7.1 xmlsec>=1.3.14,<2 -json-stream>=2.0