supervisely 6.73.221__py3-none-any.whl → 6.73.222__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of supervisely might be problematic. Click here for more details.

supervisely/io/fs.py CHANGED
@@ -1,6 +1,7 @@
1
1
  # coding: utf-8
2
2
 
3
3
  # docs
4
+ import asyncio
4
5
  import errno
5
6
  import mimetypes
6
7
  import os
@@ -10,6 +11,7 @@ import subprocess
10
11
  import tarfile
11
12
  from typing import Callable, Dict, Generator, List, Literal, Optional, Tuple, Union
12
13
 
14
+ import aiofiles
13
15
  import requests
14
16
  from requests.structures import CaseInsensitiveDict
15
17
  from tqdm import tqdm
@@ -1348,3 +1350,126 @@ def str_is_url(string: str) -> bool:
1348
1350
  return all([result.scheme, result.netloc])
1349
1351
  except ValueError:
1350
1352
  return False
1353
+
1354
+
1355
+ async def copy_file_async(
1356
+ src: str,
1357
+ dst: str,
1358
+ progress_cb: Optional[Union[tqdm, Callable]] = None,
1359
+ progress_cb_type: Literal["number", "size"] = "size",
1360
+ ) -> None:
1361
+ """
1362
+ Asynchronously copy file from one path to another, if destination directory doesn't exist it will be created.
1363
+
1364
+ :param src: Source file path.
1365
+ :type src: str
1366
+ :param dst: Destination file path.
1367
+ :type dst: str
1368
+ :param progress_cb: Function for tracking copy progress.
1369
+ :type progress_cb: Union[tqdm, Callable], optional
1370
+ :param progress_cb_type: Type of progress callback. Can be "number" or "size". Default is "size".
1371
+ :type progress_cb_type: Literal["number", "size"], optional
1372
+ :returns: None
1373
+ :rtype: :class:`NoneType`
1374
+ :Usage example:
1375
+
1376
+ .. code-block:: python
1377
+
1378
+ from supervisely.io.fs import async_copy_file
1379
+ await async_copy_file('/home/admin/work/projects/example/1.png', '/home/admin/work/tests/2.png')
1380
+ """
1381
+ ensure_base_path(dst)
1382
+ async with aiofiles.open(dst, "wb") as out_f:
1383
+ async with aiofiles.open(src, "rb") as in_f:
1384
+ while True:
1385
+ chunk = await in_f.read(1024 * 1024)
1386
+ if not chunk:
1387
+ break
1388
+ await out_f.write(chunk)
1389
+ if progress_cb is not None and progress_cb_type == "size":
1390
+ progress_cb(len(chunk))
1391
+ if progress_cb is not None and progress_cb_type == "number":
1392
+ progress_cb(1)
1393
+
1394
+
1395
+ async def get_file_hash_async(path: str) -> str:
1396
+ """
1397
+ Get hash from target file asynchronously.
1398
+
1399
+ :param path: Target file path.
1400
+ :type path: str
1401
+ :returns: File hash
1402
+ :rtype: :class:`str`
1403
+ :Usage example:
1404
+
1405
+ .. code-block:: python
1406
+
1407
+ from supervisely.io.fs import get_file_hash_async
1408
+ hash = await get_file_hash_async('/home/admin/work/projects/examples/1.jpeg') # rKLYA/p/P64dzidaQ/G7itxIz3ZCVnyUhEE9fSMGxU4=
1409
+ """
1410
+ async with aiofiles.open(path, "rb") as file:
1411
+ file_bytes = await file.read()
1412
+ return get_bytes_hash(file_bytes)
1413
+
1414
+
1415
+ async def unpack_archive_async(
1416
+ archive_path: str, target_dir: str, remove_junk=True, is_split=False, chunk_size_mb: int = 50
1417
+ ) -> None:
1418
+ """
1419
+ Unpacks archive to the target directory, removes junk files and directories.
1420
+ To extract a split archive, you must pass the path to the first part in archive_path. Archive parts must be in the same directory. Format: archive_name.tar.001, archive_name.tar.002, etc. Works with tar and zip.
1421
+ You can adjust the size of the chunk to read from the file, while unpacking the file from parts.
1422
+ Be careful with this parameter, it can affect the performance of the function.
1423
+
1424
+ :param archive_path: Path to the archive.
1425
+ :type archive_path: str
1426
+ :param target_dir: Path to the target directory.
1427
+ :type target_dir: str
1428
+ :param remove_junk: Remove junk files and directories. Default is True.
1429
+ :type remove_junk: bool
1430
+ :param is_split: Determines if the source archive is split into parts. If True, archive_path must be the path to the first part. Default is False.
1431
+ :type is_split: bool
1432
+ :param chunk_size_mb: Size of the chunk to read from the file. Default is 50Mb.
1433
+ :type chunk_size_mb: int
1434
+ :returns: None
1435
+ :rtype: :class:`NoneType`
1436
+ :Usage example:
1437
+
1438
+ .. code-block:: python
1439
+
1440
+ import supervisely as sly
1441
+
1442
+ archive_path = '/home/admin/work/examples.tar'
1443
+ target_dir = '/home/admin/work/projects'
1444
+
1445
+ await sly.fs.unpack_archive(archive_path, target_dir)
1446
+ """
1447
+ if is_split:
1448
+ chunk = chunk_size_mb * 1024 * 1024
1449
+ base_name = get_file_name(archive_path)
1450
+ dir_name = os.path.dirname(archive_path)
1451
+ if get_file_ext(base_name) in (".zip", ".tar"):
1452
+ ext = get_file_ext(base_name)
1453
+ base_name = get_file_name(base_name)
1454
+ else:
1455
+ ext = get_file_ext(archive_path)
1456
+ parts = sorted([f for f in os.listdir(dir_name) if f.startswith(base_name)])
1457
+ combined = os.path.join(dir_name, f"combined{ext}")
1458
+
1459
+ async with aiofiles.open(combined, "wb") as output_file:
1460
+ for part in parts:
1461
+ part_path = os.path.join(dir_name, part)
1462
+ async with aiofiles.open(part_path, "rb") as input_file:
1463
+ while True:
1464
+ data = await input_file.read(chunk)
1465
+ if not data:
1466
+ break
1467
+ await output_file.write(data)
1468
+ archive_path = combined
1469
+
1470
+ loop = asyncio.get_running_loop()
1471
+ await loop.run_in_executor(None, shutil.unpack_archive, archive_path, target_dir)
1472
+ if is_split:
1473
+ silent_remove(archive_path)
1474
+ if remove_junk:
1475
+ remove_junk_from_dir(target_dir)
@@ -1,8 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
+ import hashlib
3
4
  import os
