supervisely 6.73.337__py3-none-any.whl → 6.73.339__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.
- supervisely/app/fastapi/templating.py +1 -1
- supervisely/app/widgets/select/select.py +3 -0
- supervisely/app/widgets/select/template.html +3 -1
- supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py +10 -3
- supervisely/app/widgets/tree_select/tree_select.py +3 -0
- supervisely/project/video_project.py +24 -20
- {supervisely-6.73.337.dist-info → supervisely-6.73.339.dist-info}/METADATA +1 -1
- {supervisely-6.73.337.dist-info → supervisely-6.73.339.dist-info}/RECORD +12 -12
- {supervisely-6.73.337.dist-info → supervisely-6.73.339.dist-info}/LICENSE +0 -0
- {supervisely-6.73.337.dist-info → supervisely-6.73.339.dist-info}/WHEEL +0 -0
- {supervisely-6.73.337.dist-info → supervisely-6.73.339.dist-info}/entry_points.txt +0 -0
- {supervisely-6.73.337.dist-info → supervisely-6.73.339.dist-info}/top_level.txt +0 -0
|
@@ -11,7 +11,7 @@ from supervisely.app.singleton import Singleton
|
|
|
11
11
|
from supervisely.app.widgets_context import JinjaWidgets
|
|
12
12
|
|
|
13
13
|
# https://github.com/supervisely/js-bundle
|
|
14
|
-
js_bundle_version = "2.1.
|
|
14
|
+
js_bundle_version = "2.1.99"
|
|
15
15
|
|
|
16
16
|
# https://github.com/supervisely-ecosystem/supervisely-app-frontend-js
|
|
17
17
|
js_frontend_version = "v0.0.55"
|
|
@@ -93,6 +93,7 @@ class Select(ConditionalWidget):
|
|
|
93
93
|
widget_id: str = None,
|
|
94
94
|
items_links: List[str] = None,
|
|
95
95
|
width_percent: Optional[int] = None,
|
|
96
|
+
width_px: Optional[int] = None,
|
|
96
97
|
) -> Select:
|
|
97
98
|
if items is None and groups is None:
|
|
98
99
|
raise ValueError("One of the arguments has to be defined: items or groups")
|
|
@@ -113,6 +114,7 @@ class Select(ConditionalWidget):
|
|
|
113
114
|
self._width_percent = min(max(width_percent, 1), 100)
|
|
114
115
|
else:
|
|
115
116
|
self._width_percent = None
|
|
117
|
+
self._width_px = width_px
|
|
116
118
|
|
|
117
119
|
if items_links is not None:
|
|
118
120
|
if items is None:
|
|
@@ -140,6 +142,7 @@ class Select(ConditionalWidget):
|
|
|
140
142
|
"groups": None,
|
|
141
143
|
"with_link": self._with_link,
|
|
142
144
|
"width_percent": self._width_percent,
|
|
145
|
+
"width_px": self._width_px,
|
|
143
146
|
}
|
|
144
147
|
if self._items is not None:
|
|
145
148
|
res["items"] = [item.to_json() for item in self._items]
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
:multiple="data.{{{widget.widget_id}}}.multiple"
|
|
11
11
|
:filterable="data.{{{widget.widget_id}}}.filterable"
|
|
12
12
|
:fit-input-width="data.{{{widget.widget_id}}}.fit_input_width"
|
|
13
|
-
{% if widget.
|
|
13
|
+
{% if widget._width_px is not none %}
|
|
14
|
+
:style="{ width: `${data.{{{widget.widget_id}}}.width_px}px` }"
|
|
15
|
+
{% elif widget._width_percent is not none %}
|
|
14
16
|
:style="{ width: `${data.{{{widget.widget_id}}}.width_percent}%` }"
|
|
15
17
|
{% endif %}
|
|
16
18
|
>
|
|
@@ -96,8 +96,9 @@ class SelectDatasetTree(Widget):
|
|
|
96
96
|
append_to_body: bool = True,
|
|
97
97
|
widget_id: Union[str, None] = None,
|
|
98
98
|
show_select_all_datasets_checkbox: bool = True,
|
|
99
|
+
width: int = 193,
|
|
99
100
|
):
|
|
100
|
-
self._api = Api()
|
|
101
|
+
self._api = Api.from_env()
|
|
101
102
|
|
|
102
103
|
if default_id is not None and project_id is None:
|
|
103
104
|
raise ValueError("Project ID must be provided when default dataset ID is set.")
|
|
@@ -136,6 +137,7 @@ class SelectDatasetTree(Widget):
|
|
|
136
137
|
self._select_workspace = None
|
|
137
138
|
self._select_project = None
|
|
138
139
|
self._select_dataset = None
|
|
140
|
+
self._width = width
|
|
139
141
|
|
|
140
142
|
# List of widgets will be used to create a Container.
|
|
141
143
|
self._widgets = []
|
|
@@ -361,7 +363,7 @@ class SelectDatasetTree(Widget):
|
|
|
361
363
|
flat=flat,
|
|
362
364
|
always_open=always_open,
|
|
363
365
|
append_to_body=self._append_to_body,
|
|
364
|
-
width=
|
|
366
|
+
width=self._width,
|
|
365
367
|
placeholder="Select dataset",
|
|
366
368
|
)
|
|
367
369
|
if self._dataset_id is not None:
|
|
@@ -416,7 +418,10 @@ class SelectDatasetTree(Widget):
|
|
|
416
418
|
self._select_dataset.hide()
|
|
417
419
|
|
|
418
420
|
self._select_team = Select(
|
|
419
|
-
items=self._get_select_items(),
|
|
421
|
+
items=self._get_select_items(),
|
|
422
|
+
placeholder="Select team",
|
|
423
|
+
filterable=True,
|
|
424
|
+
width_px=self._width,
|
|
420
425
|
)
|
|
421
426
|
self._select_team.set_value(self._team_id)
|
|
422
427
|
if not team_is_selectable:
|
|
@@ -426,6 +431,7 @@ class SelectDatasetTree(Widget):
|
|
|
426
431
|
items=self._get_select_items(team_id=self._team_id),
|
|
427
432
|
placeholder="Select workspace",
|
|
428
433
|
filterable=True,
|
|
434
|
+
width_px=self._width,
|
|
429
435
|
)
|
|
430
436
|
self._select_workspace.set_value(self._workspace_id)
|
|
431
437
|
if not workspace_is_selectable:
|
|
@@ -435,6 +441,7 @@ class SelectDatasetTree(Widget):
|
|
|
435
441
|
items=self._get_select_items(workspace_id=self._workspace_id),
|
|
436
442
|
placeholder="Select project",
|
|
437
443
|
filterable=True,
|
|
444
|
+
width_px=self._width,
|
|
438
445
|
)
|
|
439
446
|
self._select_project.set_value(self._project_id)
|
|
440
447
|
|
|
@@ -131,6 +131,7 @@ class TreeSelect(Widget):
|
|
|
131
131
|
append_to_body: bool = True,
|
|
132
132
|
widget_id: Optional[str] = None,
|
|
133
133
|
placeholder: Optional[str] = None,
|
|
134
|
+
show_tooltip: bool = True,
|
|
134
135
|
):
|
|
135
136
|
self._items = items or []
|
|
136
137
|
self._multiple = multiple_select
|
|
@@ -141,6 +142,7 @@ class TreeSelect(Widget):
|
|
|
141
142
|
self._width = width
|
|
142
143
|
self._append_to_body = append_to_body
|
|
143
144
|
self._placeholder = placeholder
|
|
145
|
+
self._show_tooltip = show_tooltip
|
|
144
146
|
|
|
145
147
|
super().__init__(widget_id=widget_id, file_path=__file__)
|
|
146
148
|
|
|
@@ -170,6 +172,7 @@ class TreeSelect(Widget):
|
|
|
170
172
|
"valueFormat": self._value_format,
|
|
171
173
|
"appendToBody": self._append_to_body,
|
|
172
174
|
"placeholder": self._placeholder,
|
|
175
|
+
"showTooltip": self._show_tooltip,
|
|
173
176
|
},
|
|
174
177
|
}
|
|
175
178
|
|
|
@@ -69,6 +69,8 @@ class VideoDataset(Dataset):
|
|
|
69
69
|
annotation_class = VideoAnnotation
|
|
70
70
|
item_info_class = VideoInfo
|
|
71
71
|
|
|
72
|
+
datasets_dir_name = "datasets"
|
|
73
|
+
|
|
72
74
|
@property
|
|
73
75
|
def project_dir(self) -> str:
|
|
74
76
|
"""
|
|
@@ -1308,24 +1310,19 @@ def download_video_project(
|
|
|
1308
1310
|
LOG_BATCH_SIZE = 1
|
|
1309
1311
|
|
|
1310
1312
|
key_id_map = KeyIdMap()
|
|
1311
|
-
|
|
1312
1313
|
project_fs = VideoProject(dest_dir, OpenMode.CREATE)
|
|
1313
|
-
|
|
1314
1314
|
meta = ProjectMeta.from_json(api.project.get_meta(project_id))
|
|
1315
1315
|
project_fs.set_meta(meta)
|
|
1316
|
-
|
|
1317
1316
|
if progress_cb is not None:
|
|
1318
1317
|
log_progress = False
|
|
1319
1318
|
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
else:
|
|
1325
|
-
datasets = api.dataset.get_list(project_id)
|
|
1319
|
+
dataset_ids = set(dataset_ids) if (dataset_ids is not None) else None
|
|
1320
|
+
for parents, dataset in api.dataset.tree(project_id):
|
|
1321
|
+
if dataset_ids is not None and dataset.id not in dataset_ids:
|
|
1322
|
+
continue
|
|
1326
1323
|
|
|
1327
|
-
|
|
1328
|
-
dataset_fs = project_fs.create_dataset(dataset.name)
|
|
1324
|
+
dataset_path = Dataset._get_dataset_path(dataset.name, parents)
|
|
1325
|
+
dataset_fs = project_fs.create_dataset(dataset.name, dataset_path)
|
|
1329
1326
|
videos = api.video.get_list(dataset.id)
|
|
1330
1327
|
|
|
1331
1328
|
ds_progress = progress_cb
|
|
@@ -1463,9 +1460,17 @@ def upload_video_project(
|
|
|
1463
1460
|
if progress_cb is not None:
|
|
1464
1461
|
log_progress = False
|
|
1465
1462
|
|
|
1463
|
+
dataset_map = {}
|
|
1466
1464
|
for dataset_fs in project_fs.datasets:
|
|
1467
1465
|
dataset_fs: VideoDataset
|
|
1468
|
-
|
|
1466
|
+
if len(dataset_fs.parents) > 0:
|
|
1467
|
+
parent = f"{os.path.sep}".join(dataset_fs.parents)
|
|
1468
|
+
parent_id = dataset_map.get(parent)
|
|
1469
|
+
else:
|
|
1470
|
+
parent = ""
|
|
1471
|
+
parent_id = None
|
|
1472
|
+
dataset = api.dataset.create(project.id, dataset_fs.short_name, parent_id=parent_id)
|
|
1473
|
+
dataset_map[os.path.join(parent, dataset.name)] = dataset.id
|
|
1469
1474
|
|
|
1470
1475
|
names, item_paths, ann_paths = [], [], []
|
|
1471
1476
|
for item_name in dataset_fs:
|
|
@@ -1603,15 +1608,14 @@ async def download_video_project_async(
|
|
|
1603
1608
|
if progress_cb is not None:
|
|
1604
1609
|
log_progress = False
|
|
1605
1610
|
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1611
|
+
dataset_ids = set(dataset_ids) if (dataset_ids is not None) else None
|
|
1612
|
+
for parents, dataset in api.dataset.tree(project_id):
|
|
1613
|
+
if dataset_ids is not None and dataset.id not in dataset_ids:
|
|
1614
|
+
continue
|
|
1615
|
+
|
|
1616
|
+
dataset_path = Dataset._get_dataset_path(dataset.name, parents)
|
|
1612
1617
|
|
|
1613
|
-
|
|
1614
|
-
dataset_fs = project_fs.create_dataset(dataset.name)
|
|
1618
|
+
dataset_fs = project_fs.create_dataset(dataset.name, dataset_path)
|
|
1615
1619
|
videos = api.video.get_list(dataset.id)
|
|
1616
1620
|
|
|
1617
1621
|
if log_progress is True:
|
|
@@ -94,7 +94,7 @@ supervisely/app/fastapi/no_html_main.html,sha256=NhQP7noyORBx72lFh1CQKgBRupkWjiq
|
|
|
94
94
|
supervisely/app/fastapi/offline.py,sha256=CwMMkJ1frD6wiZS-SEoNDtQ1UJcJe1Ob6ohE3r4CQL8,7414
|
|
95
95
|
supervisely/app/fastapi/request.py,sha256=NU7rKmxJ1pfkDZ7_yHckRcRAueJRQIqCor11UO2OHr8,766
|
|
96
96
|
supervisely/app/fastapi/subapp.py,sha256=5lMfFLYBfHzE1OmITHsogB9hScyTJFjGV45AKY67Hkg,45647
|
|
97
|
-
supervisely/app/fastapi/templating.py,sha256=
|
|
97
|
+
supervisely/app/fastapi/templating.py,sha256=3X69vo-_RO2tlaVz5obifXjrNEIHVSNVQFNm_xjOMe4,2929
|
|
98
98
|
supervisely/app/fastapi/utils.py,sha256=t_UquzlFrdkKtAJmH6eJ279pE8Aa3BaIu4XjX-SEaIE,946
|
|
99
99
|
supervisely/app/fastapi/websocket.py,sha256=TlRSPOAhRItTv1HGvdukK1ZvhRjMUxRa-lJlsRR9rJw,1308
|
|
100
100
|
supervisely/app/v1/__init__.py,sha256=OdU0PYv6hLwahYoyaLFO8m3cbJSchvPbqxuG1N3T734,848
|
|
@@ -428,8 +428,8 @@ supervisely/app/widgets/run_app_button/template.html,sha256=-SX7zZ53ehyfQMg_az3B
|
|
|
428
428
|
supervisely/app/widgets/scatter_chart/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
429
429
|
supervisely/app/widgets/scatter_chart/scatter_chart.py,sha256=nX7fZbWsDiMjOek5FvIHgKbnBwQ-ol_V3XvnoAnz59c,4832
|
|
430
430
|
supervisely/app/widgets/select/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
431
|
-
supervisely/app/widgets/select/select.py,sha256=
|
|
432
|
-
supervisely/app/widgets/select/template.html,sha256=
|
|
431
|
+
supervisely/app/widgets/select/select.py,sha256=1aB7Oi1mtyBySvBc78McZy4NnNNxGXGwMkCeYpOsLew,11367
|
|
432
|
+
supervisely/app/widgets/select/template.html,sha256=s5ZpmWkYf3JOVyBEgWPAIMbQzTK6txL9E-k5-HNFj3s,2041
|
|
433
433
|
supervisely/app/widgets/select_app_session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
434
434
|
supervisely/app/widgets/select_app_session/select_app_session.py,sha256=l8Nam2bG8g9re29ra28i5PmmW9LKhkOGAG48dgHFr9M,2038
|
|
435
435
|
supervisely/app/widgets/select_app_session/template.html,sha256=PGr5YL7Ts3ALO9ZQkuYNnRhP7eyYq54sf7Y9EhDbuvE,959
|
|
@@ -440,7 +440,7 @@ supervisely/app/widgets/select_dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JC
|
|
|
440
440
|
supervisely/app/widgets/select_dataset/select_dataset.py,sha256=2bltbJ70plGFoF8mpLxAU2huVBce8D6CsCcX9wxO5KU,9713
|
|
441
441
|
supervisely/app/widgets/select_dataset/template.html,sha256=7O_ZgmRs0vOL8tng6QvYbI_0o6A4yMAPB2MlfzWHeHQ,984
|
|
442
442
|
supervisely/app/widgets/select_dataset_tree/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
443
|
-
supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py,sha256=
|
|
443
|
+
supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py,sha256=ngSp4-R7rLsExYOY3VY7yhhC_yeeO_BkAxN95savSPc,22517
|
|
444
444
|
supervisely/app/widgets/select_dataset_tree/template.html,sha256=_uvKCMP0nkpSl3FiTUxqy10JZw3q8-9hXCv22W3BDF0,38
|
|
445
445
|
supervisely/app/widgets/select_item/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
446
446
|
supervisely/app/widgets/select_item/select_item.py,sha256=dcB0UN46rn3nFQybgrGpLRfwB6xnPo-GGrv9rsMeCbA,3833
|
|
@@ -530,7 +530,7 @@ supervisely/app/widgets/transfer/template.html,sha256=w9T5TrityCeHUBPPyzRBBSm48z
|
|
|
530
530
|
supervisely/app/widgets/transfer/transfer.py,sha256=tZ6HhRH11xOrEhz3TAH0Redw3NE2GFSDHuHCmKBSY_s,19986
|
|
531
531
|
supervisely/app/widgets/tree_select/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
532
532
|
supervisely/app/widgets/tree_select/template.html,sha256=eUHN0yn_llRRozAOvdc8SjhY-KX12TcgOUXCemHWGew,613
|
|
533
|
-
supervisely/app/widgets/tree_select/tree_select.py,sha256=
|
|
533
|
+
supervisely/app/widgets/tree_select/tree_select.py,sha256=A86TCS_gXHi6UvHmsvZUyijnKgTvQ6UGnrHPJ19U_IY,14499
|
|
534
534
|
supervisely/app/widgets/treemap_chart/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
535
535
|
supervisely/app/widgets/treemap_chart/treemap_chart.py,sha256=g6wc1M30kNFA92Xj-6g2bJlnnV23ro17pJn0s4WDgvs,9298
|
|
536
536
|
supervisely/app/widgets/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -1026,7 +1026,7 @@ supervisely/project/project_settings.py,sha256=NLThzU_DCynOK6hkHhVdFyezwprn9Uqln
|
|
|
1026
1026
|
supervisely/project/project_type.py,sha256=EZDJFRi4MmC_5epYexBgML5WMZsWdEVk_CjqDQy5m3c,572
|
|
1027
1027
|
supervisely/project/readme_template.md,sha256=rGmSLRVUSGjvorjpzl0sZ7YA4sKfDexl95NFtMISj3I,9128
|
|
1028
1028
|
supervisely/project/upload.py,sha256=AjgHYgVZwUE25ygC5pqvFjdAladbyB8T78mlet5Qpho,3750
|
|
1029
|
-
supervisely/project/video_project.py,sha256=
|
|
1029
|
+
supervisely/project/video_project.py,sha256=bkQI3JTimQR-83iWAThjoz7bTcbCIqvvk039AG3BPXc,64081
|
|
1030
1030
|
supervisely/project/volume_project.py,sha256=Kn9VEvWuKKZvL2nx6B6bjSvHuoZhAOxEc6DvPRexUco,22666
|
|
1031
1031
|
supervisely/pyscripts_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1032
1032
|
supervisely/pyscripts_utils/utils.py,sha256=scEwHJvHRQa8NHIOn2eTwH6-Zc8CGdLoxM-WzH9jcRo,314
|
|
@@ -1082,9 +1082,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
1082
1082
|
supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
|
|
1083
1083
|
supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
|
|
1084
1084
|
supervisely_lib/__init__.py,sha256=7-3QnN8Zf0wj8NCr2oJmqoQWMKKPKTECvjH9pd2S5vY,159
|
|
1085
|
-
supervisely-6.73.
|
|
1086
|
-
supervisely-6.73.
|
|
1087
|
-
supervisely-6.73.
|
|
1088
|
-
supervisely-6.73.
|
|
1089
|
-
supervisely-6.73.
|
|
1090
|
-
supervisely-6.73.
|
|
1085
|
+
supervisely-6.73.339.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
1086
|
+
supervisely-6.73.339.dist-info/METADATA,sha256=jUY-G7GqpZ9Qe4qSdlGrj8lMGoV8P386z114kCWh7gk,33596
|
|
1087
|
+
supervisely-6.73.339.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
1088
|
+
supervisely-6.73.339.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
|
|
1089
|
+
supervisely-6.73.339.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
|
|
1090
|
+
supervisely-6.73.339.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|