supervisely 6.73.226__py3-none-any.whl → 6.73.227__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/__init__.py +1 -1
- supervisely/_utils.py +23 -0
- supervisely/api/annotation_api.py +184 -14
- supervisely/api/api.py +2 -2
- supervisely/api/entity_annotation/figure_api.py +11 -2
- supervisely/api/file_api.py +144 -8
- supervisely/api/image_api.py +5 -10
- supervisely/api/pointcloud/pointcloud_api.py +4 -8
- supervisely/api/video/video_annotation_api.py +45 -0
- supervisely/api/video/video_api.py +2 -4
- supervisely/api/volume/volume_api.py +2 -4
- supervisely/convert/base_converter.py +14 -10
- supervisely/io/fs.py +55 -8
- supervisely/io/json.py +32 -0
- supervisely/project/download.py +176 -64
- supervisely/project/project.py +676 -35
- supervisely/project/video_project.py +293 -3
- {supervisely-6.73.226.dist-info → supervisely-6.73.227.dist-info}/METADATA +1 -1
- {supervisely-6.73.226.dist-info → supervisely-6.73.227.dist-info}/RECORD +23 -23
- {supervisely-6.73.226.dist-info → supervisely-6.73.227.dist-info}/LICENSE +0 -0
- {supervisely-6.73.226.dist-info → supervisely-6.73.227.dist-info}/WHEEL +0 -0
- {supervisely-6.73.226.dist-info → supervisely-6.73.227.dist-info}/entry_points.txt +0 -0
- {supervisely-6.73.226.dist-info → supervisely-6.73.227.dist-info}/top_level.txt +0 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# docs
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
import asyncio
|
|
6
7
|
import os
|
|
7
8
|
from collections import namedtuple
|
|
8
9
|
from typing import Callable, Dict, List, NamedTuple, Optional, Tuple, Union
|
|
@@ -11,17 +12,18 @@ from tqdm import tqdm
|
|
|
11
12
|
|
|
12
13
|
from supervisely._utils import batched
|
|
13
14
|
from supervisely.api.api import Api
|
|
15
|
+
from supervisely.api.dataset_api import DatasetInfo
|
|
14
16
|
from supervisely.api.module_api import ApiField
|
|
15
17
|
from supervisely.api.video.video_api import VideoInfo
|
|
16
18
|
from supervisely.collection.key_indexed_collection import KeyIndexedCollection
|
|
17
|
-
from supervisely.io.fs import
|
|
18
|
-
from supervisely.io.json import dump_json_file, load_json_file
|
|
19
|
+
from supervisely.io.fs import mkdir, touch, touch_async
|
|
20
|
+
from supervisely.io.json import dump_json_file, dump_json_file_async, load_json_file
|
|
19
21
|
from supervisely.project.project import Dataset, OpenMode, Project
|
|
20
22
|
from supervisely.project.project import read_single_project as read_project_wrapper
|
|
21
23
|
from supervisely.project.project_meta import ProjectMeta
|
|
22
24
|
from supervisely.project.project_type import ProjectType
|
|
23
25
|
from supervisely.sly_logger import logger
|
|
24
|
-
from supervisely.task.progress import
|
|
26
|
+
from supervisely.task.progress import tqdm_sly
|
|
25
27
|
from supervisely.video import video as sly_video
|
|
26
28
|
from supervisely.video_annotation.key_id_map import KeyIdMap
|
|
27
29
|
from supervisely.video_annotation.video_annotation import VideoAnnotation
|
|
@@ -1166,6 +1168,78 @@ class VideoProject(Project):
|
|
|
1166
1168
|
progress_cb=progress_cb,
|
|
1167
1169
|
)
|
|
1168
1170
|
|
|
1171
|
+
@staticmethod
|
|
1172
|
+
async def download_async(
|
|
1173
|
+
api: Api,
|
|
1174
|
+
project_id: int,
|
|
1175
|
+
dest_dir: str,
|
|
1176
|
+
semaphore: asyncio.Semaphore = None,
|
|
1177
|
+
dataset_ids: List[int] = None,
|
|
1178
|
+
download_videos: bool = True,
|
|
1179
|
+
save_video_info: bool = False,
|
|
1180
|
+
log_progress: bool = True,
|
|
1181
|
+
progress_cb: Optional[Union[tqdm, Callable]] = None,
|
|
1182
|
+
include_custom_data: bool = False,
|
|
1183
|
+
) -> None:
|
|
1184
|
+
"""
|
|
1185
|
+
Download video project from Supervisely to the given directory asynchronously.
|
|
1186
|
+
|
|
1187
|
+
:param api: Supervisely Api class object.
|
|
1188
|
+
:type api: :class:`Api<supervisely.api.api.Api>`
|
|
1189
|
+
:param project_id: Project ID in Supervisely.
|
|
1190
|
+
:type project_id: :class:`int`
|
|
1191
|
+
:param dest_dir: Directory to download video project.
|
|
1192
|
+
:type dest_dir: :class:`str`
|
|
1193
|
+
:param semaphore: Semaphore to limit the number of concurrent downloads of items.
|
|
1194
|
+
:type semaphore: :class:`asyncio.Semaphore`, optional
|
|
1195
|
+
:param dataset_ids: Datasets IDs in Supervisely to download.
|
|
1196
|
+
:type dataset_ids: :class:`list` [ :class:`int` ], optional
|
|
1197
|
+
:param download_videos: Download videos from Supervisely video project in dest_dir or not.
|
|
1198
|
+
:type download_videos: :class:`bool`, optional
|
|
1199
|
+
:param save_video_info: Save video infos or not.
|
|
1200
|
+
:type save_video_info: :class:`bool`, optional
|
|
1201
|
+
:param log_progress: Log download progress or not.
|
|
1202
|
+
:type log_progress: :class:`bool`
|
|
1203
|
+
:param progress_cb: Function for tracking download progress.
|
|
1204
|
+
:type progress_cb: :class:`tqdm`, optional
|
|
1205
|
+
:param include_custom_data: Include custom data in the download.
|
|
1206
|
+
:type include_custom_data: :class:`bool`, optional
|
|
1207
|
+
:return: None
|
|
1208
|
+
:rtype: NoneType
|
|
1209
|
+
:Usage example:
|
|
1210
|
+
|
|
1211
|
+
.. code-block:: python
|
|
1212
|
+
|
|
1213
|
+
import supervisely as sly
|
|
1214
|
+
|
|
1215
|
+
os.environ['SERVER_ADDRESS'] = 'https://app.supervisely.com'
|
|
1216
|
+
os.environ['API_TOKEN'] = 'Your Supervisely API Token'
|
|
1217
|
+
api = sly.Api.from_env()
|
|
1218
|
+
|
|
1219
|
+
save_directory = "/home/admin/work/supervisely/source/video_project"
|
|
1220
|
+
project_id = 8888
|
|
1221
|
+
|
|
1222
|
+
loop = sly.utils.get_or_create_event_loop()
|
|
1223
|
+
coroutine = sly.VideoProject.download_async(api, project_id, save_directory)
|
|
1224
|
+
if loop.is_running():
|
|
1225
|
+
future = asyncio.run_coroutine_threadsafe(coroutine, loop)
|
|
1226
|
+
future.result()
|
|
1227
|
+
else:
|
|
1228
|
+
loop.run_until_complete(coroutine)
|
|
1229
|
+
"""
|
|
1230
|
+
await download_video_project_async(
|
|
1231
|
+
api=api,
|
|
1232
|
+
project_id=project_id,
|
|
1233
|
+
dest_dir=dest_dir,
|
|
1234
|
+
semaphore=semaphore,
|
|
1235
|
+
dataset_ids=dataset_ids,
|
|
1236
|
+
download_videos=download_videos,
|
|
1237
|
+
save_video_info=save_video_info,
|
|
1238
|
+
log_progress=log_progress,
|
|
1239
|
+
progress_cb=progress_cb,
|
|
1240
|
+
include_custom_data=include_custom_data,
|
|
1241
|
+
)
|
|
1242
|
+
|
|
1169
1243
|
|
|
1170
1244
|
def download_video_project(
|
|
1171
1245
|
api: Api,
|
|
@@ -1458,3 +1532,219 @@ def upload_video_project(
|
|
|
1458
1532
|
raise e
|
|
1459
1533
|
|
|
1460
1534
|
return project.id, project.name
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
async def download_video_project_async(
|
|
1538
|
+
api: Api,
|
|
1539
|
+
project_id: int,
|
|
1540
|
+
dest_dir: str,
|
|
1541
|
+
semaphore: Optional[asyncio.Semaphore] = None,
|
|
1542
|
+
dataset_ids: Optional[List[int]] = None,
|
|
1543
|
+
download_videos: Optional[bool] = True,
|
|
1544
|
+
save_video_info: Optional[bool] = False,
|
|
1545
|
+
log_progress: bool = True,
|
|
1546
|
+
progress_cb: Optional[Union[tqdm, Callable]] = None,
|
|
1547
|
+
include_custom_data: Optional[bool] = False,
|
|
1548
|
+
) -> None:
|
|
1549
|
+
"""
|
|
1550
|
+
Download video project to the local directory.
|
|
1551
|
+
|
|
1552
|
+
:param api: Supervisely API address and token.
|
|
1553
|
+
:type api: Api
|
|
1554
|
+
:param project_id: Project ID to download
|
|
1555
|
+
:type project_id: int
|
|
1556
|
+
:param dest_dir: Destination path to local directory.
|
|
1557
|
+
:type dest_dir: str
|
|
1558
|
+
:param semaphore: Semaphore to limit the number of simultaneous downloads of items.
|
|
1559
|
+
:type semaphore: asyncio.Semaphore, optional
|
|
1560
|
+
:param dataset_ids: Specified list of Dataset IDs which will be downloaded. Datasets could be downloaded from different projects but with the same data type.
|
|
1561
|
+
:type dataset_ids: list(int), optional
|
|
1562
|
+
:param download_videos: Include videos in the download.
|
|
1563
|
+
:type download_videos: bool, optional
|
|
1564
|
+
:param save_video_info: Include video info in the download.
|
|
1565
|
+
:type save_video_info: bool, optional
|
|
1566
|
+
:param log_progress: Show downloading logs in the output.
|
|
1567
|
+
:type log_progress: bool
|
|
1568
|
+
:param progress_cb: Function for tracking the download progress.
|
|
1569
|
+
:type progress_cb: tqdm or callable, optional
|
|
1570
|
+
:param include_custom_data: Include custom data in the download.
|
|
1571
|
+
:type include_custom_data: bool, optional
|
|
1572
|
+
:return: None.
|
|
1573
|
+
:rtype: NoneType
|
|
1574
|
+
:Usage example:
|
|
1575
|
+
|
|
1576
|
+
.. code-block:: python
|
|
1577
|
+
|
|
1578
|
+
import os
|
|
1579
|
+
from dotenv import load_dotenv
|
|
1580
|
+
|
|
1581
|
+
from tqdm import tqdm
|
|
1582
|
+
import supervisely as sly
|
|
1583
|
+
|
|
1584
|
+
os.environ['SERVER_ADDRESS'] = 'https://app.supervisely.com'
|
|
1585
|
+
os.environ['API_TOKEN'] = 'Your Supervisely API Token'
|
|
1586
|
+
api = sly.Api.from_env()
|
|
1587
|
+
|
|
1588
|
+
dest_dir = 'your/local/dest/dir'
|
|
1589
|
+
project_id = 17758
|
|
1590
|
+
|
|
1591
|
+
loop = sly.utils.get_or_create_event_loop()
|
|
1592
|
+
loop.run_until_complete(
|
|
1593
|
+
sly.download_async(api, project_id, dest_dir)
|
|
1594
|
+
)
|
|
1595
|
+
"""
|
|
1596
|
+
if semaphore is None:
|
|
1597
|
+
semaphore = api._get_default_semaphore()
|
|
1598
|
+
|
|
1599
|
+
key_id_map = KeyIdMap()
|
|
1600
|
+
|
|
1601
|
+
project_fs = VideoProject(dest_dir, OpenMode.CREATE)
|
|
1602
|
+
|
|
1603
|
+
meta = ProjectMeta.from_json(api.project.get_meta(project_id))
|
|
1604
|
+
project_fs.set_meta(meta)
|
|
1605
|
+
|
|
1606
|
+
if progress_cb is not None:
|
|
1607
|
+
log_progress = False
|
|
1608
|
+
|
|
1609
|
+
datasets = []
|
|
1610
|
+
if dataset_ids is not None:
|
|
1611
|
+
for ds_id in dataset_ids:
|
|
1612
|
+
datasets.append(api.dataset.get_info_by_id(ds_id))
|
|
1613
|
+
else:
|
|
1614
|
+
datasets = api.dataset.get_list(project_id, recursive=True)
|
|
1615
|
+
|
|
1616
|
+
for dataset in datasets:
|
|
1617
|
+
dataset_fs = project_fs.create_dataset(dataset.name)
|
|
1618
|
+
videos = api.video.get_list(dataset.id)
|
|
1619
|
+
|
|
1620
|
+
if log_progress is True:
|
|
1621
|
+
progress_cb = tqdm_sly(
|
|
1622
|
+
desc="Downloading videos from {!r}".format(dataset.name),
|
|
1623
|
+
total=len(videos),
|
|
1624
|
+
)
|
|
1625
|
+
|
|
1626
|
+
tasks = []
|
|
1627
|
+
for video in videos:
|
|
1628
|
+
task = _download_project_item_async(
|
|
1629
|
+
api=api,
|
|
1630
|
+
video=video,
|
|
1631
|
+
semaphore=semaphore,
|
|
1632
|
+
dataset=dataset,
|
|
1633
|
+
dest_dir=dest_dir,
|
|
1634
|
+
project_fs=project_fs,
|
|
1635
|
+
key_id_map=key_id_map,
|
|
1636
|
+
dataset_fs=dataset_fs,
|
|
1637
|
+
include_custom_data=include_custom_data,
|
|
1638
|
+
download_videos=download_videos,
|
|
1639
|
+
save_video_info=save_video_info,
|
|
1640
|
+
progress_cb=progress_cb,
|
|
1641
|
+
)
|
|
1642
|
+
tasks.append(task)
|
|
1643
|
+
await asyncio.gather(*tasks)
|
|
1644
|
+
|
|
1645
|
+
project_fs.set_key_id_map(key_id_map)
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
def _log_warning(
|
|
1649
|
+
video: VideoInfo,
|
|
1650
|
+
video_file_path: Optional[str] = None,
|
|
1651
|
+
ann_json: Optional[dict] = None,
|
|
1652
|
+
item_info: Optional[dict] = None,
|
|
1653
|
+
):
|
|
1654
|
+
"""
|
|
1655
|
+
This function logs a warning with additional information for debugging.
|
|
1656
|
+
It is used in the _download_project_item_async function.
|
|
1657
|
+
"""
|
|
1658
|
+
logger.info(
|
|
1659
|
+
"INFO FOR DEBUGGING",
|
|
1660
|
+
extra={
|
|
1661
|
+
"project_id": video.project_id,
|
|
1662
|
+
"dataset_id": video.dataset_id,
|
|
1663
|
+
"video_id": video.id,
|
|
1664
|
+
"video_name": video.name,
|
|
1665
|
+
"video_file_path": video_file_path,
|
|
1666
|
+
"ann_json": ann_json,
|
|
1667
|
+
"item_info": item_info,
|
|
1668
|
+
},
|
|
1669
|
+
)
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
async def _download_project_item_async(
|
|
1673
|
+
api: Api,
|
|
1674
|
+
video: VideoInfo,
|
|
1675
|
+
semaphore: asyncio.Semaphore,
|
|
1676
|
+
dataset: DatasetInfo,
|
|
1677
|
+
dest_dir: str,
|
|
1678
|
+
project_fs: Project,
|
|
1679
|
+
key_id_map: KeyIdMap,
|
|
1680
|
+
dataset_fs: VideoDataset,
|
|
1681
|
+
include_custom_data: bool,
|
|
1682
|
+
download_videos: bool,
|
|
1683
|
+
save_video_info: bool = False,
|
|
1684
|
+
progress_cb: Optional[Union[tqdm, Callable]] = None,
|
|
1685
|
+
) -> None:
|
|
1686
|
+
"""
|
|
1687
|
+
This function downloads a video item from the project in Supervisely platform asynchronously.
|
|
1688
|
+
"""
|
|
1689
|
+
|
|
1690
|
+
try:
|
|
1691
|
+
ann_json = await api.video.annotation.download_async(video.id, video, semaphore=semaphore)
|
|
1692
|
+
ann_json = ann_json[0]
|
|
1693
|
+
except Exception as e:
|
|
1694
|
+
_log_warning(video)
|
|
1695
|
+
raise e
|
|
1696
|
+
|
|
1697
|
+
video_file_path = dataset_fs.generate_item_path(video.name)
|
|
1698
|
+
|
|
1699
|
+
if include_custom_data:
|
|
1700
|
+
CUSTOM_DATA_DIR = os.path.join(dest_dir, dataset.name, "custom_data")
|
|
1701
|
+
mkdir(CUSTOM_DATA_DIR)
|
|
1702
|
+
custom_data_path = os.path.join(CUSTOM_DATA_DIR, f"{video.name}.json")
|
|
1703
|
+
await dump_json_file_async(video.custom_data, custom_data_path)
|
|
1704
|
+
|
|
1705
|
+
if download_videos:
|
|
1706
|
+
try:
|
|
1707
|
+
video_file_size = video.file_meta.get("size")
|
|
1708
|
+
if progress_cb is not None and video_file_size is not None:
|
|
1709
|
+
item_progress = tqdm_sly(
|
|
1710
|
+
desc=f"Downloading '{video.name}'",
|
|
1711
|
+
total=int(video_file_size),
|
|
1712
|
+
unit="B",
|
|
1713
|
+
unit_scale=True,
|
|
1714
|
+
leave=False,
|
|
1715
|
+
)
|
|
1716
|
+
await api.video.download_path_async(
|
|
1717
|
+
video.id,
|
|
1718
|
+
video_file_path,
|
|
1719
|
+
semaphore=semaphore,
|
|
1720
|
+
progress_cb=item_progress,
|
|
1721
|
+
progress_cb_type="size",
|
|
1722
|
+
)
|
|
1723
|
+
else:
|
|
1724
|
+
await api.video.download_path_async(video.id, video_file_path, semaphore=semaphore)
|
|
1725
|
+
except Exception as e:
|
|
1726
|
+
_log_warning(video, video_file_path)
|
|
1727
|
+
raise e
|
|
1728
|
+
else:
|
|
1729
|
+
await touch_async(video_file_path)
|
|
1730
|
+
item_info = video._asdict() if save_video_info else None
|
|
1731
|
+
try:
|
|
1732
|
+
video_ann = VideoAnnotation.from_json(ann_json, project_fs.meta, key_id_map)
|
|
1733
|
+
except Exception as e:
|
|
1734
|
+
_log_warning(video, ann_json=ann_json)
|
|
1735
|
+
raise e
|
|
1736
|
+
try:
|
|
1737
|
+
await dataset_fs.add_item_file_async(
|
|
1738
|
+
video.name,
|
|
1739
|
+
video_file_path,
|
|
1740
|
+
ann=video_ann,
|
|
1741
|
+
_validate_item=False,
|
|
1742
|
+
_use_hardlink=True,
|
|
1743
|
+
item_info=item_info,
|
|
1744
|
+
)
|
|
1745
|
+
except Exception as e:
|
|
1746
|
+
_log_warning(video, video_file_path, item_info)
|
|
1747
|
+
raise e
|
|
1748
|
+
|
|
1749
|
+
if progress_cb is not None:
|
|
1750
|
+
progress_cb(1)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
supervisely/README.md,sha256=XM-DiMC6To3I9RjQZ0c61905EFRR_jnCUx2q3uNR-X8,3331
|
|
2
|
-
supervisely/__init__.py,sha256=
|
|
3
|
-
supervisely/_utils.py,sha256=
|
|
2
|
+
supervisely/__init__.py,sha256=mpj1kUpy8jURvMixE8b1QDccHDao-C-RSkYNM-2UL2k,10800
|
|
3
|
+
supervisely/_utils.py,sha256=HV3PhGMbTIu5r95p8PqT7tzx84xEYb2uYI78OSy6xEA,12987
|
|
4
4
|
supervisely/function_wrapper.py,sha256=R5YajTQ0GnRp2vtjwfC9hINkzQc0JiyGsu8TER373xY,1912
|
|
5
5
|
supervisely/sly_logger.py,sha256=LG1wTyyctyEKuCuKM2IKf_SMPH7BzkTsFdO-0tnorzg,6225
|
|
6
6
|
supervisely/tiny_timer.py,sha256=hkpe_7FE6bsKL79blSs7WBaktuPavEVu67IpEPrfmjE,183
|
|
@@ -21,14 +21,14 @@ supervisely/annotation/tag_meta_mapper.py,sha256=RWeTrxJ64syodyhXIRSH007bX6Hr3B4
|
|
|
21
21
|
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
|
-
supervisely/api/annotation_api.py,sha256=
|
|
25
|
-
supervisely/api/api.py,sha256=
|
|
24
|
+
supervisely/api/annotation_api.py,sha256=kgbxlAmvwLX7nMFnQ23hZDZryD3tVSehfqRkLEGXQXA,58828
|
|
25
|
+
supervisely/api/api.py,sha256=BdN99Znu_nLjnt--i6xoN9W4v0Am3kYlkqZZeIy4UuE,60633
|
|
26
26
|
supervisely/api/app_api.py,sha256=hjoL24Nc1POlIqz5bkpMBij5D-cwCHvkznkaGpODyzA,67086
|
|
27
27
|
supervisely/api/dataset_api.py,sha256=7iwAyz3pmzFG2i072gLdXjczfBGbyj-V_rRl7Tx-V30,37944
|
|
28
|
-
supervisely/api/file_api.py,sha256=
|
|
28
|
+
supervisely/api/file_api.py,sha256=RM3clcdcfj0MtSqGdu6afCqUieYj_2q5gcEch_36tCE,82421
|
|
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=
|
|
31
|
+
supervisely/api/image_api.py,sha256=N2JotH62h-3NRiCbgzPvXOjLavkygPYlEtqFw8rgvIg,158305
|
|
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
|
|
@@ -49,12 +49,12 @@ supervisely/api/video_annotation_tool_api.py,sha256=Uy1MvT-M7vjC6y-0-V4wFCO-fZt8
|
|
|
49
49
|
supervisely/api/workspace_api.py,sha256=5KAxpI9DKBmgF_pyQaXHpGT30HZ9wRtR6DP3FoYFZtY,9228
|
|
50
50
|
supervisely/api/entity_annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
51
|
supervisely/api/entity_annotation/entity_annotation_api.py,sha256=K79KdDyepQv4FiNQHBj9V4-zLIemxK9WG1ig1bfBKb8,3083
|
|
52
|
-
supervisely/api/entity_annotation/figure_api.py,sha256=
|
|
52
|
+
supervisely/api/entity_annotation/figure_api.py,sha256=WgeB6h8ZQsgeORXnEAq2LCCezLIMeVibetFTC1PxQM8,20896
|
|
53
53
|
supervisely/api/entity_annotation/object_api.py,sha256=gbcNvN_KY6G80Me8fHKQgryc2Co7VU_kfFd1GYILZ4E,8875
|
|
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=
|
|
57
|
+
supervisely/api/pointcloud/pointcloud_api.py,sha256=EFOrUG0IO_xuqznoWrIRGcsE0ysGjJAz0RYuLJStbNY,53279
|
|
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
|
|
@@ -63,15 +63,15 @@ supervisely/api/pointcloud/pointcloud_figure_api.py,sha256=r1sk3g9IgYVHuNhxyZT1T
|
|
|
63
63
|
supervisely/api/pointcloud/pointcloud_object_api.py,sha256=bO1USWb9HAywG_CW4CDu1HLu6l58OqQFuD3ikS9F3bM,5130
|
|
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
|
-
supervisely/api/video/video_annotation_api.py,sha256=
|
|
67
|
-
supervisely/api/video/video_api.py,sha256=
|
|
66
|
+
supervisely/api/video/video_annotation_api.py,sha256=epOngGQRzaGHWG9kGxSpNwpoUM-LuFs3Y6zFwinuySI,10978
|
|
67
|
+
supervisely/api/video/video_api.py,sha256=XbygE2XHOezjDXU5qYh4CM3r1uFpHy1vULmVTCyTlbE,92978
|
|
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=
|
|
74
|
+
supervisely/api/volume/volume_api.py,sha256=_HKlu3YBNk5aA3d8wMtVcMdhIBrRkhRl17FcbKJDYsk,55381
|
|
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,7 +554,7 @@ 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=
|
|
557
|
+
supervisely/convert/base_converter.py,sha256=5ZHYQO7n2xTM3mVORWGjmyzx2LP93IqFZABdORppxS4,18316
|
|
558
558
|
supervisely/convert/converter.py,sha256=tWxTDfFv7hwzQhUQrBxzfr6WP8FUGFX_ewg5T2HbUYo,8959
|
|
559
559
|
supervisely/convert/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
560
560
|
supervisely/convert/image/image_converter.py,sha256=r-qdhuwOsk727mXIM26ucQhkoIKigu1M0BF-tw9IfGg,10321
|
|
@@ -684,10 +684,10 @@ 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=
|
|
687
|
+
supervisely/io/fs.py,sha256=2ZpAdt8zua423qSrmuXI71b52pGbZatgCeXqs48dufs,51322
|
|
688
688
|
supervisely/io/fs_cache.py,sha256=985gvBGzveLcDudgz10E4EWVjP9jxdU1Pa0GFfCBoCA,6520
|
|
689
689
|
supervisely/io/github_utils.py,sha256=jGmvQJ5bjtACuSFABzrxL0jJdh14SezovrHp8T-9y8g,1779
|
|
690
|
-
supervisely/io/json.py,sha256=
|
|
690
|
+
supervisely/io/json.py,sha256=VvyqXZl22nb6_DJK3TUOPetd5xq9xwRFKumWqsGs7iI,8679
|
|
691
691
|
supervisely/io/multipart_stream_decoder.py,sha256=rCheeSCAGdw2tNyaWEYa4dvoIDuldXOxH86RVB82c78,14417
|
|
692
692
|
supervisely/io/network_exceptions.py,sha256=eegxgbtkbKpbjPdiATXpvUSMpe6AFPiu0IAKyxPSXms,4777
|
|
693
693
|
supervisely/labeling_jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -932,16 +932,16 @@ supervisely/pointcloud_episodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
|
|
|
932
932
|
supervisely/pointcloud_episodes/pointcloud_episodes.py,sha256=NqUkVdHBSIplB2wvzL6a8z8EuGNpAJuOn1j5UrmSrQw,3421
|
|
933
933
|
supervisely/project/__init__.py,sha256=hlzdj9Pgy53Q3qdP8LMtGTChvZHQuuShdtui2eRUQeE,2601
|
|
934
934
|
supervisely/project/data_version.py,sha256=nknaWJSUCwoDyNG9_d1KA-GjzidhV9zd9Cn8cg15DOU,19270
|
|
935
|
-
supervisely/project/download.py,sha256=
|
|
935
|
+
supervisely/project/download.py,sha256=qonvHBiKX-leHW9qWJdyBqFNmpI2_t9s54e68h9orq0,23687
|
|
936
936
|
supervisely/project/pointcloud_episode_project.py,sha256=fcaFAaHVn_VvdiIfHl4IyEFE5-Q3VFGfo7_YoxEma0I,41341
|
|
937
937
|
supervisely/project/pointcloud_project.py,sha256=Y8Xhi6Hg-KyztwFncezuDfKTt2FILss96EU_LdXzmrA,49172
|
|
938
|
-
supervisely/project/project.py,sha256=
|
|
938
|
+
supervisely/project/project.py,sha256=8ghaq9OCFRdhTNuKo_morBgVxgFOS1KKpmU8Kyl1vdo,180328
|
|
939
939
|
supervisely/project/project_meta.py,sha256=26s8IiHC5Pg8B1AQi6_CrsWteioJP2in00cRNe8QlW0,51423
|
|
940
940
|
supervisely/project/project_settings.py,sha256=NLThzU_DCynOK6hkHhVdFyezwprn9UqlnrLDe_3qhkY,9347
|
|
941
941
|
supervisely/project/project_type.py,sha256=XRcZG5zI4RR8-JSlG-n0VVjGA4gJSfLIU-hbqiaNOcc,384
|
|
942
942
|
supervisely/project/readme_template.md,sha256=rGmSLRVUSGjvorjpzl0sZ7YA4sKfDexl95NFtMISj3I,9128
|
|
943
943
|
supervisely/project/upload.py,sha256=AjgHYgVZwUE25ygC5pqvFjdAladbyB8T78mlet5Qpho,3750
|
|
944
|
-
supervisely/project/video_project.py,sha256=
|
|
944
|
+
supervisely/project/video_project.py,sha256=AoZDIF3TAPke3WVZAOSWnuyIs12sFZsY5CxARSNQ5N8,63740
|
|
945
945
|
supervisely/project/volume_project.py,sha256=LL4IxQyx0DU4acj2imz6diWO3kHHaWnf7QiycTJUTMU,22367
|
|
946
946
|
supervisely/pyscripts_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
947
947
|
supervisely/pyscripts_utils/utils.py,sha256=scEwHJvHRQa8NHIOn2eTwH6-Zc8CGdLoxM-WzH9jcRo,314
|
|
@@ -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.
|
|
1001
|
-
supervisely-6.73.
|
|
1002
|
-
supervisely-6.73.
|
|
1003
|
-
supervisely-6.73.
|
|
1004
|
-
supervisely-6.73.
|
|
1005
|
-
supervisely-6.73.
|
|
1000
|
+
supervisely-6.73.227.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
1001
|
+
supervisely-6.73.227.dist-info/METADATA,sha256=vUAUlDnXTIsqkAF3lL4hg0HMNuKe8CIa4xnEyNREKo0,33150
|
|
1002
|
+
supervisely-6.73.227.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
1003
|
+
supervisely-6.73.227.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
|
|
1004
|
+
supervisely-6.73.227.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
|
|
1005
|
+
supervisely-6.73.227.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|