supervisely 6.73.434__py3-none-any.whl → 6.73.436__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/api/image_api.py +11 -0
- supervisely/api/project_api.py +74 -1
- supervisely/api/task_api.py +3 -0
- supervisely/app/widgets/select_dataset/select_dataset.py +6 -0
- supervisely/io/env.py +85 -0
- supervisely/nn/training/gui/gui.py +4 -0
- supervisely/nn/training/train_app.py +15 -0
- {supervisely-6.73.434.dist-info → supervisely-6.73.436.dist-info}/METADATA +1 -1
- {supervisely-6.73.434.dist-info → supervisely-6.73.436.dist-info}/RECORD +13 -13
- {supervisely-6.73.434.dist-info → supervisely-6.73.436.dist-info}/LICENSE +0 -0
- {supervisely-6.73.434.dist-info → supervisely-6.73.436.dist-info}/WHEEL +0 -0
- {supervisely-6.73.434.dist-info → supervisely-6.73.436.dist-info}/entry_points.txt +0 -0
- {supervisely-6.73.434.dist-info → supervisely-6.73.436.dist-info}/top_level.txt +0 -0
supervisely/api/image_api.py
CHANGED
|
@@ -70,6 +70,7 @@ from supervisely.api.module_api import (
|
|
|
70
70
|
_get_single_item,
|
|
71
71
|
)
|
|
72
72
|
from supervisely.imaging import image as sly_image
|
|
73
|
+
from supervisely.io.env import app_categories, increment_upload_count, add_uploaded_ids_to_env
|
|
73
74
|
from supervisely.io.fs import (
|
|
74
75
|
OFFSETS_PKL_BATCH_SIZE,
|
|
75
76
|
OFFSETS_PKL_SUFFIX,
|
|
@@ -2613,6 +2614,16 @@ class ImageApi(RemoveableBulkModuleApi):
|
|
|
2613
2614
|
info_json_copy[ApiField.EXT] = info_json[ApiField.MIME].split("/")[1]
|
|
2614
2615
|
# results.append(self.InfoType(*[info_json_copy[field_name] for field_name in self.info_sequence()]))
|
|
2615
2616
|
results.append(self._convert_json_info(info_json_copy))
|
|
2617
|
+
|
|
2618
|
+
try:
|
|
2619
|
+
if "import" in app_categories():
|
|
2620
|
+
ids = [info.id for info in results[-len(batch_names) :]]
|
|
2621
|
+
if len(ids) > 0:
|
|
2622
|
+
increment_upload_count(dataset_id, len(ids))
|
|
2623
|
+
add_uploaded_ids_to_env(dataset_id, ids)
|
|
2624
|
+
except:
|
|
2625
|
+
pass
|
|
2626
|
+
|
|
2616
2627
|
break
|
|
2617
2628
|
except HTTPError as e:
|
|
2618
2629
|
error_details = e.response.json().get("details", {})
|
supervisely/api/project_api.py
CHANGED
|
@@ -47,6 +47,7 @@ from supervisely.api.module_api import (
|
|
|
47
47
|
RemoveableModuleApi,
|
|
48
48
|
UpdateableModule,
|
|
49
49
|
)
|
|
50
|
+
from supervisely.io.env import upload_count, uploaded_ids
|
|
50
51
|
from supervisely.io.json import dump_json_file, load_json_file
|
|
51
52
|
from supervisely.project.project_meta import ProjectMeta
|
|
52
53
|
from supervisely.project.project_meta import ProjectMetaJsonFields as MetaJsonF
|
|
@@ -2658,5 +2659,77 @@ class ProjectApi(CloneableModuleApi, UpdateableModule, RemoveableModuleApi):
|
|
|
2658
2659
|
):
|
|
2659
2660
|
infos.append((src_info, dst_info))
|
|
2660
2661
|
|
|
2662
|
+
return infos
|
|
2661
2663
|
|
|
2662
|
-
|
|
2664
|
+
def add_import_history(self, id: int, task_id: int) -> None:
|
|
2665
|
+
"""
|
|
2666
|
+
Adds import history to project info. Gets task info and adds it to project custom data.
|
|
2667
|
+
|
|
2668
|
+
:param id: Project ID
|
|
2669
|
+
:type id: int
|
|
2670
|
+
:param task_id: Task ID
|
|
2671
|
+
:type task_id: int
|
|
2672
|
+
:return: None
|
|
2673
|
+
:rtype: :class:`NoneType`
|
|
2674
|
+
:Usage example:
|
|
2675
|
+
.. code-block:: python
|
|
2676
|
+
import os
|
|
2677
|
+
from dotenv import load_dotenv
|
|
2678
|
+
|
|
2679
|
+
import supervisely as sly
|
|
2680
|
+
|
|
2681
|
+
# Load secrets and create API object from .env file (recommended)
|
|
2682
|
+
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
|
|
2683
|
+
load_dotenv(os.path.expanduser("~/supervisely.env"))
|
|
2684
|
+
api = sly.Api.from_env()
|
|
2685
|
+
|
|
2686
|
+
project_id = 123
|
|
2687
|
+
task_id = 456
|
|
2688
|
+
api.project.add_import_history(project_id, task_id)
|
|
2689
|
+
"""
|
|
2690
|
+
|
|
2691
|
+
task_info = self._api.task.get_info_by_id(task_id)
|
|
2692
|
+
module_id = task_info.get("meta", {}).get("app", {}).get("moduleId")
|
|
2693
|
+
slug = None
|
|
2694
|
+
if module_id is not None:
|
|
2695
|
+
module_info = self._api.app.get_ecosystem_module_info(module_id)
|
|
2696
|
+
slug = module_info.slug
|
|
2697
|
+
|
|
2698
|
+
items_count = upload_count()
|
|
2699
|
+
items_count = {int(k): v for k, v in items_count.items()}
|
|
2700
|
+
uploaded_images = uploaded_ids()
|
|
2701
|
+
uploaded_images = {int(k): v for k, v in uploaded_images.items()}
|
|
2702
|
+
total_items = sum(items_count.values()) if len(items_count) > 0 else 0
|
|
2703
|
+
app = task_info.get("meta", {}).get("app")
|
|
2704
|
+
app_name = app.get("name") if app else None
|
|
2705
|
+
app_version = app.get("version") if app else None
|
|
2706
|
+
data = {
|
|
2707
|
+
"task_id": task_id,
|
|
2708
|
+
"app": {"name": app_name, "version": app_version},
|
|
2709
|
+
"slug": slug,
|
|
2710
|
+
"status": task_info.get(ApiField.STATUS),
|
|
2711
|
+
"user_id": task_info.get(ApiField.USER_ID),
|
|
2712
|
+
"team_id": task_info.get(ApiField.TEAM_ID),
|
|
2713
|
+
"timestamp": datetime.now().strftime("%Y-%m-%dT%H:%M:%S"),
|
|
2714
|
+
"source_state": task_info.get("settings", {}).get("message", {}).get("state"),
|
|
2715
|
+
"items_count": total_items,
|
|
2716
|
+
"datasets": [
|
|
2717
|
+
{
|
|
2718
|
+
"id": ds,
|
|
2719
|
+
"items_count": items_count[ds],
|
|
2720
|
+
"uploaded_images": uploaded_images.get(ds, []),
|
|
2721
|
+
}
|
|
2722
|
+
for ds in items_count.keys()
|
|
2723
|
+
],
|
|
2724
|
+
}
|
|
2725
|
+
|
|
2726
|
+
project_info = self.get_info_by_id(id)
|
|
2727
|
+
|
|
2728
|
+
custom_data = project_info.custom_data or {}
|
|
2729
|
+
if "import_history" not in custom_data:
|
|
2730
|
+
custom_data["import_history"] = {"tasks": []}
|
|
2731
|
+
if "tasks" not in custom_data["import_history"]:
|
|
2732
|
+
custom_data["import_history"]["tasks"] = []
|
|
2733
|
+
custom_data["import_history"]["tasks"].append(data)
|
|
2734
|
+
|
|
2735
|
+
self.edit_info(id, custom_data=custom_data)
|
supervisely/api/task_api.py
CHANGED
|
@@ -24,6 +24,7 @@ from supervisely.api.module_api import (
|
|
|
24
24
|
WaitingTimeExceeded,
|
|
25
25
|
)
|
|
26
26
|
from supervisely.collection.str_enum import StrEnum
|
|
27
|
+
from supervisely.io.env import app_categories
|
|
27
28
|
from supervisely.io.fs import (
|
|
28
29
|
ensure_base_path,
|
|
29
30
|
get_file_hash,
|
|
@@ -652,6 +653,8 @@ class TaskApi(ModuleApiBase, ModuleWithStatus):
|
|
|
652
653
|
project_preview: Optional[str] = None,
|
|
653
654
|
) -> Dict:
|
|
654
655
|
"""set_output_project"""
|
|
656
|
+
if "import" in app_categories():
|
|
657
|
+
self._api.project.add_import_history(project_id, task_id)
|
|
655
658
|
if project_name is None:
|
|
656
659
|
project = self._api.project.get_info_by_id(project_id, raise_error=True)
|
|
657
660
|
project_name = project.name
|
|
@@ -138,6 +138,12 @@ class SelectDataset(Widget):
|
|
|
138
138
|
|
|
139
139
|
def set_project_id(self, id: int):
|
|
140
140
|
self._project_id = id
|
|
141
|
+
if self._compact is True:
|
|
142
|
+
DataJson()[self.widget_id]["projectId"] = self._project_id
|
|
143
|
+
DataJson().send_changes()
|
|
144
|
+
else:
|
|
145
|
+
StateJson()[self.widget_id]["projectId"] = self._project_id
|
|
146
|
+
StateJson().send_changes()
|
|
141
147
|
self._project_selector.set_project_id(self._project_id)
|
|
142
148
|
|
|
143
149
|
def set_select_all_datasets(self, is_checked: bool):
|
supervisely/io/env.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
|
+
import json
|
|
2
3
|
import os
|
|
3
4
|
from typing import Callable, List, Literal, Optional, Union
|
|
4
5
|
|
|
@@ -686,3 +687,87 @@ def configure_minimum_instance_version() -> None:
|
|
|
686
687
|
latest_version = get_latest_instance_version_from_json()
|
|
687
688
|
if latest_version:
|
|
688
689
|
os.environ["MINIMUM_INSTANCE_VERSION_FOR_SDK"] = latest_version
|
|
690
|
+
|
|
691
|
+
def app_categories(raise_not_found: Optional[bool] = False) -> list:
|
|
692
|
+
"""Returns a list of app categories from environment variable using following keys:
|
|
693
|
+
- APP_CATEGORIES
|
|
694
|
+
:param raise_not_found: if True, raises KeyError if app category is not found in environment variables
|
|
695
|
+
:type raise_not_found: Optional[bool]
|
|
696
|
+
:return: app categories
|
|
697
|
+
:rtype: list
|
|
698
|
+
"""
|
|
699
|
+
return _parse_from_env(
|
|
700
|
+
name="app_category",
|
|
701
|
+
keys=["APP_CATEGORIES"],
|
|
702
|
+
postprocess_fn=lambda x: json.loads(x),
|
|
703
|
+
default=[],
|
|
704
|
+
raise_not_found=raise_not_found,
|
|
705
|
+
)
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
def upload_count(raise_not_found: Optional[bool] = False) -> dict:
|
|
709
|
+
"""Returns a dictionary of upload counts from environment variable using following
|
|
710
|
+
- UPLOAD_COUNT
|
|
711
|
+
:param raise_not_found: if True, raises KeyError if upload count is not found in environment variables
|
|
712
|
+
:type raise_not_found: Optional[bool]
|
|
713
|
+
:return: upload count
|
|
714
|
+
:rtype: dict
|
|
715
|
+
"""
|
|
716
|
+
return _parse_from_env(
|
|
717
|
+
name="upload_count",
|
|
718
|
+
keys=["UPLOAD_COUNT"],
|
|
719
|
+
postprocess_fn=lambda x: json.loads(x),
|
|
720
|
+
default={},
|
|
721
|
+
raise_not_found=raise_not_found,
|
|
722
|
+
)
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
def uploaded_ids(raise_not_found: Optional[bool] = False) -> dict:
|
|
726
|
+
"""Returns a dictionary with dataset IDs as keys and lists of uploaded IDs as values from environment variable using following
|
|
727
|
+
- UPLOADED_IDS
|
|
728
|
+
:param raise_not_found: if True, raises KeyError if uploaded IDs is not found in environment variables
|
|
729
|
+
:type raise_not_found: Optional[bool]
|
|
730
|
+
:return: uploaded IDs
|
|
731
|
+
:rtype: dict
|
|
732
|
+
"""
|
|
733
|
+
return _parse_from_env(
|
|
734
|
+
name="uploaded_ids",
|
|
735
|
+
keys=["UPLOADED_IDS"],
|
|
736
|
+
postprocess_fn=lambda x: json.loads(x),
|
|
737
|
+
default={},
|
|
738
|
+
raise_not_found=raise_not_found,
|
|
739
|
+
)
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
def increment_upload_count(dataset_id: int, count: int = 1) -> None:
|
|
743
|
+
"""Increments the upload count for the given dataset id by the specified count.
|
|
744
|
+
|
|
745
|
+
:param dataset_id: The dataset id to increment the upload count for.
|
|
746
|
+
:type dataset_id: int
|
|
747
|
+
:param count: The amount to increment the upload count by. Defaults to 1.
|
|
748
|
+
:type count: int
|
|
749
|
+
"""
|
|
750
|
+
upload_info = upload_count()
|
|
751
|
+
upload_info[str(dataset_id)] = upload_info.get(str(dataset_id), 0) + count
|
|
752
|
+
os.environ["UPLOAD_COUNT"] = json.dumps(upload_info)
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
def add_uploaded_ids_to_env(dataset_id: int, ids: List[int]) -> None:
|
|
756
|
+
"""Adds the list of uploaded IDs to the environment variable for the given dataset ID.
|
|
757
|
+
|
|
758
|
+
:param dataset_id: The dataset ID to associate the uploaded IDs with.
|
|
759
|
+
:type dataset_id: int
|
|
760
|
+
:param ids: The list of uploaded IDs to add.
|
|
761
|
+
:type ids: List[int]
|
|
762
|
+
"""
|
|
763
|
+
uploaded = uploaded_ids()
|
|
764
|
+
if str(dataset_id) not in uploaded:
|
|
765
|
+
uploaded[str(dataset_id)] = []
|
|
766
|
+
existing_ids = set(uploaded[str(dataset_id)])
|
|
767
|
+
if set(ids).intersection(existing_ids):
|
|
768
|
+
for _id in ids:
|
|
769
|
+
if _id not in existing_ids:
|
|
770
|
+
uploaded[str(dataset_id)].append(_id)
|
|
771
|
+
else:
|
|
772
|
+
uploaded[str(dataset_id)].extend(ids)
|
|
773
|
+
os.environ["UPLOADED_IDS"] = json.dumps(uploaded)
|
|
@@ -254,6 +254,7 @@ class TrainGUI:
|
|
|
254
254
|
self.app_options = app_options
|
|
255
255
|
self.collapsable = self.app_options.get("collapsable", False)
|
|
256
256
|
self.need_convert_shapes = False
|
|
257
|
+
self._start_training = False
|
|
257
258
|
|
|
258
259
|
self.team_id = sly_env.team_id(raise_not_found=False)
|
|
259
260
|
self.workspace_id = sly_env.workspace_id(raise_not_found=False)
|
|
@@ -844,6 +845,7 @@ class TrainGUI:
|
|
|
844
845
|
},
|
|
845
846
|
},
|
|
846
847
|
"experiment_name": "My Experiment",
|
|
848
|
+
"start_training": False,
|
|
847
849
|
}
|
|
848
850
|
"""
|
|
849
851
|
if isinstance(app_state, str):
|
|
@@ -888,6 +890,8 @@ class TrainGUI:
|
|
|
888
890
|
|
|
889
891
|
if validate_steps:
|
|
890
892
|
logger.info(f"All steps have been validated successfully")
|
|
893
|
+
|
|
894
|
+
self._start_training = app_state.get("start_training", False)
|
|
891
895
|
# ------------------------------------------------------------------ #
|
|
892
896
|
|
|
893
897
|
def _init_input(
|
|
@@ -305,6 +305,12 @@ class TrainApp:
|
|
|
305
305
|
|
|
306
306
|
# Properties
|
|
307
307
|
# General
|
|
308
|
+
@property
|
|
309
|
+
def auto_start(self) -> bool:
|
|
310
|
+
"""
|
|
311
|
+
If True, the training will start automatically after the GUI is loaded and train server is started.
|
|
312
|
+
"""
|
|
313
|
+
return self.gui._start_training
|
|
308
314
|
# ----------------------------------------- #
|
|
309
315
|
|
|
310
316
|
# Input Data
|
|
@@ -2047,13 +2053,16 @@ class TrainApp:
|
|
|
2047
2053
|
try:
|
|
2048
2054
|
output_file_info = self._generate_experiment_report(experiment_info, model_meta)
|
|
2049
2055
|
experiment_info["has_report"] = True
|
|
2056
|
+
experiment_info["experiment_report_id"] = output_file_info.id
|
|
2050
2057
|
except Exception as e:
|
|
2051
2058
|
logger.error(f"Error generating experiment report: {e}")
|
|
2052
2059
|
output_file_info = session_link_file_info
|
|
2053
2060
|
experiment_info["has_report"] = False
|
|
2061
|
+
experiment_info["experiment_report_id"] = None
|
|
2054
2062
|
else: # link to artifacts directory
|
|
2055
2063
|
output_file_info = session_link_file_info
|
|
2056
2064
|
experiment_info["has_report"] = False
|
|
2065
|
+
experiment_info["experiment_report_id"] = None
|
|
2057
2066
|
return output_file_info, experiment_info
|
|
2058
2067
|
|
|
2059
2068
|
def _get_train_val_splits_for_app_state(self) -> Dict:
|
|
@@ -2789,6 +2798,12 @@ class TrainApp:
|
|
|
2789
2798
|
train_logger.add_on_step_finished_callback(step_callback)
|
|
2790
2799
|
|
|
2791
2800
|
# ----------------------------------------- #
|
|
2801
|
+
def start_in_thread(self):
|
|
2802
|
+
def auto_train():
|
|
2803
|
+
import threading
|
|
2804
|
+
threading.Thread(target=self._wrapped_start_training, daemon=True).start()
|
|
2805
|
+
self._server.add_event_handler("startup", auto_train)
|
|
2806
|
+
|
|
2792
2807
|
def _wrapped_start_training(self):
|
|
2793
2808
|
"""
|
|
2794
2809
|
Wrapper function to wrap the training process.
|
|
@@ -31,7 +31,7 @@ supervisely/api/entities_collection_api.py,sha256=Be13HsfMFLmq9XpiOfQog0Y569kbUn
|
|
|
31
31
|
supervisely/api/file_api.py,sha256=gNXNsikocSYRojoZrVmXIqXycqXm0e320piAwaLN6JI,92978
|
|
32
32
|
supervisely/api/github_api.py,sha256=NIexNjEer9H5rf5sw2LEZd7C1WR-tK4t6IZzsgeAAwQ,623
|
|
33
33
|
supervisely/api/image_annotation_tool_api.py,sha256=YcUo78jRDBJYvIjrd-Y6FJAasLta54nnxhyaGyanovA,5237
|
|
34
|
-
supervisely/api/image_api.py,sha256=
|
|
34
|
+
supervisely/api/image_api.py,sha256=5GBlY_7hYI7RXkBrwjkxGe3YkJktoytA1o9wdeHdIA4,232938
|
|
35
35
|
supervisely/api/import_storage_api.py,sha256=BDCgmR0Hv6OoiRHLCVPKt3iDxSVlQp1WrnKhAK_Zl84,460
|
|
36
36
|
supervisely/api/issues_api.py,sha256=BqDJXmNoTzwc3xe6_-mA7FDFC5QQ-ahGbXk_HmpkSeQ,17925
|
|
37
37
|
supervisely/api/labeling_job_api.py,sha256=G2_BV_WtA2lAhfw_nAQmWmv1P-pwimD0ba9GVKoGjiA,55537
|
|
@@ -39,13 +39,13 @@ supervisely/api/labeling_queue_api.py,sha256=ilNjAL1d9NSa9yabQn6E-W26YdtooT3ZGXI
|
|
|
39
39
|
supervisely/api/module_api.py,sha256=8Asdr3llhC8XQ98xGdR03hpe2GYznJONzNfgN-mQYv8,46458
|
|
40
40
|
supervisely/api/object_class_api.py,sha256=7-npNFMYjWNtSXYZg6syc6bX56_oCzDU2kFRPGQWCwA,10399
|
|
41
41
|
supervisely/api/plugin_api.py,sha256=SFm0IlTTOjuHBLUMgG4d4k6U3cWJocE-SVb-f08fwMQ,5286
|
|
42
|
-
supervisely/api/project_api.py,sha256=
|
|
42
|
+
supervisely/api/project_api.py,sha256=rZfPGwswx25-QXEgXwKIaCr5IEQJDA78s_2S92nAroY,104652
|
|
43
43
|
supervisely/api/project_class_api.py,sha256=5cyjdGPPb2tpttu5WmYoOxUNiDxqiojschkhZumF0KM,1426
|
|
44
44
|
supervisely/api/remote_storage_api.py,sha256=1O4rTIwW8s9gxC00yvFuKbEMGNsa7YSRlZ8j494ARwY,17793
|
|
45
45
|
supervisely/api/report_api.py,sha256=Om7CGulUbQ4BuJ16eDtz7luLe0JQNqab-LoLpUXu7YE,7123
|
|
46
46
|
supervisely/api/role_api.py,sha256=c1XAU_wZg6zL4wG2R7iuS9EJOoaHHNGchxa1nYVL7yo,3047
|
|
47
47
|
supervisely/api/storage_api.py,sha256=VxiflQt-SfyB1OuEOB66JsMkxCosUr4n0WHQ5if3Ltg,13039
|
|
48
|
-
supervisely/api/task_api.py,sha256=
|
|
48
|
+
supervisely/api/task_api.py,sha256=zfnug7I6UKUoCcUNKNqxMDr-z0abl4zkA7FpnKi6cVE,38954
|
|
49
49
|
supervisely/api/team_api.py,sha256=uPsBpDP_Ig9HDQ9Zm6Y-VboLbSYKIV9S_a1S7e4vqvo,19470
|
|
50
50
|
supervisely/api/user_api.py,sha256=m29GP9tvem8P2fJZgg7DAZ9yhFdBX26ZBcWxCKdnhn4,24943
|
|
51
51
|
supervisely/api/video_annotation_tool_api.py,sha256=3A9-U8WJzrTShP_n9T8U01M9FzGYdeS51CCBTzUnooo,6686
|
|
@@ -457,7 +457,7 @@ supervisely/app/widgets/select_cuda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
|
|
|
457
457
|
supervisely/app/widgets/select_cuda/select_cuda.py,sha256=TVZrLUtOskEf6VMVim_cbJIikBPTT-PNSTvKlzVnBw4,6119
|
|
458
458
|
supervisely/app/widgets/select_cuda/template.html,sha256=_uvKCMP0nkpSl3FiTUxqy10JZw3q8-9hXCv22W3BDF0,38
|
|
459
459
|
supervisely/app/widgets/select_dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
460
|
-
supervisely/app/widgets/select_dataset/select_dataset.py,sha256=
|
|
460
|
+
supervisely/app/widgets/select_dataset/select_dataset.py,sha256=S7zl83lUhquJ1U8GugiViEiGId6a5nVDfyIRRxh_LT4,10295
|
|
461
461
|
supervisely/app/widgets/select_dataset/template.html,sha256=7O_ZgmRs0vOL8tng6QvYbI_0o6A4yMAPB2MlfzWHeHQ,984
|
|
462
462
|
supervisely/app/widgets/select_dataset_tree/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
463
463
|
supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py,sha256=NjNxDz9E_cgknjulUp46iMv1o01rPl8ihSu8xiwBMus,23172
|
|
@@ -734,7 +734,7 @@ supervisely/imaging/font.py,sha256=0XcmWhlw7y2PAhrWgcsfInyRWj0WnlFpMSEXXilR8UA,2
|
|
|
734
734
|
supervisely/imaging/image.py,sha256=1KNc4qRbP9OlI4Yta07Kc2ohAgSBJ_9alF9Jag74w30,41873
|
|
735
735
|
supervisely/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
736
736
|
supervisely/io/docker_utils.py,sha256=hb_HXGM8IYB0PF-nD7NxMwaHgzaxIFxofsUzQ_RCUZI,7935
|
|
737
|
-
supervisely/io/env.py,sha256=
|
|
737
|
+
supervisely/io/env.py,sha256=wf15PXGd_xzY6c4g8ywPGcZ25A8a9Jv_BXg9-x61cgg,24884
|
|
738
738
|
supervisely/io/exception_handlers.py,sha256=22LPlLgyq59DnrhpaFrbGBYJE7uxO64VTZjsPJC0PLE,36757
|
|
739
739
|
supervisely/io/fs.py,sha256=pzNAK5fbT3G-7PKRY5oYcOPjgXeZ9x5Dyry7fzzZsr8,63604
|
|
740
740
|
supervisely/io/fs_cache.py,sha256=985gvBGzveLcDudgz10E4EWVjP9jxdU1Pa0GFfCBoCA,6520
|
|
@@ -1012,10 +1012,10 @@ supervisely/nn/tracker/botsort/tracker/kalman_filter.py,sha256=waTArMcbmpHAzb57a
|
|
|
1012
1012
|
supervisely/nn/tracker/botsort/tracker/matching.py,sha256=bgnheHwWD3XZSI3OJVfdrU5bYJ44rxPHzzSElfg6LZM,6600
|
|
1013
1013
|
supervisely/nn/tracker/botsort/tracker/mc_bot_sort.py,sha256=dFjWmubyJLrUP4i-CJaOhPEkQD-WD144deW7Ua5a7Rc,17775
|
|
1014
1014
|
supervisely/nn/training/__init__.py,sha256=gY4PCykJ-42MWKsqb9kl-skemKa8yB6t_fb5kzqR66U,111
|
|
1015
|
-
supervisely/nn/training/train_app.py,sha256=
|
|
1015
|
+
supervisely/nn/training/train_app.py,sha256=yHr8s8xQsk1zs3wxOxSlJ_qMecO4g112SXvFUL6n99M,132593
|
|
1016
1016
|
supervisely/nn/training/gui/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
|
|
1017
1017
|
supervisely/nn/training/gui/classes_selector.py,sha256=tqmVwUfC2u5K53mZmvDvNOhu9Mw5mddjpB2kxRXXUO8,12453
|
|
1018
|
-
supervisely/nn/training/gui/gui.py,sha256=
|
|
1018
|
+
supervisely/nn/training/gui/gui.py,sha256=_CtpzlwP6WLFgOTBDB_4RPcaqrQPK92DwSCDvO-dIKM,51749
|
|
1019
1019
|
supervisely/nn/training/gui/hyperparameters_selector.py,sha256=tEyppV5ay7nECi6qBQ9seKgfidPa_FxxtGmqsfQapa4,7768
|
|
1020
1020
|
supervisely/nn/training/gui/input_selector.py,sha256=rmirJzpdxuYONI6y5_cvMdGWBJ--T20YTsISghATHu4,2510
|
|
1021
1021
|
supervisely/nn/training/gui/model_selector.py,sha256=YKBAk6MheulFEl9TF9_mVtE3-Hsc0B3LmeOzMiV6AlQ,7487
|
|
@@ -1127,9 +1127,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
1127
1127
|
supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
|
|
1128
1128
|
supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
|
|
1129
1129
|
supervisely_lib/__init__.py,sha256=7-3QnN8Zf0wj8NCr2oJmqoQWMKKPKTECvjH9pd2S5vY,159
|
|
1130
|
-
supervisely-6.73.
|
|
1131
|
-
supervisely-6.73.
|
|
1132
|
-
supervisely-6.73.
|
|
1133
|
-
supervisely-6.73.
|
|
1134
|
-
supervisely-6.73.
|
|
1135
|
-
supervisely-6.73.
|
|
1130
|
+
supervisely-6.73.436.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
1131
|
+
supervisely-6.73.436.dist-info/METADATA,sha256=gOzWnbgJZtUwif9iy9Sy7pRg76KXC8dkqOSGciSk_p4,35433
|
|
1132
|
+
supervisely-6.73.436.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
1133
|
+
supervisely-6.73.436.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
|
|
1134
|
+
supervisely-6.73.436.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
|
|
1135
|
+
supervisely-6.73.436.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|