4
5
  import os.path as osp
5
- import hashlib
6
6
  import shutil
7
7
 
8
8
  from supervisely.io import fs as sly_fs
@@ -141,6 +141,24 @@ class FileCache(FSCache):
141
141
  def _rm_obj_impl(self, st_path):
142
142
  os.remove(st_path)
143
143
 
144
+ async def _read_obj_impl_async(self, st_path, dst_path):
145
+ sly_fs.ensure_base_path(dst_path)
146
+ await sly_fs.copy_file_async(st_path, dst_path)
147
+
148
+ async def write_object_async(self, src_path, data_hash):
149
+ suffix = self._get_suffix(src_path)
150
+ st_path = self.get_storage_path(data_hash, suffix)
151
+ if not self._storage_obj_exists(st_path, suffix):
152
+ await sly_fs.copy_file_async(src_path, st_path)
153
+
154
+ async def read_object_async(self, data_hash, dst_path):
155
+ suffix = self._get_suffix(dst_path)
156
+ st_path = self.check_storage_object(data_hash, suffix)
157
+ if not st_path:
158
+ return None
159
+ await self._read_obj_impl(st_path, dst_path)
160
+ return dst_path
161
+
144
162
 
145
163
  class NNCache(FSCache):
146
164
  def _storage_obj_exists(self, st_path, suffix):
@@ -3,6 +3,7 @@
3
3
  import time
4
4
  import traceback
5
5
 
6
+ import httpx
6
7
  import requests
7
8
 
8
9
  CONNECTION_ERROR = "Temporary connection error, please wait ..."
@@ -44,18 +45,22 @@ def process_requests_exception(
44
45
  requests.exceptions.Timeout,
45
46
  requests.exceptions.TooManyRedirects,
46
47
  requests.exceptions.ChunkedEncodingError,
48
+ httpx.ConnectError,
49
+ httpx.TimeoutException,
50
+ httpx.TooManyRedirects,
51
+ httpx.ProtocolError,
47
52
  ),
