supervisely 6.73.274__py3-none-any.whl → 6.73.275__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/convert/__init__.py +4 -1
- supervisely/convert/base_converter.py +2 -9
- supervisely/convert/pointcloud/nuscenes_conv/__init__.py +0 -0
- supervisely/convert/pointcloud/nuscenes_conv/nuscenes_converter.py +227 -0
- supervisely/convert/pointcloud/pointcloud_converter.py +52 -1
- supervisely/convert/pointcloud/sly/sly_pointcloud_converter.py +8 -21
- supervisely/convert/pointcloud/sly/sly_pointcloud_helper.py +4 -2
- supervisely/convert/pointcloud_episodes/lyft/lyft_converter.py +19 -20
- supervisely/convert/pointcloud_episodes/nuscenes_conv/__init__.py +0 -0
- supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_converter.py +305 -0
- supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_helper.py +265 -0
- supervisely/convert/pointcloud_episodes/pointcloud_episodes_converter.py +82 -27
- supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_converter.py +9 -8
- {supervisely-6.73.274.dist-info → supervisely-6.73.275.dist-info}/METADATA +1 -1
- {supervisely-6.73.274.dist-info → supervisely-6.73.275.dist-info}/RECORD +19 -14
- {supervisely-6.73.274.dist-info → supervisely-6.73.275.dist-info}/LICENSE +0 -0
- {supervisely-6.73.274.dist-info → supervisely-6.73.275.dist-info}/WHEEL +0 -0
- {supervisely-6.73.274.dist-info → supervisely-6.73.275.dist-info}/entry_points.txt +0 -0
- {supervisely-6.73.274.dist-info → supervisely-6.73.275.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import imghdr
|
|
2
|
+
import os
|
|
3
|
+
from typing import Dict, List, Optional, Set, Tuple, Union
|
|
2
4
|
|
|
3
5
|
from supervisely import (
|
|
4
6
|
Api,
|
|
@@ -10,9 +12,11 @@ from supervisely import (
|
|
|
10
12
|
)
|
|
11
13
|
from supervisely.api.module_api import ApiField
|
|
12
14
|
from supervisely.convert.base_converter import BaseConverter
|
|
15
|
+
from supervisely.io.fs import get_file_ext, get_file_name
|
|
13
16
|
from supervisely.io.json import load_json_file
|
|
14
|
-
from supervisely.project.project_settings import LabelingInterface
|
|
15
17
|
from supervisely.pointcloud.pointcloud import ALLOWED_POINTCLOUD_EXTENSIONS
|
|
18
|
+
from supervisely.pointcloud.pointcloud import validate_ext as validate_pcd_ext
|
|
19
|
+
from supervisely.project.project_settings import LabelingInterface
|
|
16
20
|
|
|
17
21
|
|
|
18
22
|
class PointcloudEpisodeConverter(BaseConverter):
|
|
@@ -89,13 +93,9 @@ class PointcloudEpisodeConverter(BaseConverter):
|
|
|
89
93
|
):
|
|
90
94
|
"""Upload converted data to Supervisely"""
|
|
91
95
|
|
|
92
|
-
meta, renamed_classes, renamed_tags = self.merge_metas_with_conflicts(
|
|
93
|
-
api, dataset_id
|
|
94
|
-
)
|
|
96
|
+
meta, renamed_classes, renamed_tags = self.merge_metas_with_conflicts(api, dataset_id)
|
|
95
97
|
|
|
96
|
-
existing_names = set(
|
|
97
|
-
[pcde.name for pcde in api.pointcloud_episode.get_list(dataset_id)]
|
|
98
|
-
)
|
|
98
|
+
existing_names = set([pcde.name for pcde in api.pointcloud_episode.get_list(dataset_id)])
|
|
99
99
|
|
|
100
100
|
if log_progress:
|
|
101
101
|
progress, progress_cb = self.get_progress(
|
|
@@ -130,28 +130,20 @@ class PointcloudEpisodeConverter(BaseConverter):
|
|
|
130
130
|
camera_names = []
|
|
131
131
|
if len(item._related_images) > 0:
|
|
132
132
|
img_paths, rimg_ann_paths = list(zip(*item._related_images))
|
|
133
|
-
rimg_hashes = api.pointcloud_episode.upload_related_images(
|
|
134
|
-
img_paths
|
|
135
|
-
)
|
|
133
|
+
rimg_hashes = api.pointcloud_episode.upload_related_images(img_paths)
|
|
136
134
|
for img_ind, (img_hash, rimg_ann_path) in enumerate(
|
|
137
135
|
zip(rimg_hashes, rimg_ann_paths)
|
|
138
136
|
):
|
|
139
137
|
meta_json = load_json_file(rimg_ann_path)
|
|
140
138
|
try:
|
|
141
139
|
if ApiField.META not in meta_json:
|
|
142
|
-
raise ValueError(
|
|
143
|
-
"Related image meta not found in json file."
|
|
144
|
-
)
|
|
140
|
+
raise ValueError("Related image meta not found in json file.")
|
|
145
141
|
if ApiField.NAME not in meta_json:
|
|
146
|
-
raise ValueError(
|
|
147
|
-
"Related image name not found in json file."
|
|
148
|
-
)
|
|
142
|
+
raise ValueError("Related image name not found in json file.")
|
|
149
143
|
if "deviceId" not in meta_json[ApiField.META].keys():
|
|
150
144
|
camera_names.append(f"CAM_{str(img_ind).zfill(2)}")
|
|
151
145
|
else:
|
|
152
|
-
camera_names.append(
|
|
153
|
-
meta_json[ApiField.META]["deviceId"]
|
|
154
|
-
)
|
|
146
|
+
camera_names.append(meta_json[ApiField.META]["deviceId"])
|
|
155
147
|
rimg_infos.append(
|
|
156
148
|
{
|
|
157
149
|
ApiField.ENTITY_ID: pcd_id,
|
|
@@ -162,7 +154,7 @@ class PointcloudEpisodeConverter(BaseConverter):
|
|
|
162
154
|
)
|
|
163
155
|
api.pointcloud.add_related_images(rimg_infos, camera_names)
|
|
164
156
|
except Exception as e:
|
|
165
|
-
logger.
|
|
157
|
+
logger.warning(
|
|
166
158
|
f"Failed to upload related image or add it to pointcloud episo: {repr(e)}"
|
|
167
159
|
)
|
|
168
160
|
continue
|
|
@@ -171,14 +163,77 @@ class PointcloudEpisodeConverter(BaseConverter):
|
|
|
171
163
|
progress_cb(len(batch))
|
|
172
164
|
|
|
173
165
|
if self.items_count > 0:
|
|
174
|
-
ann = self.to_supervisely(
|
|
175
|
-
|
|
176
|
-
)
|
|
177
|
-
api.pointcloud_episode.annotation.append(
|
|
178
|
-
dataset_id, ann, frame_to_pointcloud_ids
|
|
179
|
-
)
|
|
166
|
+
ann = self.to_supervisely(self._items[0], meta, renamed_classes, renamed_tags)
|
|
167
|
+
api.pointcloud_episode.annotation.append(dataset_id, ann, frame_to_pointcloud_ids)
|
|
180
168
|
|
|
181
169
|
if log_progress:
|
|
182
170
|
if is_development():
|
|
183
171
|
progress.close()
|
|
184
172
|
logger.info(f"Dataset ID:{dataset_id} has been successfully uploaded.")
|
|
173
|
+
|
|
174
|
+
def _collect_items_if_format_not_detected(self) -> Tuple[List[Item], bool, Set[str]]:
|
|
175
|
+
only_modality_items = True
|
|
176
|
+
unsupported_exts = set()
|
|
177
|
+
pcd_dict = {}
|
|
178
|
+
frames_pcd_map = None
|
|
179
|
+
used_img_ext = set()
|
|
180
|
+
rimg_dict, rimg_json_dict = {}, {}
|
|
181
|
+
for root, _, files in os.walk(self._input_data):
|
|
182
|
+
for file in files:
|
|
183
|
+
full_path = os.path.join(root, file)
|
|
184
|
+
if file == "frame_pointcloud_map.json":
|
|
185
|
+
frames_pcd_map = load_json_file(full_path)
|
|
186
|
+
continue
|
|
187
|
+
|
|
188
|
+
ext = get_file_ext(full_path)
|
|
189
|
+
recognized_ext = imghdr.what(full_path)
|
|
190
|
+
if ext == ".json":
|
|
191
|
+
rimg_json_dict[file] = full_path
|
|
192
|
+
elif recognized_ext:
|
|
193
|
+
if ext.lower() == ".pcd":
|
|
194
|
+
logger.warning(
|
|
195
|
+
f"File '{file}' has been recognized as '.{recognized_ext}' format. Skipping."
|
|
196
|
+
)
|
|
197
|
+
continue
|
|
198
|
+
rimg_dict[file] = full_path
|
|
199
|
+
if ext not in used_img_ext:
|
|
200
|
+
used_img_ext.add(ext)
|
|
201
|
+
elif ext.lower() in self.allowed_exts:
|
|
202
|
+
try:
|
|
203
|
+
validate_pcd_ext(ext)
|
|
204
|
+
pcd_dict[file] = full_path
|
|
205
|
+
except:
|
|
206
|
+
pass
|
|
207
|
+
else:
|
|
208
|
+
only_modality_items = False
|
|
209
|
+
unsupported_exts.add(ext)
|
|
210
|
+
|
|
211
|
+
items = []
|
|
212
|
+
updated_frames_pcd_map = {}
|
|
213
|
+
if frames_pcd_map:
|
|
214
|
+
list_of_pcd_names = list(frames_pcd_map.values())
|
|
215
|
+
else:
|
|
216
|
+
list_of_pcd_names = sorted(pcd_dict.keys())
|
|
217
|
+
|
|
218
|
+
for i, pcd_name in enumerate(list_of_pcd_names):
|
|
219
|
+
if pcd_name in pcd_dict:
|
|
220
|
+
updated_frames_pcd_map[i] = pcd_name
|
|
221
|
+
item = self.Item(pcd_dict[pcd_name], i)
|
|
222
|
+
for ext in used_img_ext:
|
|
223
|
+
rimg_name = f"{item.name}{ext}"
|
|
224
|
+
if not rimg_name in rimg_dict:
|
|
225
|
+
rimg_name = f"{get_file_name(item.name)}{ext}"
|
|
226
|
+
if rimg_name in rimg_dict:
|
|
227
|
+
rimg_path = rimg_dict[rimg_name]
|
|
228
|
+
rimg_ann_name = f"{rimg_name}.json"
|
|
229
|
+
if rimg_ann_name in rimg_json_dict:
|
|
230
|
+
rimg_ann_path = rimg_json_dict[rimg_ann_name]
|
|
231
|
+
item.set_related_images((rimg_path, rimg_ann_path))
|
|
232
|
+
items.append(item)
|
|
233
|
+
else:
|
|
234
|
+
logger.warning(f"Pointcloud file {pcd_name} not found. Skipping frame.")
|
|
235
|
+
continue
|
|
236
|
+
self._frame_pointcloud_map = updated_frames_pcd_map
|
|
237
|
+
self._frame_count = len(self._frame_pointcloud_map)
|
|
238
|
+
|
|
239
|
+
return items, only_modality_items, unsupported_exts
|
|
@@ -48,7 +48,7 @@ class SLYPointcloudEpisodesConverter(PointcloudEpisodeConverter):
|
|
|
48
48
|
return False
|
|
49
49
|
|
|
50
50
|
def validate_format(self) -> bool:
|
|
51
|
-
|
|
51
|
+
sly_ann_detected = False
|
|
52
52
|
ann_path = None
|
|
53
53
|
pcd_dict = {}
|
|
54
54
|
frames_pcd_map = None
|
|
@@ -74,7 +74,7 @@ class SLYPointcloudEpisodesConverter(PointcloudEpisodeConverter):
|
|
|
74
74
|
recognized_ext = imghdr.what(full_path)
|
|
75
75
|
if file in JUNK_FILES:
|
|
76
76
|
continue
|
|
77
|
-
elif ext
|
|
77
|
+
elif ext == self.ann_ext:
|
|
78
78
|
rimg_json_dict[file] = full_path
|
|
79
79
|
elif recognized_ext:
|
|
80
80
|
if ext.lower() == ".pcd":
|
|
@@ -94,6 +94,7 @@ class SLYPointcloudEpisodesConverter(PointcloudEpisodeConverter):
|
|
|
94
94
|
|
|
95
95
|
if self._meta is not None:
|
|
96
96
|
meta = self._meta
|
|
97
|
+
sly_ann_detected = True
|
|
97
98
|
else:
|
|
98
99
|
meta = ProjectMeta()
|
|
99
100
|
if ann_path is not None:
|
|
@@ -101,7 +102,10 @@ class SLYPointcloudEpisodesConverter(PointcloudEpisodeConverter):
|
|
|
101
102
|
meta = self.generate_meta_from_annotation(ann_path, meta)
|
|
102
103
|
is_valid = self.validate_ann_file(ann_path, meta)
|
|
103
104
|
if is_valid:
|
|
104
|
-
|
|
105
|
+
sly_ann_detected = True
|
|
106
|
+
|
|
107
|
+
if not sly_ann_detected:
|
|
108
|
+
return False
|
|
105
109
|
|
|
106
110
|
self._items = []
|
|
107
111
|
updated_frames_pcd_map = {}
|
|
@@ -124,18 +128,15 @@ class SLYPointcloudEpisodesConverter(PointcloudEpisodeConverter):
|
|
|
124
128
|
if rimg_ann_name in rimg_json_dict:
|
|
125
129
|
rimg_ann_path = rimg_json_dict[rimg_ann_name]
|
|
126
130
|
item.set_related_images((rimg_path, rimg_ann_path))
|
|
127
|
-
ann_or_rimg_detected = True
|
|
128
131
|
self._items.append(item)
|
|
129
132
|
else:
|
|
130
|
-
logger.
|
|
133
|
+
logger.warning(f"Pointcloud file {pcd_name} not found. Skipping frame.")
|
|
131
134
|
continue
|
|
132
135
|
self._frame_pointcloud_map = updated_frames_pcd_map
|
|
133
136
|
self._frame_count = len(self._frame_pointcloud_map)
|
|
134
137
|
|
|
135
138
|
self._meta = meta
|
|
136
|
-
|
|
137
|
-
ann_or_rimg_detected = True
|
|
138
|
-
return ann_or_rimg_detected
|
|
139
|
+
return sly_ann_detected
|
|
139
140
|
|
|
140
141
|
def to_supervisely(
|
|
141
142
|
self,
|
|
@@ -560,8 +560,8 @@ supervisely/cli/teamfiles/teamfiles_upload.py,sha256=xnsW2rvdq1e-KGjF1tMBu7Oxh3n
|
|
|
560
560
|
supervisely/collection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
561
561
|
supervisely/collection/key_indexed_collection.py,sha256=x2UVlkprspWhhae9oLUzjTWBoIouiWY9UQSS_MozfH0,37643
|
|
562
562
|
supervisely/collection/str_enum.py,sha256=Zp29yFGvnxC6oJRYNNlXhO2lTSdsriU1wiGHj6ahEJE,1250
|
|
563
|
-
supervisely/convert/__init__.py,sha256=
|
|
564
|
-
supervisely/convert/base_converter.py,sha256=
|
|
563
|
+
supervisely/convert/__init__.py,sha256=qomoncLRQeOzJkMceC6okFbyYcVQIXdvH_VG0-yKMqo,2955
|
|
564
|
+
supervisely/convert/base_converter.py,sha256=F2fD1zq3agV1H_T59V4nduI_0V4uVe9bjfPeu85L_8c,18004
|
|
565
565
|
supervisely/convert/converter.py,sha256=tWxTDfFv7hwzQhUQrBxzfr6WP8FUGFX_ewg5T2HbUYo,8959
|
|
566
566
|
supervisely/convert/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
567
567
|
supervisely/convert/image/image_converter.py,sha256=r-qdhuwOsk727mXIM26ucQhkoIKigu1M0BF-tw9IfGg,10321
|
|
@@ -609,7 +609,7 @@ supervisely/convert/image/yolo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
609
609
|
supervisely/convert/image/yolo/yolo_converter.py,sha256=cg5___X5MzvR-rZbNLmaKtr0MdRnyqtEzbBq5UBnYZ0,11171
|
|
610
610
|
supervisely/convert/image/yolo/yolo_helper.py,sha256=aVCvOuSz73iwOM01lWb2N6ImXYsz0FMup9ACXKC1-Ek,7837
|
|
611
611
|
supervisely/convert/pointcloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
612
|
-
supervisely/convert/pointcloud/pointcloud_converter.py,sha256=
|
|
612
|
+
supervisely/convert/pointcloud/pointcloud_converter.py,sha256=yCCpzm7GrvL6WT4lNesvtYWWwdO3DO32JIOBBSSQgSA,7130
|
|
613
613
|
supervisely/convert/pointcloud/bag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
614
614
|
supervisely/convert/pointcloud/bag/bag_converter.py,sha256=WWd6A2hS7H4MRgtLdJ-yYgmNU-Wk2eycl6LTTJM2GKQ,11391
|
|
615
615
|
supervisely/convert/pointcloud/bag/bag_helper.py,sha256=2TFe49isZTxMhya-PApqLPxrvGnvRFMBc_--BwyCpWU,4284
|
|
@@ -619,20 +619,25 @@ supervisely/convert/pointcloud/las/las_helper.py,sha256=1gQ3OZLpe6D25CY_jXWDsrLB
|
|
|
619
619
|
supervisely/convert/pointcloud/lyft/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
620
620
|
supervisely/convert/pointcloud/lyft/lyft_converter.py,sha256=bM9R3LLt4l5frK1Lhmy_WnhGUYCC7rH94v94sqmLxjY,11010
|
|
621
621
|
supervisely/convert/pointcloud/lyft/lyft_helper.py,sha256=bTe7ryLPfSkW0MjzFP-6AMyDMBtPu8Xk9cx0g0MomoQ,8521
|
|
622
|
+
supervisely/convert/pointcloud/nuscenes_conv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
623
|
+
supervisely/convert/pointcloud/nuscenes_conv/nuscenes_converter.py,sha256=YZlPjY8F_k270Mqir7yce7KIOh9SlU8i80nr-IaAj1Y,10121
|
|
622
624
|
supervisely/convert/pointcloud/ply/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
623
625
|
supervisely/convert/pointcloud/ply/ply_converter.py,sha256=2ZCYkhJQzUev-sWGsBwCPtj1TGjdcx8o-Q--RAHavp8,2698
|
|
624
626
|
supervisely/convert/pointcloud/ply/ply_helper.py,sha256=YfLiV9m6a4NNEMs0J32dmMTLffMLX4-JPTThMHOEK4w,268
|
|
625
627
|
supervisely/convert/pointcloud/sly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
626
|
-
supervisely/convert/pointcloud/sly/sly_pointcloud_converter.py,sha256=
|
|
627
|
-
supervisely/convert/pointcloud/sly/sly_pointcloud_helper.py,sha256=
|
|
628
|
+
supervisely/convert/pointcloud/sly/sly_pointcloud_converter.py,sha256=r56Rwil-55cRnd0sIePFGrf_xXa-lKQSfwhEUrjOquk,5070
|
|
629
|
+
supervisely/convert/pointcloud/sly/sly_pointcloud_helper.py,sha256=kOluL97FfCFfIvnUE_FeN8iQLMlwdiMR5gayorOGDXw,3968
|
|
628
630
|
supervisely/convert/pointcloud_episodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
629
|
-
supervisely/convert/pointcloud_episodes/pointcloud_episodes_converter.py,sha256=
|
|
631
|
+
supervisely/convert/pointcloud_episodes/pointcloud_episodes_converter.py,sha256=qULUzO96BvWgNVmyxSQ0pUPBPG3WHgUJuK_U7Z8NM-g,9428
|
|
630
632
|
supervisely/convert/pointcloud_episodes/bag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
631
633
|
supervisely/convert/pointcloud_episodes/bag/bag_converter.py,sha256=jzWKXoFUWu11d5WlPfT1hphCubYpq_lhQZmhh07xZdQ,1659
|
|
632
634
|
supervisely/convert/pointcloud_episodes/lyft/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
633
|
-
supervisely/convert/pointcloud_episodes/lyft/lyft_converter.py,sha256=
|
|
635
|
+
supervisely/convert/pointcloud_episodes/lyft/lyft_converter.py,sha256=QXreWUJ-QhoWgLPqRxCayatYCCCuSV6Z2XCZKScrD3o,10419
|
|
636
|
+
supervisely/convert/pointcloud_episodes/nuscenes_conv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
637
|
+
supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_converter.py,sha256=hveKmKVe-jOvME1mMbDwynTlL5kKqd53T9BDmFitbkM,12808
|
|
638
|
+
supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_helper.py,sha256=RrTlskRrqxwzrjFfT4e5aI9YeAxnun7Io9fjoicZmnY,8959
|
|
634
639
|
supervisely/convert/pointcloud_episodes/sly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
635
|
-
supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_converter.py,sha256=
|
|
640
|
+
supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_converter.py,sha256=fSEGxuTtFTAOLNBAZncOxw9PVALBOtB7yZ8qTCaET7w,6102
|
|
636
641
|
supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_helper.py,sha256=h4WvNH6cEHtjxxhCnU7Hs2vkyJMye0qwabqXNYVTywE,3570
|
|
637
642
|
supervisely/convert/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
638
643
|
supervisely/convert/video/video_converter.py,sha256=f-b6FexBjXw9xWv5w8lxlNxCh4FvacNolX-WQDibWFs,11338
|
|
@@ -1062,9 +1067,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
1062
1067
|
supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
|
|
1063
1068
|
supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
|
|
1064
1069
|
supervisely_lib/__init__.py,sha256=7-3QnN8Zf0wj8NCr2oJmqoQWMKKPKTECvjH9pd2S5vY,159
|
|
1065
|
-
supervisely-6.73.
|
|
1066
|
-
supervisely-6.73.
|
|
1067
|
-
supervisely-6.73.
|
|
1068
|
-
supervisely-6.73.
|
|
1069
|
-
supervisely-6.73.
|
|
1070
|
-
supervisely-6.73.
|
|
1070
|
+
supervisely-6.73.275.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
1071
|
+
supervisely-6.73.275.dist-info/METADATA,sha256=zkN67LRGghMe6rNZp9mRGpe8gal1OLLXh49AyenpU-I,33573
|
|
1072
|
+
supervisely-6.73.275.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
1073
|
+
supervisely-6.73.275.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
|
|
1074
|
+
supervisely-6.73.275.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
|
|
1075
|
+
supervisely-6.73.275.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|