supervisely 6.73.377__py3-none-any.whl → 6.73.379__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.
@@ -6,6 +6,7 @@ import random
6
6
  import shutil
7
7
  from collections import namedtuple
8
8
  from typing import Callable, Dict, List, NamedTuple, Optional, Tuple, Union
9
+ from uuid import UUID
9
10
 
10
11
  import numpy as np
11
12
  from tqdm import tqdm
@@ -30,6 +31,7 @@ from supervisely.io.fs import (
30
31
  touch,
31
32
  )
32
33
  from supervisely.io.json import dump_json_file, load_json_file
34
+ from supervisely.pointcloud_annotation.constants import OBJECT_KEY
33
35
  from supervisely.pointcloud_annotation.pointcloud_annotation import PointcloudAnnotation
34
36
  from supervisely.project.project import Dataset, OpenMode
35
37
  from supervisely.project.project import read_single_project as read_project_wrapper
@@ -500,6 +502,31 @@ class PointcloudDataset(VideoDataset):
500
502
  def get_pointcloud_info_path(self, item_name: str) -> str:
501
503
  return self.get_item_info_path(item_name)
502
504
 
505
+ def get_related_image_figures(self, item_name: str, img_name: str) -> List[Dict]:
506
+ """
507
+ Get figures from related image with given name.
508
+
509
+ :param item_name: Name of the item in the dataset.
510
+ :type item_name: str
511
+ :param img_name: Related image name.
512
+ :type img_name: str
513
+ :return: List of figures from related image.
514
+ :rtype: List[Dict]
515
+ :raises: :class:`RuntimeError` if item not found in the project
516
+ """
517
+ results = []
518
+ path = self.get_related_images_path(item_name)
519
+ if dir_exists(path):
520
+ files = list_files(path, sly_image.SUPPORTED_IMG_EXTS)
521
+ for file in files:
522
+ if get_file_name_with_ext(file) != img_name:
523
+ continue
524
+ fig_path = os.path.join(path, get_file_name_with_ext(file) + ".figures.json")
525
+ if file_exists(fig_path):
526
+ figs = load_json_file(fig_path)
527
+ results.append(figs)
528
+ return results
529
+
503
530
 
504
531
  class PointcloudProject(VideoProject):