48
53
  )
49
54
 
50
55
  is_server_retryable_error = (
51
- isinstance(exc, requests.exceptions.HTTPError)
56
+ isinstance(exc, (requests.exceptions.HTTPError, httpx.HTTPStatusError))
52
57
  and hasattr(exc, "response")
53
58
  and (exc.response.status_code in RETRY_STATUS_CODES)
54
59
  )
55
60
 
56
61
  is_need_ping_error = False
57
62
  if (
58
- isinstance(exc, requests.exceptions.HTTPError)
63
+ isinstance(exc, (requests.exceptions.HTTPError, httpx.HTTPStatusError))
59
64
  and hasattr(exc, "response")
60
65
  and (exc.response.status_code == 400)
61
66
  ):
@@ -91,7 +96,7 @@ def process_requests_exception(
91
96
  )
92
97
  elif response is None:
93
98
  process_unhandled_request(external_logger, exc)
94
- elif isinstance(exc, requests.exceptions.HTTPError):
99
+ elif isinstance(exc, (requests.exceptions.HTTPError, httpx.HTTPStatusError)):
95
100
  process_invalid_request(external_logger, exc, response, verbose)
96
101
  else:
97
102
  process_unhandled_request(external_logger, exc)
@@ -125,6 +130,18 @@ def process_retryable_request(
125
130
 
126
131
 
127
132
  def process_invalid_request(external_logger, exc, response, verbose=True):
133
+ if type(response) in (httpx.Response, requests.Response):
134
+ reason = (
135
+ response.content.decode("utf-8")
136
+ if not hasattr(response, "is_stream_consumed")
137
+ else "Content is not acessible for streaming responses"
138
+ )
139
+ status_code = response.status_code
140
+ url = response.url
141
+ else:
142
+ reason = "Reason is unknown"
143
+ status_code = None
144
+ url = None
128
145
  if verbose:
129
146
  external_logger.warn(
130
147
  REQUEST_FAILED,
@@ -5,7 +5,7 @@ import inspect
5
5
  import math
6
6
  import re
7
7
  from functools import partial, wraps
8
- from typing import Optional, Union, Dict
8
+ from typing import Dict, Optional, Union
9
9
 
10
10
  from tqdm import tqdm
11
11
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: supervisely
3
- Version: 6.73.221
3
+ Version: 6.73.222
4
4
  Summary: Supervisely Python SDK.
5
5
  Home-page: https://github.com/supervisely/supervisely
6
6
  Author: Supervisely
@@ -68,6 +68,8 @@ Requires-Dist: cacheout==0.14.1
68
68
  Requires-Dist: jsonschema<=4.20.0,>=2.6.0
69
69
  Requires-Dist: pyjwt<3.0.0,>=2.1.0
70
70
  Requires-Dist: zstd
71
+ Requires-Dist: aiofiles
72
+ Requires-Dist: httpx[http2]==0.27.2
71
73
  Provides-Extra: apps
72
74
  Requires-Dist: uvicorn[standard]<1.0.0,>=0.18.2; extra == "apps"
73
75
  Requires-Dist: fastapi<1.0.0,>=0.79.0; extra == "apps"
@@ -22,13 +22,13 @@ supervisely/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  supervisely/api/advanced_api.py,sha256=Nd5cCnHFWc3PSUrCtENxTGtDjS37_lCHXsgXvUI3Ti8,2054
23
23
  supervisely/api/agent_api.py,sha256=ShWAIlXcWXcyI9fqVuP5GZVCigCMJmjnvdGUfLspD6Y,8890
24
24
  supervisely/api/annotation_api.py,sha256=Eps-Jf10_SQFy7DjghUnyiM6DcVJBsamHDViRAXv2fg,51403
25
- supervisely/api/api.py,sha256=YQ939NaIMDrZSb5ael1W8foKZOIIrB0TC2iTBCvTvWA,37198
25
+ supervisely/api/api.py,sha256=Jvc0nQqu6q4-1ey26AJiCcw96BzqP0ORBQqsoKO7gOI,60633
26
26
  supervisely/api/app_api.py,sha256=zX3Iy16RuGwtcLZfMs3YfUFc93S9AVGb3W_eINeMjOs,66729
27
27
  supervisely/api/dataset_api.py,sha256=7iwAyz3pmzFG2i072gLdXjczfBGbyj-V_rRl7Tx-V30,37944
28
- supervisely/api/file_api.py,sha256=PfZe01eUpUHMIT_SCS7fac6WvUqNqPnEQ0XJmJ8TJlE,56223
28
+ supervisely/api/file_api.py,sha256=nRMjL57FrbTRkIo9a7gYd23rEMmTm80JzRmPPomPV8g,76821
29
29
  supervisely/api/github_api.py,sha256=NIexNjEer9H5rf5sw2LEZd7C1WR-tK4t6IZzsgeAAwQ,623
30
30
  supervisely/api/image_annotation_tool_api.py,sha256=YcUo78jRDBJYvIjrd-Y6FJAasLta54nnxhyaGyanovA,5237
31
- supervisely/api/image_api.py,sha256=wnzoCbD5vV8f8joBQsNCbRjoG0jhyAXHe1ZM8YhbCsc,138727
31
+ supervisely/api/image_api.py,sha256=qApsHuZ0QD0g-8QzVw7ra4BAit4-ip647PfSnJ6aRqc,157956
32
32
  supervisely/api/import_storage_api.py,sha256=BDCgmR0Hv6OoiRHLCVPKt3iDxSVlQp1WrnKhAK_Zl84,460
33
33
  supervisely/api/issues_api.py,sha256=BqDJXmNoTzwc3xe6_-mA7FDFC5QQ-ahGbXk_HmpkSeQ,17925
34
34
  supervisely/api/labeling_job_api.py,sha256=odnzZjp29yM16Gq-FYkv-OA4WFMNJCLFo4qSikW2A7c,56280
@@ -54,7 +54,7 @@ supervisely/api/entity_annotation/object_api.py,sha256=gbcNvN_KY6G80Me8fHKQgryc2
54
54
  supervisely/api/entity_annotation/tag_api.py,sha256=jA6q5XuvJ6qAalM9ktGbscbNM07xw4Qo3odkkstvNKY,10882
55
55
  supervisely/api/pointcloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  supervisely/api/pointcloud/pointcloud_annotation_api.py,sha256=_QABI38FCKBc4_VQ0B7jLOKMoRN9FFSt-w-zlEHd44s,7658
57
- supervisely/api/pointcloud/pointcloud_api.py,sha256=Q-1PPr5I-BEd0MjatP_PpwCNUHTO8jOhBkmQjMTHZPc,37534
57
+ supervisely/api/pointcloud/pointcloud_api.py,sha256=mxT3RP3-LBkHN4Waihmy1L34_bQENZQnLGSGE9JA5rc,53399
58
58
  supervisely/api/pointcloud/pointcloud_episode_annotation_api.py,sha256=YGpU7g05XNV9o5daH5mFcUMmPPfgd085yIMNzXOVJqc,7009
59
59
  supervisely/api/pointcloud/pointcloud_episode_api.py,sha256=K_oPJeibj5oRYooeEWuSe6VxlxCYK3D8yLunm7vDeM0,7919
60
60
  supervisely/api/pointcloud/pointcloud_episode_object_api.py,sha256=k2_wV0EVPo9vxSTVe1qOvqVOMSVE6zGDSkfR6TRNsKs,691
@@ -64,14 +64,14 @@ supervisely/api/pointcloud/pointcloud_object_api.py,sha256=bO1USWb9HAywG_CW4CDu1
64
64
  supervisely/api/pointcloud/pointcloud_tag_api.py,sha256=iShtr052nOElxsyMyZEUT2vypEm6kP00gnP13ABX24A,4691
65
65
  supervisely/api/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  supervisely/api/video/video_annotation_api.py,sha256=DwZh11fBLa_AWwdYbpbSH1ZGh_5TFfLJiPKcXuOVc14,9319
67
- supervisely/api/video/video_api.py,sha256=CtHzQDlUh9DQEfSkP0zBxvLXO4nK_oENT35l9_RVdAo,82684
67
+ supervisely/api/video/video_api.py,sha256=iT5Yj6qGKxGAgabBKIAAlp_Egr6fr4dZN57NlDI-e2M,91618
68
68
  supervisely/api/video/video_figure_api.py,sha256=quksohjhgrK2l2-PtbbNE99fOW6uWXX59-_4xfc-I-k,6244
69
69
  supervisely/api/video/video_frame_api.py,sha256=4GwSI4xdCNYEUvTqzKc-Ewd44fw5zqkFoD24jrrN_aY,10214
70
70
  supervisely/api/video/video_object_api.py,sha256=IC0NP8EoIT_d3xxDRgz2cA3ixSiuJ5ymy64eS-RfmDM,2227
71
71
  supervisely/api/video/video_tag_api.py,sha256=oJgdJt_0w-5UfXaxZ7jdxK0PetZjax1vOfjm0IMYwe8,12266
72
72
  supervisely/api/volume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  supervisely/api/volume/volume_annotation_api.py,sha256=6s7p9nlNYHOMbhfFmVBGJizEKkA-yKEAiuHJZcAqEzM,18190
74
- supervisely/api/volume/volume_api.py,sha256=uUfEAZumcB3mbyMOZlcudzFQThCebildGc2WrhccMKA,46420
74
+ supervisely/api/volume/volume_api.py,sha256=j8TGNnOY53IDKybuqpTNIWjnCRi8hmTBmfGTMxCj5oQ,55439
75
75
  supervisely/api/volume/volume_figure_api.py,sha256=WwmcMw7o3Nvyv52tzmz64yF-WJI0qzAU-zL2JlD7_w0,26039
76
76
  supervisely/api/volume/volume_object_api.py,sha256=F7pLV2MTlBlyN6fEKdxBSUatIMGWSuu8bWj3Hvcageo,2139
77
77
  supervisely/api/volume/volume_tag_api.py,sha256=yNGgXz44QBSW2VGlNDOVLqLXnH8Q2fFrxDFb_girYXA,3639
@@ -554,10 +554,10 @@ supervisely/collection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
554
554
  supervisely/collection/key_indexed_collection.py,sha256=x2UVlkprspWhhae9oLUzjTWBoIouiWY9UQSS_MozfH0,37643
555
555
  supervisely/collection/str_enum.py,sha256=Zp29yFGvnxC6oJRYNNlXhO2lTSdsriU1wiGHj6ahEJE,1250
556
556
  supervisely/convert/__init__.py,sha256=gRTV93OYJPI3FNfy78HO2SfR59qQ3FFKFSy_jw1adJ8,2571
557
- supervisely/convert/base_converter.py,sha256=6HAiKPuwHS-aP7id4JCb650k9fjYrMJc_xILcO1BUwI,14717
558
- supervisely/convert/converter.py,sha256=0F93xZmyprua63C6KxIeh0AbaFab81LiWqlkOVrkaYU,8672
557
+ supervisely/convert/base_converter.py,sha256=1WS9e5pjAw0G7lsw2CL9VT4zSALEm5wnptCJRJwSOQo,16205
558
+ supervisely/convert/converter.py,sha256=28ztDxgS0dv63EqcomHbvl3FWZAbQDO0pCLaWK_NBn8,8688
559
559
  supervisely/convert/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
560
- supervisely/convert/image/image_converter.py,sha256=6GC8-erDTIJnjkcDvaxs8VAItBNsJrMHaZtOcOsphew,9537
560
+ supervisely/convert/image/image_converter.py,sha256=awRCQkg1NukpFz0WqnGXJsrrUXaqO2I5zcMuz--2bzk,10076
561
561
  supervisely/convert/image/image_helper.py,sha256=RkBAyxxXmDG1Z5WFuO9kBDK8MN1Kl7Z25DX9-CwZ7OI,3647
562
562
  supervisely/convert/image/cityscapes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
563
563
  supervisely/convert/image/cityscapes/cityscapes_converter.py,sha256=msmsR2W-Xiod06dwn-MzmkbrEmQQqlKh7zyfTrW6YQw,7854
@@ -595,8 +595,8 @@ supervisely/convert/image/pdf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
595
595
  supervisely/convert/image/pdf/pdf_converter.py,sha256=LKvVng9jPp0cSIjYEjKLOb48wtdOdB7LXS2gjmOdZhE,2442
596
596
  supervisely/convert/image/pdf/pdf_helper.py,sha256=IDwLEvsVy8lu-KC1lXvSRkZZ9BCC6ylebnNEtLQU5L4,1288
597
597
  supervisely/convert/image/sly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
598
- supervisely/convert/image/sly/fast_sly_image_converter.py,sha256=bmJTA-ty_P6oU4SBiiUi5PUzX7OfwX8OBXN8XHiSJmw,5308
599
- supervisely/convert/image/sly/sly_image_converter.py,sha256=Qxp8F_loZMpzLFRiQw1RC4ZWsZeyQ4c3n_ldlBiZZE8,12010
598
+ supervisely/convert/image/sly/fast_sly_image_converter.py,sha256=pZmQzhx9FrHwgVnJgqp-37Cn3zAnPww6MLa1grL6aWM,5429
599
+ supervisely/convert/image/sly/sly_image_converter.py,sha256=9fUdz4hG5jMDyXiXgazps9cTbG0NkevTSFh08uz-IR0,12263
600
600
  supervisely/convert/image/sly/sly_image_helper.py,sha256=5Ri8fKb5dzh5b3v8AJ5u8xVFOQfAtoWqZ7HktPsCjTI,7373
601
601
  supervisely/convert/image/yolo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
602
602
  supervisely/convert/image/yolo/yolo_converter.py,sha256=cg5___X5MzvR-rZbNLmaKtr0MdRnyqtEzbBq5UBnYZ0,11171
@@ -623,13 +623,13 @@ supervisely/convert/pointcloud_episodes/sly/__init__.py,sha256=47DEQpj8HBSa-_TIm
623
623
  supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_converter.py,sha256=7ONcZMOUJCNpmc0tmMX6FnNG0lu8Nj9K2SSTQHaSXFM,6188
624
624
  supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_helper.py,sha256=h4WvNH6cEHtjxxhCnU7Hs2vkyJMye0qwabqXNYVTywE,3570
625
625
  supervisely/convert/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
626
- supervisely/convert/video/video_converter.py,sha256=ZMvZfrzglh5GsSp7fbtQwNsijDqPRrVmPxwAlGVAqOk,10648
626
+ supervisely/convert/video/video_converter.py,sha256=uai1lzl7WHcoBFQo6vFr8iyxsfAS4bxlM4pyZqGu17A,11087
627
627
  supervisely/convert/video/davis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
628
628
  supervisely/convert/video/davis/davis_converter.py,sha256=zaPsJdN6AvyPT7fVnswuPbgrz5T-X2RFbHEdkuMhWGk,415
629
629
  supervisely/convert/video/mot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
630
630
  supervisely/convert/video/mot/mot_converter.py,sha256=wXbv-9Psc2uVnhzHuOt5VnRIvSg70NDPQSoKdWwL4Lo,490
631
631
  supervisely/convert/video/sly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
632
- supervisely/convert/video/sly/sly_video_converter.py,sha256=o14KCB2oNDUR8UUybFBtVx7bvNjsxJD62PSKlGBV5Z8,4125
632
+ supervisely/convert/video/sly/sly_video_converter.py,sha256=S2qif7JFxqIi9VN_ez_iBtoJXpG9W6Ky2k5Er3-DtUo,4418
633
633
  supervisely/convert/video/sly/sly_video_helper.py,sha256=D8PgoXpi0y3z-VEqvBLDf_gSUQ2hTL3irrfJyGhaV0Y,6758
634
634
  supervisely/convert/volume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
635
635
  supervisely/convert/volume/volume_converter.py,sha256=3jpt2Yn_G4FSP_vHFsJHQfYNQpT7q6ar_sRyr_xrPnA,5335
@@ -684,12 +684,12 @@ supervisely/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
684
684
  supervisely/io/docker_utils.py,sha256=hb_HXGM8IYB0PF-nD7NxMwaHgzaxIFxofsUzQ_RCUZI,7935
685
685
  supervisely/io/env.py,sha256=8HGnJz7ikkgjPhz77J3UyNU5_umvJlLhxVOKGCgvdas,16907
686
686
  supervisely/io/exception_handlers.py,sha256=wvSP3Sp8HpAPSqri8rNAcitKO3I9dBfBp_somnmCA8A,36465
687
- supervisely/io/fs.py,sha256=-imleo2PmYrpiU02IkwzA5F_kRKo4SY63HbTNTNwHGw,45066
688
- supervisely/io/fs_cache.py,sha256=UvG27YGuLHOahY-cVchYXciTZNEM2aJfh0TAnP_xeeQ,5784
687
+ supervisely/io/fs.py,sha256=2bJxFURUhwoymR2WN3OPHkYdc-FMclrgskr42XrjaGc,49874
688
+ supervisely/io/fs_cache.py,sha256=985gvBGzveLcDudgz10E4EWVjP9jxdU1Pa0GFfCBoCA,6520
689
689
  supervisely/io/github_utils.py,sha256=jGmvQJ5bjtACuSFABzrxL0jJdh14SezovrHp8T-9y8g,1779
690
690
  supervisely/io/json.py,sha256=7RGAk72FpPtlHYcyo7-uWZf5IAvQJg_nM09RpXBpaNo,7588
691
691
  supervisely/io/multipart_stream_decoder.py,sha256=rCheeSCAGdw2tNyaWEYa4dvoIDuldXOxH86RVB82c78,14417
692
- supervisely/io/network_exceptions.py,sha256=ka5ce-L4brzqnzARFpma5zmVZaq1ojgVZcfxzWQPTJ8,4126
692
+ supervisely/io/network_exceptions.py,sha256=eegxgbtkbKpbjPdiATXpvUSMpe6AFPiu0IAKyxPSXms,4777
693
693
  supervisely/labeling_jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
694
694
  supervisely/labeling_jobs/constants.py,sha256=GF_pwF9fC9_DGbpD3cAk3llifskAxpDmyuXwxM1f3Hw,104
695
695
  supervisely/labeling_jobs/utils.py,sha256=XOGF2cbnTGbXFdT5jGL1LIPQfiCEJgRkmKNIjTlFois,22656
@@ -951,7 +951,7 @@ supervisely/script/__init__.py,sha256=pG-YPVG0gJIJ6s4xcAz9S_CnUxpUcz33wl9eNUSgxG
951
951
  supervisely/script/utils.py,sha256=9ZP0yelTIJgjmzrKjpm2JRED0ll-pGEwKIV4b87RCww,54
952
952
  supervisely/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
953
953
  supervisely/task/paths.py,sha256=Zk9zPhuJuq2eZnb8rLt1ED6sbwX6ikHYRSZQvDP0OBg,1197
954
- supervisely/task/progress.py,sha256=C7E9rDNnNYJezjmjCJPL1oXqH-LVm15p3OLetvapWaE,27667
954
+ supervisely/task/progress.py,sha256=Cl-wiHf3m8jw7-odnc1kZxCewS8_cePijo2k0nZKx14,27667
955
955
  supervisely/task/task_logger.py,sha256=_uDfqEtiwetga6aDAqcTKCKqHjZJSuUXTsHSQFNxAvI,3531
956
956
  supervisely/team_files/__init__.py,sha256=mtz0Z7eFvsykOcEnSVZ-5bNHsq0_YsNBjZK3qngO-DY,149
957
957
  supervisely/team_files/team_files_path.py,sha256=dSqz-bycImQYwAs62TD1zCD1NQdysqCQIBhEVh9EDjw,177
@@ -997,9 +997,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
997
997
  supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
998
998
  supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
999
999
  supervisely_lib/__init__.py,sha256=7-3QnN8Zf0wj8NCr2oJmqoQWMKKPKTECvjH9pd2S5vY,159
1000
- supervisely-6.73.221.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1001
- supervisely-6.73.221.dist-info/METADATA,sha256=2F4Io8Yd8IAMGT1n7eNXEzMTvqAyH53k420bqxMBh2Q,33090
1002
- supervisely-6.73.221.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
1003
- supervisely-6.73.221.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1004
- supervisely-6.73.221.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1005
- supervisely-6.73.221.dist-info/RECORD,,
1000
+ supervisely-6.73.222.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1001
+ supervisely-6.73.222.dist-info/METADATA,sha256=DroKQISsTeuEV88V31a_m2181xpXUQ72dOCsQi7azRs,33150
1002
+ supervisely-6.73.222.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
1003
+ supervisely-6.73.222.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1004
+ supervisely-6.73.222.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1005
+ supervisely-6.73.222.dist-info/RECORD,,