supervisely 6.73.464__py3-none-any.whl → 6.73.465__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.

@@ -329,6 +329,7 @@ class SelectDatasetTree(Widget):
329
329
  """
330
330
  if not self._multiselect:
331
331
  raise ValueError("This method can only be called when multiselect is enabled.")
332
+ self._select_all_datasets_checkbox.uncheck()
332
333
  self._select_dataset.set_selected_by_id(dataset_ids)
333
334
 
334
335
  def team_changed(self, func: Callable) -> Callable:
@@ -2,6 +2,9 @@ import threading
2
2
  from typing import Any, Dict, List
3
3
 
4
4
  from supervisely.api.api import Api
5
+ from supervisely.api.dataset_api import DatasetInfo
6
+ from supervisely.api.project_api import ProjectInfo
7
+ from supervisely.api.video.video_api import VideoInfo
5
8
  from supervisely.app.widgets import (
6
9
  Button,
7
10
  Card,
@@ -202,6 +205,53 @@ class InputSelector:
202
205
 
203
206
  self.select_video.add_rows(rows)
204
207
 
208
+ def select_project(self, project_id: int, project_info: ProjectInfo = None):
209
+ if project_info is None:
210
+ project_info = self.api.project.get_info_by_id(project_id)
211
+ if project_info.type == ProjectType.IMAGES.value:
212
+ self.select_dataset_for_images.set_project_id(project_id)
213
+ self.select_dataset_for_images.select_all()
214
+ self.radio.set_value(ProjectType.IMAGES.value)
215
+ elif project_info.type == ProjectType.VIDEOS.value:
216
+ self.select_dataset_for_video.set_project_id(project_id)
217
+ self.select_dataset_for_video.select_all()
218
+ self._refresh_video_table()
219
+ self.select_video.select_rows(list(range(len(self.select_video._rows_total))))
220
+ self.radio.set_value(ProjectType.VIDEOS.value)
221
+ else:
222
+ raise ValueError(f"Project of type {project_info.type} is not supported.")
223
+
224
+ def select_datasets(self, dataset_ids: List[int], dataset_infos: List[DatasetInfo] = None):
225
+ if dataset_infos is None:
226
+ dataset_infos = [self.api.dataset.get_info_by_id(ds_id) for ds_id in dataset_ids]
227
+ project_ids = set(ds.project_id for ds in dataset_infos)
228
+ if len(project_ids) > 1:
229
+ raise ValueError("Cannot select datasets from different projects")
230
+ project_id = project_ids.pop()
231
+ project_info = self.api.project.get_info_by_id(project_id)
232
+ if project_info.type == ProjectType.IMAGES.value:
233
+ self.select_dataset_for_images.set_project_id(project_id)
234
+ self.select_dataset_for_images.set_dataset_ids(dataset_ids)
235
+ self.radio.set_value(ProjectType.IMAGES.value)
236
+ elif project_info.type == ProjectType.VIDEOS.value:
237
+ self.select_dataset_for_video.set_project_id(project_id)
238
+ self.select_dataset_for_video.set_dataset_ids(dataset_ids)
239
+ self._refresh_video_table()
240
+ self.select_video.select_rows(list(range(self.select_video._rows_total)))
241
+ self.radio.set_value(ProjectType.VIDEOS.value)
242
+ else:
243
+ raise ValueError(f"Project of type {project_info.type} is not supported.")
244
+
245
+ def select_videos(self, video_ids: List[int], video_infos: List[VideoInfo] = None):
246
+ if video_infos is None:
247
+ video_infos = self.api.video.get_info_by_id_batch(video_ids)
248
+ project_id = video_infos[0].project_id
249
+ self.select_dataset_for_video.set_project_id(project_id)
250
+ self.select_dataset_for_video.select_all()
251
+ self._refresh_video_table()
252
+ self.select_video.select_row_by_value("id", video_ids)
253
+ self.radio.set_value(ProjectType.VIDEOS.value)
254
+
205
255
  def disable(self):
206
256
  for widget in self.widgets_to_disable:
207
257
  widget.disable()
@@ -249,37 +299,13 @@ class InputSelector:
249
299
  video_infos = self.api.video.get_info_by_id_batch(video_ids)
250
300
  if not video_infos:
251
301
  raise ValueError(f"Videos with video ids {video_ids} are not found")
252
- project_id = video_infos[0].project_id
253
- self.select_dataset_for_video.set_project_id(project_id)
254
- self.select_dataset_for_video.select_all()
255
- self.select_video.select_row_by_value("id", data["video_ids"])
256
- self.radio.set_value(ProjectType.VIDEOS.value)
302
+ self.select_videos(video_ids, video_infos)
257
303
  elif "dataset_ids" in data:
258
304
  dataset_ids = data["dataset_ids"]
259
- if len(dataset_ids) == 0:
260
- raise ValueError("Dataset ids cannot be empty")
261
- dataset_id = dataset_ids[0]
262
- dataset_info = self.api.dataset.get_info_by_id(dataset_id)
263
- project_info = self.api.project.get_info_by_id(dataset_info.project_id)
264
- if project_info.type == ProjectType.VIDEOS:
265
- self.select_dataset_for_video.set_project_id(project_info.id)
266
- self.select_dataset_for_video.set_dataset_ids(dataset_ids)
267
- self.radio.set_value(ProjectType.VIDEOS.value)
268
- else:
269
- self.select_dataset_for_images.set_project_id(project_info.id)
270
- self.select_dataset_for_images.set_dataset_ids(dataset_ids)
271
- self.radio.set_value(ProjectType.IMAGES.value)
305
+ self.select_datasets(dataset_ids)
272
306
  elif "project_id" in data:
273
307
  project_id = data["project_id"]
274
- project_info = self.api.project.get_info_by_id(project_id)
275
- if project_info.type == ProjectType.VIDEOS:
276
- self.select_dataset_for_video.set_project_id(project_id)
277
- self.select_dataset_for_video.select_all()
278
- self.radio.set_value(ProjectType.VIDEOS.value)
279
- else:
280
- self.select_dataset_for_images.set_project_id(project_id)
281
- self.select_dataset_for_images.select_all()
282
- self.radio.set_value(ProjectType.IMAGES.value)
308
+ self.select_project(project_id)
283
309
 
284
310
  def get_project_id(self) -> int:
285
311
  if self.radio.get_value() == ProjectType.IMAGES.value:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: supervisely
3
- Version: 6.73.464
3
+ Version: 6.73.465
4
4
  Summary: Supervisely Python SDK.
5
5
  Home-page: https://github.com/supervisely/supervisely
6
6
  Author: Supervisely
@@ -461,7 +461,7 @@ supervisely/app/widgets/select_dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JC
461
461
  supervisely/app/widgets/select_dataset/select_dataset.py,sha256=S7zl83lUhquJ1U8GugiViEiGId6a5nVDfyIRRxh_LT4,10295
462
462
  supervisely/app/widgets/select_dataset/template.html,sha256=7O_ZgmRs0vOL8tng6QvYbI_0o6A4yMAPB2MlfzWHeHQ,984
463
463
  supervisely/app/widgets/select_dataset_tree/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
464
- supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py,sha256=HQwKXzz5yhmdcS79qfP_AGDUpGgQESNmLcASZx2rv78,25802
464
+ supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py,sha256=zFb7a70Zb7iWAtoM7zESCWcobQ2YEROJIJoj0CKpQ3k,25855
465
465
  supervisely/app/widgets/select_dataset_tree/template.html,sha256=_uvKCMP0nkpSl3FiTUxqy10JZw3q8-9hXCv22W3BDF0,38
466
466
  supervisely/app/widgets/select_item/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
467
467
  supervisely/app/widgets/select_item/select_item.py,sha256=dcB0UN46rn3nFQybgrGpLRfwB6xnPo-GGrv9rsMeCbA,3833
@@ -937,7 +937,7 @@ supervisely/nn/inference/predict_app/predict_app.py,sha256=jgpNLfbi5sQCiOYITHego
937
937
  supervisely/nn/inference/predict_app/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
938
938
  supervisely/nn/inference/predict_app/gui/classes_selector.py,sha256=qjc0-bpV2L2vIUr-LoNSLKXhNNrNfliJpl44ybAgSyw,6369
939
939
  supervisely/nn/inference/predict_app/gui/gui.py,sha256=Zkp3M2aKZEKX6kZQbYiaSPiTEFM_Ul_xtuNozQ7dkMs,39526
940
- supervisely/nn/inference/predict_app/gui/input_selector.py,sha256=vEGsS-XMjV052UbJIpg-aFfGxIfyz5inHqr8dIg6N_E,12461
940
+ supervisely/nn/inference/predict_app/gui/input_selector.py,sha256=jZ3H9TP9flu1LrulS936I6jenHnC_a3a6iixjTL4srY,13781
941
941
  supervisely/nn/inference/predict_app/gui/model_selector.py,sha256=UvUErutEI8COCWA1WU5MMvMrju0k7W_65Sgp7URa9Qc,2369
942
942
  supervisely/nn/inference/predict_app/gui/output_selector.py,sha256=IEwR3CJUAh26eztfdPqfIyzjfyAHbV-fRTwmuwJE09g,6535
943
943
  supervisely/nn/inference/predict_app/gui/preview.py,sha256=UpOrXmjV32qDRdRKPO15BbRVIzhIEh906BkUtjjGaio,2871
@@ -1129,9 +1129,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
1129
1129
  supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
1130
1130
  supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
1131
1131
  supervisely_lib/__init__.py,sha256=yRwzEQmVwSd6lUQoAUdBngKEOlnoQ6hA9ZcoZGJRNC4,331
1132
- supervisely-6.73.464.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1133
- supervisely-6.73.464.dist-info/METADATA,sha256=LetWCHVdHoghuOfeeVXPlpSzx46mBvxCsBpAf1P1uYs,35604
1134
- supervisely-6.73.464.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1135
- supervisely-6.73.464.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1136
- supervisely-6.73.464.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1137
- supervisely-6.73.464.dist-info/RECORD,,
1132
+ supervisely-6.73.465.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1133
+ supervisely-6.73.465.dist-info/METADATA,sha256=FORh3_bNVnnyV7o_g3BQu0gQGdc_8uIrvGR0Tvkl9Eo,35604
1134
+ supervisely-6.73.465.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1135
+ supervisely-6.73.465.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1136
+ supervisely-6.73.465.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1137
+ supervisely-6.73.465.dist-info/RECORD,,