505
532
  """
@@ -989,6 +1016,26 @@ def download_pointcloud_project(
989
1016
  pointcloud_names = [pointcloud_info.name for pointcloud_info in batch]
990
1017
 
991
1018
  ann_jsons = api.pointcloud.annotation.download_bulk(dataset.id, pointcloud_ids)
1019
+ if download_related_images:
1020
+ try:
1021
+ rimgs = api.pointcloud.get_list_related_images_batch(dataset.id, pointcloud_ids)
1022
+ if len(rimgs) > 0:
1023
+ rimg_ids = [rimg[ApiField.ID] for rimg in rimgs]
1024
+ batch_rimg_figures = api.image.figure.download(
1025
+ dataset_id=dataset.id, image_ids=rimg_ids
1026
+ )
1027
+ else:
1028
+ batch_rimg_figures = []
1029
+ except Exception as e:
1030
+ logger.info(
1031
+ "INFO FOR DEBUGGING",
1032
+ extra={
1033
+ "project_id": project_id,
1034
+ "dataset_id": dataset.id,
1035
+ "pointcloud_ids": pointcloud_ids,
1036
+ },
1037
+ )
1038
+ raise e
992
1039
 
993
1040
  for pointcloud_id, pointcloud_name, pointcloud_info, ann_json in zip(
994
1041
  pointcloud_ids, pointcloud_names, batch, ann_jsons
@@ -1015,6 +1062,25 @@ def download_pointcloud_project(
1015
1062
  else:
1016
1063
  touch(pointcloud_file_path)
1017
1064
 
1065
+ pointcloud_file_path = pointcloud_file_path if download_items else None
1066
+ pointcloud_info = pointcloud_info._asdict() if download_pointclouds_info else None
1067
+ try:
1068
+ pointcloud_ann = PointcloudAnnotation.from_json(
1069
+ ann_json, project_fs.meta, key_id_map
1070
+ )
1071
+ except Exception as e:
1072
+ logger.info(
1073
+ "INFO FOR DEBUGGING",
1074
+ extra={
1075
+ "project_id": project_id,
1076
+ "dataset_id": dataset.id,
1077
+ "pointcloud_id": pointcloud_id,
1078
+ "pointcloud_name": pointcloud_name,
1079
+ "ann_json": ann_json,
1080
+ },
1081
+ )
1082
+ raise e
1083
+
1018
1084
  if download_related_images:
1019
1085
  related_images_path = dataset_fs.get_related_images_path(pointcloud_name)
1020
1086
  try:
@@ -1048,6 +1114,7 @@ def download_pointcloud_project(
1048
1114
 
1049
1115
  path_img = os.path.join(related_images_path, name)
1050
1116
  path_json = os.path.join(related_images_path, name + ".json")
1117
+ path_figures = os.path.join(related_images_path, name + ".figures.json")
1051
1118
 
1052
1119
  try:
1053
1120
  api.pointcloud.download_related_image(rimage_id, path_img)
@@ -1066,24 +1133,36 @@ def download_pointcloud_project(
1066
1133
  raise e
1067
1134
  dump_json_file(rimage_info, path_json)
1068
1135
 
1069
- pointcloud_file_path = pointcloud_file_path if download_items else None
1070
- pointcloud_info = pointcloud_info._asdict() if download_pointclouds_info else None
1071
- try:
1072
- pointcloud_ann = PointcloudAnnotation.from_json(
1073
- ann_json, project_fs.meta, key_id_map
1074
- )
1075
- except Exception as e:
1076
- logger.info(
1077
- "INFO FOR DEBUGGING",
1078
- extra={
1079
- "project_id": project_id,
1080
- "dataset_id": dataset.id,
1081
- "pointcloud_id": pointcloud_id,
1082
- "pointcloud_name": pointcloud_name,
1083
- "ann_json": ann_json,
1084
- },
1085
- )
1086
- raise e
1136
+ try:
1137
+ if rimage_id in batch_rimg_figures:
1138
+ rimg_figures = batch_rimg_figures[rimage_id]
1139
+ rimg_figures_json = []
1140
+ for fig in rimg_figures:
1141
+ fig_json = fig.to_json()
1142
+ if ApiField.OBJECT_ID in fig_json:
1143
+ fig_json[OBJECT_KEY] = str(
1144
+ key_id_map.get_object_key(fig_json[ApiField.OBJECT_ID])
1145
+ )
1146
+ fig_json.pop(ApiField.OBJECT_ID, None)
1147
+ rimg_figures_json.append(fig_json)
1148
+ else:
1149
+ raise RuntimeError(f"Figure {fig} has no object id")
1150
+
1151
+ dump_json_file(rimg_figures_json, path_figures)
1152
+ except Exception as e:
1153
+ logger.info(
1154
+ "INFO FOR DEBUGGING",
1155
+ extra={
1156
+ "project_id": project_id,
1157
+ "dataset_id": dataset.id,
1158
+ "pointcloud_id": pointcloud_id,
1159
+ "pointcloud_name": pointcloud_name,
1160
+ "rimage_id": rimage_id,
1161
+ "path_figures": path_figures,
1162
+ },
1163
+ )
1164
+ raise e
1165
+
1087
1166
  try:
1088
1167
  dataset_fs.add_item_file(
1089
1168
  pointcloud_name,
@@ -1206,6 +1285,7 @@ def upload_pointcloud_project(
1206
1285
  if len(related_items) != 0:
1207
1286
  rimg_infos = []
1208
1287
  camera_names = []
1288
+ rimg_figures = {}
1209
1289
  for img_ind, (img_path, meta_json) in enumerate(related_items):
1210
1290
  try:
1211
1291
  img = api.pointcloud.upload_related_image(img_path)
@@ -1233,9 +1313,37 @@ def upload_pointcloud_project(
1233
1313
  ApiField.META: meta_json[ApiField.META],
1234
1314
  }
1235
1315
  )
1316
+ img_name = meta_json[ApiField.NAME]
1317
+ fig_json_path = os.path.join(related_images_dir, img_name + ".figures.json")
1318
+ if os.path.exists(fig_json_path):
1319
+ try:
1320
+ rimg_figures[img] = load_json_file(fig_json_path)
1321
+ except Exception as e:
1322
+ logger.info(
1323
+ "INFO FOR DEBUGGING",
1324
+ extra={
1325
+ "project_id": project.id,
1326
+ "dataset_id": dataset.id,
1327
+ "pointcloud_id": pointcloud.id,
1328
+ "pointcloud_name": pointcloud.name,
1329
+ "fig_json_path": fig_json_path,
1330
+ },
1331
+ )
1332
+ raise e
1236
1333
 
1237
1334
  try:
1238
- api.pointcloud.add_related_images(rimg_infos, camera_names)
1335
+ uploaded_rimgs = api.pointcloud.add_related_images(rimg_infos, camera_names)
1336
+ # build mapping hash->id
1337
+ pcl_to_hash_to_id = {}
1338
+ for info, uploaded in zip(rimg_infos, uploaded_rimgs):
1339
+ img_hash = info.get(ApiField.HASH)
1340
+ img_id = (
1341
+ uploaded.get(ApiField.ID)
1342
+ if isinstance(uploaded, dict)
1343
+ else getattr(uploaded, "id", None)
1344
+ )
1345
+ if img_hash is not None and img_id is not None:
1346
+ pcl_to_hash_to_id[img_hash] = img_id
1239
1347
  except Exception as e:
1240
1348
  logger.info(
1241
1349
  "INFO FOR DEBUGGING",
@@ -1249,6 +1357,39 @@ def upload_pointcloud_project(
1249
1357
  },
1250
1358
  )
1251
1359
  raise e
1360
+
1361
+ # upload figures
1362
+ if len(rimg_figures) > 0:
1363
+ hash_to_ids = pcl_to_hash_to_id
1364
+ figures_payload = []
1365
+ for img_hash, figs_json in rimg_figures.items():
1366
+ if img_hash not in hash_to_ids:
1367
+ continue
1368
+ img_id = hash_to_ids[img_hash]
1369
+ for fig in figs_json:
1370
+ try:
1371
+ fig[ApiField.ENTITY_ID] = img_id
1372
+ fig[ApiField.DATASET_ID] = dataset.id
1373
+ fig[ApiField.PROJECT_ID] = project.id
1374
+ fig[ApiField.OBJECT_ID] = key_id_map.get_object_id(
1375
+ UUID(fig[OBJECT_KEY])
1376
+ )
1377
+ except Exception as e:
1378
+ logger.debug(
1379
+ f"Failed to process figure json for img_hash={img_hash}: {repr(e)}"
1380
+ )
1381
+ continue
1382
+
1383
+ figures_payload.extend(figs_json)
1384
+
1385
+ if len(figures_payload) > 0:
1386
+ try:
1387
+ api.image.figure.create_bulk(
1388
+ figures_json=figures_payload, dataset_id=dataset.id
1389
+ )
1390
+ except Exception as e:
1391
+ logger.debug(f"Failed to upload figures for related images: {repr(e)}")
1392
+
1252
1393
  if ds_progress:
1253
1394
  ds_progress(1)
1254
1395
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: supervisely
3
- Version: 6.73.377
3
+ Version: 6.73.379
4
4
  Summary: Supervisely Python SDK.
5
5
  Home-page: https://github.com/supervisely/supervisely
6
6
  Author: Supervisely
@@ -1,5 +1,5 @@
1
1
  supervisely/README.md,sha256=XM-DiMC6To3I9RjQZ0c61905EFRR_jnCUx2q3uNR-X8,3331
2
- supervisely/__init__.py,sha256=k4_gIOqBDDy9Acg9irVI6FwXHdphDvCJbgF3lmq23hE,10935
2
+ supervisely/__init__.py,sha256=tliCAEdCVwLeYtNSmvSGKm1JOK1aXsP0ckJ3042J-0U,10935
3
3
  supervisely/_utils.py,sha256=Wrnck4645QXRZdmMpqIRQ_t6QynEAkYaFfcialxQBIE,19157
4
4
  supervisely/function_wrapper.py,sha256=R5YajTQ0GnRp2vtjwfC9hINkzQc0JiyGsu8TER373xY,1912
5
5
  supervisely/sly_logger.py,sha256=z92Vu5hmC0GgTIJO1n6kPDayRW9__8ix8hL6poDZj-Y,6274
@@ -30,7 +30,7 @@ supervisely/api/entities_collection_api.py,sha256=6nbh5KxBzqGwtjV9tgzMFHBKVla2x-
30
30
  supervisely/api/file_api.py,sha256=gNXNsikocSYRojoZrVmXIqXycqXm0e320piAwaLN6JI,92978
31
31
  supervisely/api/github_api.py,sha256=NIexNjEer9H5rf5sw2LEZd7C1WR-tK4t6IZzsgeAAwQ,623
32
32
  supervisely/api/image_annotation_tool_api.py,sha256=YcUo78jRDBJYvIjrd-Y6FJAasLta54nnxhyaGyanovA,5237
33
- supervisely/api/image_api.py,sha256=zwyHsphaclKFU2a5gpHy6Cas_kpitViSCMV6vcPqR0s,224592
33
+ supervisely/api/image_api.py,sha256=mjKuX6jG5TK_V8EQyqcD6eSBAK1oJbVJZCDtflO00mg,227764
34
34
  supervisely/api/import_storage_api.py,sha256=BDCgmR0Hv6OoiRHLCVPKt3iDxSVlQp1WrnKhAK_Zl84,460
35
35
  supervisely/api/issues_api.py,sha256=BqDJXmNoTzwc3xe6_-mA7FDFC5QQ-ahGbXk_HmpkSeQ,17925
36
36
  supervisely/api/labeling_job_api.py,sha256=G2_BV_WtA2lAhfw_nAQmWmv1P-pwimD0ba9GVKoGjiA,55537
@@ -53,13 +53,13 @@ supervisely/api/entity_annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
53
53
  supervisely/api/entity_annotation/entity_annotation_api.py,sha256=K79KdDyepQv4FiNQHBj9V4-zLIemxK9WG1ig1bfBKb8,3083
54
54
  supervisely/api/entity_annotation/figure_api.py,sha256=rmsE3L_JfqN94sLN637pQ0syiBAXPd8RyAwhl41j1xs,35318
55
55
  supervisely/api/entity_annotation/object_api.py,sha256=gbcNvN_KY6G80Me8fHKQgryc2Co7VU_kfFd1GYILZ4E,8875
56
- supervisely/api/entity_annotation/tag_api.py,sha256=h19YsJzJLDp0VIicQzoYCRyVhY149KY7pUysb4XX0RI,11114
56
+ supervisely/api/entity_annotation/tag_api.py,sha256=IapvSZmakjdOn0yvqP2tQRY8gkZg0bcvIZBwWRcafrg,18996
57
57
  supervisely/api/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  supervisely/api/nn/deploy_api.py,sha256=fA5yk3-Q66BL821iu68HpsGWWO2qHXCcWTmrXoHE4gE,37008
59
59
  supervisely/api/nn/neural_network_api.py,sha256=VYqpHb6xqCeEUofTNfOGUhvjI_5Di3T26qwVp5Z-0hE,10643
60
60
  supervisely/api/pointcloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  supervisely/api/pointcloud/pointcloud_annotation_api.py,sha256=xIXqCu0rKYsGt5ezh2EFT2utwsVrr2Xo-MOWUCnbvXc,11259
62
- supervisely/api/pointcloud/pointcloud_api.py,sha256=Gii6INYqo5f3EUCkI14VMi2XuaxbRHEaqSb_HHmJJTA,53497
62
+ supervisely/api/pointcloud/pointcloud_api.py,sha256=mPnVXWnxPxrb2P5giFLuabU969vV0xpeP6biETBNvUI,53875
63
63
  supervisely/api/pointcloud/pointcloud_episode_annotation_api.py,sha256=zmDWDkRzUSfHKX65qDVrc44kNyYjfvItSwYmsERJ_8g,7012
64
64
  supervisely/api/pointcloud/pointcloud_episode_api.py,sha256=xg1zRKONV9ly0-B72V1dR6OMPFIw35bujazuEdrPGTQ,7922
65
65
  supervisely/api/pointcloud/pointcloud_episode_object_api.py,sha256=k2_wV0EVPo9vxSTVe1qOvqVOMSVE6zGDSkfR6TRNsKs,691
@@ -617,13 +617,13 @@ supervisely/convert/image/pdf/pdf_converter.py,sha256=LKvVng9jPp0cSIjYEjKLOb48wt
617
617
  supervisely/convert/image/pdf/pdf_helper.py,sha256=IDwLEvsVy8lu-KC1lXvSRkZZ9BCC6ylebnNEtLQU5L4,1288
618
618
  supervisely/convert/image/sly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
619
619
  supervisely/convert/image/sly/fast_sly_image_converter.py,sha256=wtiM-Dl4xivT60-79pj8XMdHQc2kPMi7DqGcEngiWRg,5669
620
- supervisely/convert/image/sly/sly_image_converter.py,sha256=_sTiPTeNwZ1qWdtecmusanzvApHN7TskB7slgI3mibs,14370
620
+ supervisely/convert/image/sly/sly_image_converter.py,sha256=9nFDvyl19c-rY8_KRp-PpzAP6SYP7Z8Tz9KVJ8EXyYE,14594
621
621
  supervisely/convert/image/sly/sly_image_helper.py,sha256=5Ri8fKb5dzh5b3v8AJ5u8xVFOQfAtoWqZ7HktPsCjTI,7373
622
622
  supervisely/convert/image/yolo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
623
623
  supervisely/convert/image/yolo/yolo_converter.py,sha256=Wn5dR05y4SEPONcaxWr9ofnbvbf-SbRZN0fkksk5Dps,11391
624
624
  supervisely/convert/image/yolo/yolo_helper.py,sha256=5b0ShsVlqikA071VT8AiRW_079_WD6pdB5Bx3OU12Bw,25989
625
625
  supervisely/convert/pointcloud/__init__.py,sha256=WPeIpPoTWDIKAa0lF6t2SMUhFNZ0l-vKujf6yD6w7SA,589
626
- supervisely/convert/pointcloud/pointcloud_converter.py,sha256=yCCpzm7GrvL6WT4lNesvtYWWwdO3DO32JIOBBSSQgSA,7130
626
+ supervisely/convert/pointcloud/pointcloud_converter.py,sha256=CeqPn62viKS35MFlQBTPQuRqH_8P9JGYjz-rY-eXtbI,11990
627
627
  supervisely/convert/pointcloud/bag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
628
628
  supervisely/convert/pointcloud/bag/bag_converter.py,sha256=WWd6A2hS7H4MRgtLdJ-yYgmNU-Wk2eycl6LTTJM2GKQ,11391
629
629
  supervisely/convert/pointcloud/bag/bag_helper.py,sha256=2TFe49isZTxMhya-PApqLPxrvGnvRFMBc_--BwyCpWU,4284
@@ -642,10 +642,10 @@ supervisely/convert/pointcloud/ply/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
642
642
  supervisely/convert/pointcloud/ply/ply_converter.py,sha256=2ZCYkhJQzUev-sWGsBwCPtj1TGjdcx8o-Q--RAHavp8,2698
643
643
  supervisely/convert/pointcloud/ply/ply_helper.py,sha256=YfLiV9m6a4NNEMs0J32dmMTLffMLX4-JPTThMHOEK4w,268
644
644
  supervisely/convert/pointcloud/sly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
645
- supervisely/convert/pointcloud/sly/sly_pointcloud_converter.py,sha256=r56Rwil-55cRnd0sIePFGrf_xXa-lKQSfwhEUrjOquk,5070
645
+ supervisely/convert/pointcloud/sly/sly_pointcloud_converter.py,sha256=lS1VTN1ICO8zPcx-435OUiH4fgb8LKiybI5fBnxXRDU,5323
646
646
  supervisely/convert/pointcloud/sly/sly_pointcloud_helper.py,sha256=kOluL97FfCFfIvnUE_FeN8iQLMlwdiMR5gayorOGDXw,3968
647
647
  supervisely/convert/pointcloud_episodes/__init__.py,sha256=LePLQFEjXwhXap2zOY9SVTbW_NMbxKYZKBjBdRLimKE,557
648
- supervisely/convert/pointcloud_episodes/pointcloud_episodes_converter.py,sha256=qULUzO96BvWgNVmyxSQ0pUPBPG3WHgUJuK_U7Z8NM-g,9428
648
+ supervisely/convert/pointcloud_episodes/pointcloud_episodes_converter.py,sha256=Q3FUZ_t5GkW7u-FNBqwdWvHb1txlmOx-5wYTKTAj5WM,14427
649
649
  supervisely/convert/pointcloud_episodes/bag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
650
650
  supervisely/convert/pointcloud_episodes/bag/bag_converter.py,sha256=jzWKXoFUWu11d5WlPfT1hphCubYpq_lhQZmhh07xZdQ,1659
651
651
  supervisely/convert/pointcloud_episodes/kitti_360/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -657,7 +657,7 @@ supervisely/convert/pointcloud_episodes/nuscenes_conv/__init__.py,sha256=47DEQpj
657
657
  supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_converter.py,sha256=O8QIwqwb0DUuYmS8oq6kGv3uTlzS3GyGvAxfL1bYW-s,12764
658
658
  supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_helper.py,sha256=cJTwhFn1JgblbPjrTrZu30y6FxyjGF-12sMFfvN1xzM,8969
659
659
  supervisely/convert/pointcloud_episodes/sly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
660
- supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_converter.py,sha256=fSEGxuTtFTAOLNBAZncOxw9PVALBOtB7yZ8qTCaET7w,6102
660
+ supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_converter.py,sha256=N6daDLj06urxpe-WU40Y_ATOLbtlmc6OHIZ04QpH0lM,6412
661
661
  supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_helper.py,sha256=h4WvNH6cEHtjxxhCnU7Hs2vkyJMye0qwabqXNYVTywE,3570
662
662
  supervisely/convert/video/__init__.py,sha256=8T99u_2rurKksx24aNQZf8b_TPFEiGViSDPzCqjDBfU,157
663
663
  supervisely/convert/video/video_converter.py,sha256=f-b6FexBjXw9xWv5w8lxlNxCh4FvacNolX-WQDibWFs,11338
@@ -1038,8 +1038,8 @@ supervisely/pointcloud_episodes/pointcloud_episodes.py,sha256=trjCTqJEfHMnsk_HmY
1038
1038
  supervisely/project/__init__.py,sha256=hlzdj9Pgy53Q3qdP8LMtGTChvZHQuuShdtui2eRUQeE,2601
1039
1039
  supervisely/project/data_version.py,sha256=P5Lui6i64pYeJWmAdGJDv8GRXxjfpSSZ8zT_MxIrynE,19553
1040
1040
  supervisely/project/download.py,sha256=yCFpRum_q8fbY_z2mcRAhYAcYFcDc215ldioO3Gzg3Q,28680
1041
- supervisely/project/pointcloud_episode_project.py,sha256=CTG1bJXJFUA2O7yUWZg8SBjYv7ZyqhsV5flHtXdjkrA,42403
1042
- supervisely/project/pointcloud_project.py,sha256=zRM5S7GpbEN9SkvoydRv9rdc8sFaCPE0g1Mz44iDnV0,49923
1041
+ supervisely/project/pointcloud_episode_project.py,sha256=ahwL79Ojf5gLdvAph5SLKXr66jmVWzgiOXLsk2P8eVQ,48433
1042
+ supervisely/project/pointcloud_project.py,sha256=NcrsMf673cITLoErJhcdQN85w3k9TBqolEbWR4qjPZQ,56872
1043
1043
  supervisely/project/project.py,sha256=bK_TWDLHmTSoxFEUqzSk-FJzddpb0BqsQfQzzwaZu-Y,240401
1044
1044
  supervisely/project/project_meta.py,sha256=UTQPstRmRJvbtCcQ1noCtzcw3Sd4llwRMHes-Sz-JQg,51429
1045
1045
  supervisely/project/project_settings.py,sha256=NLThzU_DCynOK6hkHhVdFyezwprn9UqlnrLDe_3qhkY,9347
@@ -1103,9 +1103,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
1103
1103
  supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
1104
1104
  supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
1105
1105
  supervisely_lib/__init__.py,sha256=7-3QnN8Zf0wj8NCr2oJmqoQWMKKPKTECvjH9pd2S5vY,159
1106
- supervisely-6.73.377.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1107
- supervisely-6.73.377.dist-info/METADATA,sha256=Y1bgGmMc-pZxRfzhjnDNF8PVouW1YzI3nSEXXKbqQTk,35154
1108
- supervisely-6.73.377.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1109
- supervisely-6.73.377.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1110
- supervisely-6.73.377.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1111
- supervisely-6.73.377.dist-info/RECORD,,
1106
+ supervisely-6.73.379.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1107
+ supervisely-6.73.379.dist-info/METADATA,sha256=wF5oRIPeyHyS_2ml8LGidTODKTYoLNJg8HRsvEvTltw,35154
1108
+ supervisely-6.73.379.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1109
+ supervisely-6.73.379.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1110
+ supervisely-6.73.379.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1111
+ supervisely-6.73.379.dist-info/RECORD,,