supervisely 6.73.389__py3-none-any.whl → 6.73.391__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/widgets/experiment_selector/experiment_selector.py +20 -3
- supervisely/app/widgets/experiment_selector/template.html +49 -70
- supervisely/app/widgets/report_thumbnail/report_thumbnail.py +19 -4
- supervisely/decorators/profile.py +20 -0
- supervisely/nn/benchmark/utils/detection/utlis.py +7 -0
- supervisely/nn/experiments.py +4 -0
- supervisely/nn/inference/gui/serving_gui_template.py +71 -11
- supervisely/nn/inference/inference.py +108 -6
- supervisely/nn/training/gui/classes_selector.py +246 -27
- supervisely/nn/training/gui/gui.py +318 -234
- supervisely/nn/training/gui/hyperparameters_selector.py +2 -2
- supervisely/nn/training/gui/model_selector.py +42 -1
- supervisely/nn/training/gui/tags_selector.py +1 -1
- supervisely/nn/training/gui/train_val_splits_selector.py +8 -7
- supervisely/nn/training/gui/training_artifacts.py +10 -1
- supervisely/nn/training/gui/training_process.py +17 -1
- supervisely/nn/training/train_app.py +227 -72
- supervisely/template/__init__.py +2 -0
- supervisely/template/base_generator.py +90 -0
- supervisely/template/experiment/__init__.py +0 -0
- supervisely/template/experiment/experiment.html.jinja +537 -0
- supervisely/template/experiment/experiment_generator.py +996 -0
- supervisely/template/experiment/header.html.jinja +154 -0
- supervisely/template/experiment/sidebar.html.jinja +240 -0
- supervisely/template/experiment/sly-style.css +397 -0
- supervisely/template/experiment/template.html.jinja +18 -0
- supervisely/template/extensions.py +172 -0
- supervisely/template/template_renderer.py +253 -0
- {supervisely-6.73.389.dist-info → supervisely-6.73.391.dist-info}/METADATA +3 -1
- {supervisely-6.73.389.dist-info → supervisely-6.73.391.dist-info}/RECORD +34 -23
- {supervisely-6.73.389.dist-info → supervisely-6.73.391.dist-info}/LICENSE +0 -0
- {supervisely-6.73.389.dist-info → supervisely-6.73.391.dist-info}/WHEEL +0 -0
- {supervisely-6.73.389.dist-info → supervisely-6.73.391.dist-info}/entry_points.txt +0 -0
- {supervisely-6.73.389.dist-info → supervisely-6.73.391.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import re
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
5
|
+
|
|
6
|
+
from jinja2 import Environment, FileSystemLoader
|
|
7
|
+
|
|
8
|
+
from supervisely import logger
|
|
9
|
+
from supervisely.template.extensions import (
|
|
10
|
+
AutoSidebarExtension,
|
|
11
|
+
MarkdownExtension,
|
|
12
|
+
TabExtension,
|
|
13
|
+
TabsExtension,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class TemplateRenderer:
|
|
18
|
+
|
|
19
|
+
def __init__(
|
|
20
|
+
self,
|
|
21
|
+
generate_sidebar: bool = False,
|
|
22
|
+
jinja_options: Optional[Dict[str, Any]] = None,
|
|
23
|
+
jinja_extensions: Optional[list] = None,
|
|
24
|
+
add_header_ids: bool = True,
|
|
25
|
+
):
|
|
26
|
+
"""
|
|
27
|
+
Initializes template renderer with specified parameters.
|
|
28
|
+
|
|
29
|
+
:param jinja_extensions: List of Jinja2 extensions to use. By default includes MarkdownExtension.
|
|
30
|
+
:type jinja_extensions: Optional[list]
|
|
31
|
+
:param jinja_options: Additional options for configuring Jinja2 environment.
|
|
32
|
+
:type jinja_options: Optional[Dict[str, Any]]
|
|
33
|
+
"""
|
|
34
|
+
if jinja_options is None:
|
|
35
|
+
jinja_options = {
|
|
36
|
+
"autoescape": False,
|
|
37
|
+
"trim_blocks": True,
|
|
38
|
+
"lstrip_blocks": True,
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if jinja_extensions is None:
|
|
42
|
+
jinja_extensions = [MarkdownExtension, TabsExtension, TabExtension]
|
|
43
|
+
if generate_sidebar:
|
|
44
|
+
jinja_extensions.append(AutoSidebarExtension)
|
|
45
|
+
|
|
46
|
+
self.jinja_extensions = jinja_extensions
|
|
47
|
+
self.jinja_options = jinja_options
|
|
48
|
+
self.add_header_ids = add_header_ids
|
|
49
|
+
self.environment = None
|
|
50
|
+
|
|
51
|
+
def render(
|
|
52
|
+
self,
|
|
53
|
+
template_path: str,
|
|
54
|
+
context: dict,
|
|
55
|
+
) -> str:
|
|
56
|
+
"""
|
|
57
|
+
Renders a template with the provided context.
|
|
58
|
+
|
|
59
|
+
:param template_path: Path to the markdown template file relative to template dir.
|
|
60
|
+
:type template_path: str
|
|
61
|
+
:param context: Dictionary with data for template rendering.
|
|
62
|
+
:type context: Dict[str, Any]
|
|
63
|
+
|
|
64
|
+
:returns: Result of template rendering as a string.
|
|
65
|
+
:rtype: str
|
|
66
|
+
"""
|
|
67
|
+
# Render
|
|
68
|
+
p = Path(template_path)
|
|
69
|
+
directory = p.parent.absolute()
|
|
70
|
+
filename = p.name
|
|
71
|
+
loader = FileSystemLoader(directory)
|
|
72
|
+
env_options = {**self.jinja_options, "extensions": self.jinja_extensions}
|
|
73
|
+
environment = Environment(loader=loader, **env_options)
|
|
74
|
+
self.environment = environment
|
|
75
|
+
template = environment.get_template(filename)
|
|
76
|
+
html = template.render(**context)
|
|
77
|
+
|
|
78
|
+
# Generate sidebar if AutoSidebarExtension is used
|
|
79
|
+
if AutoSidebarExtension in self.jinja_extensions:
|
|
80
|
+
html = self._generate_autosidebar(html)
|
|
81
|
+
elif self.add_header_ids:
|
|
82
|
+
html = self._add_header_ids(html)
|
|
83
|
+
|
|
84
|
+
return html
|
|
85
|
+
|
|
86
|
+
def _add_header_ids(self, content_html: str) -> str:
|
|
87
|
+
"""
|
|
88
|
+
Add IDs to h2 and h3 header tags for table of contents generation.
|
|
89
|
+
|
|
90
|
+
Args:
|
|
91
|
+
content_html: HTML content with h2 and h3 headers
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
HTML content with IDs added to headers
|
|
95
|
+
"""
|
|
96
|
+
def clean_title_for_id(title: str) -> str:
|
|
97
|
+
"""Convert header title to a clean ID format"""
|
|
98
|
+
# Remove HTML tags if any
|
|
99
|
+
title = re.sub(r'<[^>]+>', '', title)
|
|
100
|
+
# Keep only alphanumeric characters, spaces, and hyphens
|
|
101
|
+
title = re.sub(r'[^\w\s-]', '', title)
|
|
102
|
+
# Replace spaces with hyphens and convert to lowercase
|
|
103
|
+
title = title.strip().lower().replace(' ', '-')
|
|
104
|
+
# Remove multiple consecutive hyphens
|
|
105
|
+
title = re.sub(r'-+', '-', title)
|
|
106
|
+
# Remove leading/trailing hyphens
|
|
107
|
+
title = title.strip('-')
|
|
108
|
+
return title
|
|
109
|
+
|
|
110
|
+
def replace_header(match):
|
|
111
|
+
"""Replace header with version that includes ID"""
|
|
112
|
+
level = match.group(1) # Header level (2 or 3)
|
|
113
|
+
title = match.group(2).strip() # Header title text
|
|
114
|
+
|
|
115
|
+
# Generate clean ID
|
|
116
|
+
clean_id = clean_title_for_id(title)
|
|
117
|
+
section_id = f"{clean_id}"
|
|
118
|
+
|
|
119
|
+
# Check for potential duplicate IDs (basic check)
|
|
120
|
+
if section_id in used_ids:
|
|
121
|
+
logger.debug(f"Duplicate header ID detected: '{section_id}' for title '{title}'")
|
|
122
|
+
section_id += "-2" # TODO: Improve duplicate handling logic
|
|
123
|
+
used_ids.add(section_id)
|
|
124
|
+
|
|
125
|
+
# Return header with ID attribute
|
|
126
|
+
return f'<h{level} id="{section_id}">{title}</h{level}>'
|
|
127
|
+
|
|
128
|
+
# Track used IDs for duplicate detection
|
|
129
|
+
used_ids = set()
|
|
130
|
+
|
|
131
|
+
# Pattern to match h2 and h3 headers
|
|
132
|
+
header_pattern = r"<h([2-3])>(.*?)</h\1>"
|
|
133
|
+
|
|
134
|
+
# Replace all matching headers with versions that include IDs
|
|
135
|
+
updated_html = re.sub(header_pattern, replace_header, content_html, flags=re.IGNORECASE)
|
|
136
|
+
|
|
137
|
+
return updated_html
|
|
138
|
+
|
|
139
|
+
def _generate_autosidebar(self, content_html: str):
|
|
140
|
+
# Extract h2 headers and generate ids
|
|
141
|
+
h2_pattern = r"<h2>(.*?)</h2>"
|
|
142
|
+
headers = []
|
|
143
|
+
navigation = []
|
|
144
|
+
lines = content_html.split("\n")
|
|
145
|
+
for i, line in enumerate(lines):
|
|
146
|
+
match = re.search(h2_pattern, line)
|
|
147
|
+
if match:
|
|
148
|
+
title = match.group(1).strip()
|
|
149
|
+
section_id = f"{title.lower().replace(' ', '-')}-markdown-section"
|
|
150
|
+
headers.append({"index": i, "title": title, "id": section_id})
|
|
151
|
+
navigation.append({"id": section_id, "title": title})
|
|
152
|
+
|
|
153
|
+
# Add ids to h2 headers
|
|
154
|
+
new_lines = []
|
|
155
|
+
first_header_index = headers[0]["index"]
|
|
156
|
+
new_lines.extend(lines[:first_header_index])
|
|
157
|
+
for i, header in enumerate(headers):
|
|
158
|
+
new_lines.append(f'<div id="{header["id"]}" class="section">')
|
|
159
|
+
new_lines.append(lines[header["index"]])
|
|
160
|
+
if i < len(headers) - 1:
|
|
161
|
+
next_header_index = headers[i + 1]["index"]
|
|
162
|
+
new_lines.extend(lines[header["index"] + 1 : next_header_index])
|
|
163
|
+
new_lines.append("</div>")
|
|
164
|
+
else:
|
|
165
|
+
closing_found = False
|
|
166
|
+
for j in range(header["index"] + 1, len(lines)):
|
|
167
|
+
if lines[j].strip().startswith("</sly-iw-sidebar>"):
|
|
168
|
+
new_lines.append("</div>")
|
|
169
|
+
new_lines.extend(lines[j:])
|
|
170
|
+
closing_found = True
|
|
171
|
+
break
|
|
172
|
+
else:
|
|
173
|
+
new_lines.append(lines[j])
|
|
174
|
+
if not closing_found:
|
|
175
|
+
logger.warning(
|
|
176
|
+
f"</sly-iw-sidebar> closing tag not found after the last h2 header."
|
|
177
|
+
f" Check that all <h2> headers are presented within <sly-iw-sidebar>"
|
|
178
|
+
f" to generate sidebar correctly."
|
|
179
|
+
)
|
|
180
|
+
new_lines.append("</div>")
|
|
181
|
+
html = "\n".join(new_lines)
|
|
182
|
+
|
|
183
|
+
# Generate sidebar
|
|
184
|
+
sidebar_placeholder_pattern = r"^([ \t]*)<!--AUTOSIDEBAR_PLACEHOLDER-->$"
|
|
185
|
+
sidebar_match = re.search(sidebar_placeholder_pattern, html, re.MULTILINE)
|
|
186
|
+
if sidebar_match:
|
|
187
|
+
# base_indent = sidebar_match.group(1)
|
|
188
|
+
base_indent = " " * 4 * 3
|
|
189
|
+
sidebar_parts = []
|
|
190
|
+
for section in headers:
|
|
191
|
+
button_html = (
|
|
192
|
+
f"{base_indent}<div>\n"
|
|
193
|
+
f"{base_indent} <el-button type=\"text\" @click=\"data.scrollIntoView='{section['id']}'\"\n"
|
|
194
|
+
f"{base_indent} :style=\"{{fontWeight: data.scrollIntoView === '{section['id']}' ? 'bold' : 'normal'}}\">\n"
|
|
195
|
+
f"{base_indent} {section['title']}\n"
|
|
196
|
+
f"{base_indent} </el-button>\n"
|
|
197
|
+
f"{base_indent}</div>"
|
|
198
|
+
)
|
|
199
|
+
sidebar_parts.append(button_html)
|
|
200
|
+
sidebar_code = "\n".join(sidebar_parts)
|
|
201
|
+
html = re.sub(sidebar_placeholder_pattern, sidebar_code, html, flags=re.MULTILINE)
|
|
202
|
+
|
|
203
|
+
return html
|
|
204
|
+
|
|
205
|
+
def render_to_file(
|
|
206
|
+
self,
|
|
207
|
+
template_path: str,
|
|
208
|
+
context: dict,
|
|
209
|
+
output_path: str,
|
|
210
|
+
) -> None:
|
|
211
|
+
"""
|
|
212
|
+
Renders a template and saves the result to a file.
|
|
213
|
+
|
|
214
|
+
:param template_path: Path to the markdown template file relative to template dir.
|
|
215
|
+
:type template_path: str
|
|
216
|
+
:param context: Dictionary with data for template rendering.
|
|
217
|
+
:type context: Dict[str, Any]
|
|
218
|
+
:param output_path: Path to the file where the result will be saved.
|
|
219
|
+
:type output_path: str
|
|
220
|
+
|
|
221
|
+
:returns: None
|
|
222
|
+
"""
|
|
223
|
+
rendered_content = self.render(template_path, context)
|
|
224
|
+
path = Path(output_path)
|
|
225
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
226
|
+
with open(path, "w", encoding="utf-8") as f:
|
|
227
|
+
f.write(rendered_content)
|
|
228
|
+
|
|
229
|
+
def add_filter(self, filter_name: str, filter_function: callable) -> None:
|
|
230
|
+
"""
|
|
231
|
+
Adds a custom filter to the Jinja2 environment.
|
|
232
|
+
|
|
233
|
+
:param filter_name: Filter name.
|
|
234
|
+
:type filter_name: str
|
|
235
|
+
:param filter_function: Function that implements the filter.
|
|
236
|
+
:type filter_function: callable
|
|
237
|
+
|
|
238
|
+
:returns: None
|
|
239
|
+
"""
|
|
240
|
+
self.environment.filters[filter_name] = filter_function
|
|
241
|
+
|
|
242
|
+
def add_global(self, variable_name: str, variable_value: Any) -> None:
|
|
243
|
+
"""
|
|
244
|
+
Adds a global variable to the Jinja2 environment.
|
|
245
|
+
|
|
246
|
+
:param variable_name: Variable name.
|
|
247
|
+
:type variable_name: str
|
|
248
|
+
:param variable_value: Variable value.
|
|
249
|
+
:type variable_value: Any
|
|
250
|
+
|
|
251
|
+
:returns: None
|
|
252
|
+
"""
|
|
253
|
+
self.environment.globals[variable_name] = variable_value
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: supervisely
|
|
3
|
-
Version: 6.73.
|
|
3
|
+
Version: 6.73.391
|
|
4
4
|
Summary: Supervisely Python SDK.
|
|
5
5
|
Home-page: https://github.com/supervisely/supervisely
|
|
6
6
|
Author: Supervisely
|
|
@@ -136,6 +136,8 @@ Requires-Dist: plotly==5.22.0; extra == "training"
|
|
|
136
136
|
Requires-Dist: torch; extra == "training"
|
|
137
137
|
Requires-Dist: torchvision; extra == "training"
|
|
138
138
|
Requires-Dist: tensorboardX; extra == "training"
|
|
139
|
+
Requires-Dist: markdown; extra == "training"
|
|
140
|
+
Requires-Dist: pymdown-extensions; extra == "training"
|
|
139
141
|
|
|
140
142
|
<h1 align="center">
|
|
141
143
|
<a href="https://supervisely.com"><img alt="Supervisely" title="Supervisely" src="https://i.imgur.com/B276eMS.png"></a>
|
|
@@ -255,9 +255,9 @@ supervisely/app/widgets/empty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
|
|
|
255
255
|
supervisely/app/widgets/empty/empty.py,sha256=fCr8I7CQ2XLo59bl2txjDrblOGiu0TzUcM-Pq6s7gKY,1285
|
|
256
256
|
supervisely/app/widgets/empty/template.html,sha256=aDBKkin5aLuqByzNN517-rTYCGIg5SPKgnysYMPYjv8,40
|
|
257
257
|
supervisely/app/widgets/experiment_selector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
258
|
-
supervisely/app/widgets/experiment_selector/experiment_selector.py,sha256=
|
|
258
|
+
supervisely/app/widgets/experiment_selector/experiment_selector.py,sha256=eJsbQzZSgl7G50pzbjB6tHsyrXEloprQgxyMnd7agIE,20559
|
|
259
259
|
supervisely/app/widgets/experiment_selector/style.css,sha256=-zPPXHnJvatYj_xVVAb7T8uoSsUTyhm5xCKWkkFQ78E,548
|
|
260
|
-
supervisely/app/widgets/experiment_selector/template.html,sha256=
|
|
260
|
+
supervisely/app/widgets/experiment_selector/template.html,sha256=bYNGb77q8WwRFtkhJM9_I0UzPW0kTTIOvZZmzuHLXmY,2753
|
|
261
261
|
supervisely/app/widgets/fast_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
262
262
|
supervisely/app/widgets/fast_table/fast_table.py,sha256=7VLdcf0kySg7_cQwBCOjSFEPUBuru_0_zQ6oAbZ7fSE,36024
|
|
263
263
|
supervisely/app/widgets/fast_table/script.js,sha256=3XnKAYsGyVIvOGyxxW6djCr2-7tYYK84oWKUZ999W2I,8878
|
|
@@ -424,7 +424,7 @@ supervisely/app/widgets/reloadable_area/reloadable_area.py,sha256=eFxE3FRNR1hX5J
|
|
|
424
424
|
supervisely/app/widgets/reloadable_area/script.js,sha256=bNVyJZjsRJ6IDhF46WOCZtNAUe36BsIR-o8JdvxfrAw,1050
|
|
425
425
|
supervisely/app/widgets/reloadable_area/template.html,sha256=paxfrLxppLATh4zCiJDDKJGruR5zBIYT-M-dwvINiFw,187
|
|
426
426
|
supervisely/app/widgets/report_thumbnail/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
427
|
-
supervisely/app/widgets/report_thumbnail/report_thumbnail.py,sha256=
|
|
427
|
+
supervisely/app/widgets/report_thumbnail/report_thumbnail.py,sha256=Nrtd4UhrBBpIfeEViZbDJpj4TCtqbGUegcLRgIukPtU,2783
|
|
428
428
|
supervisely/app/widgets/report_thumbnail/template.html,sha256=7dGngqwO_xxWZLOre0f6Vml3B_qXWu0l1P96L3opJ84,429
|
|
429
429
|
supervisely/app/widgets/run_app_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
430
430
|
supervisely/app/widgets/run_app_button/run_app_button.py,sha256=cr07jabP1vF-rvH0_swVTuzpWXsvI9tHy_oQbJrHxSU,11044
|
|
@@ -682,7 +682,7 @@ supervisely/convert/volume/sly/sly_volume_converter.py,sha256=XmSuxnRqxchG87b244
|
|
|
682
682
|
supervisely/convert/volume/sly/sly_volume_helper.py,sha256=gUY0GW3zDMlO2y-zQQG36uoXMrKkKz4-ErM1CDxFCxE,5620
|
|
683
683
|
supervisely/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
684
684
|
supervisely/decorators/inference.py,sha256=p0fBSg3ek2tt29h7OxQwhtvLcBhKe9kSgA8G5zZHXjE,13777
|
|
685
|
-
supervisely/decorators/profile.py,sha256=
|
|
685
|
+
supervisely/decorators/profile.py,sha256=mOnIIXWmk4Wf99-vQLLEopYcujIPwTao4iExepmijSE,1954
|
|
686
686
|
supervisely/delme_fastapi_helpers/__init__.py,sha256=k5IkHj5IQ8BZ-sVy0rydgxJO75RNgopcZHf2K_3o0Os,237
|
|
687
687
|
supervisely/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
688
688
|
supervisely/export/pascal_voc.py,sha256=McFae1V6374_SV-mhd17AeZMkrE9JQjOTTyYGNcxD8Q,3104
|
|
@@ -747,7 +747,7 @@ supervisely/metric/pixel_accuracy.py,sha256=qjtxInOTkGDwPeLUnjBdzOrVRT3V6kGGOWjB
|
|
|
747
747
|
supervisely/metric/precision_recall_metric.py,sha256=4AQCkcB84mpYQS94yJ-wkG1LBuXlQf3X_tI9f67vtR8,3426
|
|
748
748
|
supervisely/metric/projects_applier.py,sha256=ORtgLQHYtNi4KYsSGaGPPWiZPexTJF9IWqX_RuLRxPk,3415
|
|
749
749
|
supervisely/nn/__init__.py,sha256=ZGCDjx_cGIW8CxIWNCzVDRVfAzt7QzlkcvKvLBE8wMc,669
|
|
750
|
-
supervisely/nn/experiments.py,sha256=
|
|
750
|
+
supervisely/nn/experiments.py,sha256=eBIggokbD59hz3BAdhSelgXirr9PetWG7tQ6ungP1qU,9980
|
|
751
751
|
supervisely/nn/prediction_dto.py,sha256=oi146DJpUUBDbR-b-vYkL5WAhCZQYOGomqBDEQGbPdY,2700
|
|
752
752
|
supervisely/nn/task_type.py,sha256=UJvSJ4L3I08j_e6sU6Ptu7kS5p1H09rfhfoDUSZ2iys,522
|
|
753
753
|
supervisely/nn/utils.py,sha256=WoEidpLo5__R6eXsvEFH7VRxb4MtXCr9H-kchg25FDY,2965
|
|
@@ -858,7 +858,7 @@ supervisely/nn/benchmark/utils/detection/calculate_metrics.py,sha256=plgBNJXRZ2M
|
|
|
858
858
|
supervisely/nn/benchmark/utils/detection/coco_eval.py,sha256=9Pz0_zUzg8qCOWyE24wzhRoDLO5z9qPuWoqc8Pj29do,4135
|
|
859
859
|
supervisely/nn/benchmark/utils/detection/metrics.py,sha256=oyictdJ7rRDUkaVvHoxntywW5zZweS8pIJ1bN6JgXtE,2420
|
|
860
860
|
supervisely/nn/benchmark/utils/detection/sly2coco.py,sha256=0O2LSCU5zIX34mD4hZIv8O3-j6LwnB0DqhiVPAiosO8,6883
|
|
861
|
-
supervisely/nn/benchmark/utils/detection/utlis.py,sha256=
|
|
861
|
+
supervisely/nn/benchmark/utils/detection/utlis.py,sha256=NaH5VHF2I3KQLOu2UlB7-fSA6zhY8xbzROgLe7VqpV4,1131
|
|
862
862
|
supervisely/nn/benchmark/utils/semantic_segmentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
863
863
|
supervisely/nn/benchmark/utils/semantic_segmentation/calculate_metrics.py,sha256=4ifC5r_Q880yIr8gWnjEzwKbS0vizMWqSF4XeyaMvh0,924
|
|
864
864
|
supervisely/nn/benchmark/utils/semantic_segmentation/evaluator.py,sha256=iPHRo1LLgOzB1S7xD-6ThtoPTQ0tL5Ipu88sZhFMHyM,29261
|
|
@@ -893,7 +893,7 @@ supervisely/nn/benchmark/visualization/widgets/table/__init__.py,sha256=47DEQpj8
|
|
|
893
893
|
supervisely/nn/benchmark/visualization/widgets/table/table.py,sha256=atmDnF1Af6qLQBUjLhK18RMDKAYlxnsuVHMSEa5a-e8,4319
|
|
894
894
|
supervisely/nn/inference/__init__.py,sha256=QFukX2ip-U7263aEPCF_UCFwj6EujbMnsgrXp5Bbt8I,1623
|
|
895
895
|
supervisely/nn/inference/cache.py,sha256=yqVPIWzhIDRHwrCIpdm-gPxUM2rH8BD98omF659RElw,34938
|
|
896
|
-
supervisely/nn/inference/inference.py,sha256=
|
|
896
|
+
supervisely/nn/inference/inference.py,sha256=angMpnfUyPa5OQxkUn9GIliavxygyz1BytNUIks3T8M,183369
|
|
897
897
|
supervisely/nn/inference/inference_request.py,sha256=y6yw0vbaRRcEBS27nq3y0sL6Gmq2qLA_Bm0GrnJGegE,14267
|
|
898
898
|
supervisely/nn/inference/session.py,sha256=dIg2F-OBl68pUzcmtmcI0YQIp1WWNnrJTVMjwFN91Q4,35824
|
|
899
899
|
supervisely/nn/inference/uploader.py,sha256=21a9coOimCHhEqAbV-llZWcp12847DEMoQp3N16bpK0,5425
|
|
@@ -901,7 +901,7 @@ supervisely/nn/inference/video_inference.py,sha256=8Bshjr6rDyLay5Za8IB8Dr6FURMO2
|
|
|
901
901
|
supervisely/nn/inference/gui/__init__.py,sha256=wCxd-lF5Zhcwsis-wScDA8n1Gk_1O00PKgDviUZ3F1U,221
|
|
902
902
|
supervisely/nn/inference/gui/gui.py,sha256=0OjGcU0KGZgWfLVQkBbljNy-QV22pdZ0bbpPvao5fx0,20143
|
|
903
903
|
supervisely/nn/inference/gui/serving_gui.py,sha256=JCIVp3B_tX0VKMMBJ-TdRzzAMnAL-sdqHnb1vd28r50,8596
|
|
904
|
-
supervisely/nn/inference/gui/serving_gui_template.py,sha256=
|
|
904
|
+
supervisely/nn/inference/gui/serving_gui_template.py,sha256=V2FJYLyWT9a315npIeVkEEpB8Xc-AOL7TgG0wgM08sc,9777
|
|
905
905
|
supervisely/nn/inference/instance_segmentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
906
906
|
supervisely/nn/inference/instance_segmentation/instance_segmentation.py,sha256=TWasw61P4CDiWi2zWuIYJLZ9woLA5IxWtUNRn9u6qEU,2211
|
|
907
907
|
supervisely/nn/inference/instance_segmentation/dashboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -999,18 +999,18 @@ supervisely/nn/tracking/__init__.py,sha256=Ld1ed7ZZQZPkhX-5Xr-UbHZx5zLCm2-tInHnP
|
|
|
999
999
|
supervisely/nn/tracking/boxmot.py,sha256=H9cQjYGL9nX_TLrfKDChhljTIiE9lffcgbwWCf_4PJU,4277
|
|
1000
1000
|
supervisely/nn/tracking/tracking.py,sha256=WNrNm02B1pspA3d_AmzSJ-54RZTqWV2NZiC7FHe88bo,857
|
|
1001
1001
|
supervisely/nn/training/__init__.py,sha256=gY4PCykJ-42MWKsqb9kl-skemKa8yB6t_fb5kzqR66U,111
|
|
1002
|
-
supervisely/nn/training/train_app.py,sha256=
|
|
1002
|
+
supervisely/nn/training/train_app.py,sha256=0tE1noQGvfV7oWFPadL1D87wjuHEWnBtOax4Z7p5RUI,123660
|
|
1003
1003
|
supervisely/nn/training/gui/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
|
|
1004
|
-
supervisely/nn/training/gui/classes_selector.py,sha256=
|
|
1005
|
-
supervisely/nn/training/gui/gui.py,sha256=
|
|
1006
|
-
supervisely/nn/training/gui/hyperparameters_selector.py,sha256=
|
|
1004
|
+
supervisely/nn/training/gui/classes_selector.py,sha256=tqmVwUfC2u5K53mZmvDvNOhu9Mw5mddjpB2kxRXXUO8,12453
|
|
1005
|
+
supervisely/nn/training/gui/gui.py,sha256=0QTIz9XXwDHyPQoDKciWGOvAZPQaJA6hbF_UrWlW4So,49130
|
|
1006
|
+
supervisely/nn/training/gui/hyperparameters_selector.py,sha256=bcCxJ9-8NjZa0U9XWHysrMzr8dxqXiqUgX5lbDiAm5A,7767
|
|
1007
1007
|
supervisely/nn/training/gui/input_selector.py,sha256=rmirJzpdxuYONI6y5_cvMdGWBJ--T20YTsISghATHu4,2510
|
|
1008
|
-
supervisely/nn/training/gui/model_selector.py,sha256=
|
|
1009
|
-
supervisely/nn/training/gui/tags_selector.py,sha256=
|
|
1010
|
-
supervisely/nn/training/gui/train_val_splits_selector.py,sha256=
|
|
1011
|
-
supervisely/nn/training/gui/training_artifacts.py,sha256=
|
|
1008
|
+
supervisely/nn/training/gui/model_selector.py,sha256=Fvsja7n75PzqxDkDhPEkCltYsbAPPRpUxgWgIZCseks,7439
|
|
1009
|
+
supervisely/nn/training/gui/tags_selector.py,sha256=0yg2OGPqiHUBp3iML2vrzTOVeSKtRtR9JoMy4Snx41U,3755
|
|
1010
|
+
supervisely/nn/training/gui/train_val_splits_selector.py,sha256=5-Ra-qFG7ki2yFBUa7mST_BbbE_RzPgA3ubP9wTC8oY,16498
|
|
1011
|
+
supervisely/nn/training/gui/training_artifacts.py,sha256=8ReWCo46fEOPpjVf_jPWczZwaWCDH2a6VQGC7ic-BLA,10871
|
|
1012
1012
|
supervisely/nn/training/gui/training_logs.py,sha256=GgEQMj9p98Z3p2b_-3BkHOhY7WQYELxctsRKmkbg3JY,4966
|
|
1013
|
-
supervisely/nn/training/gui/training_process.py,sha256=
|
|
1013
|
+
supervisely/nn/training/gui/training_process.py,sha256=XJ3ELyys_rBFmLQnI9qe3QhmfZ6U0CrK1FbI6d-Fbns,3664
|
|
1014
1014
|
supervisely/nn/training/gui/utils.py,sha256=cEOsYItxgGTGKxFAvn7zQcTpwHgcGRO_UNGBn8idMUI,4983
|
|
1015
1015
|
supervisely/nn/training/loggers/__init__.py,sha256=DOqR-4NJv25C4Y1HCWggvGNM5mgo1CbwQOdvROOL-60,777
|
|
1016
1016
|
supervisely/nn/training/loggers/base_train_logger.py,sha256=Gf_TKwSfQdSVG6P3wAeWf5t2_EJWJqOPqt_TsJ5jpBY,1914
|
|
@@ -1060,6 +1060,17 @@ supervisely/task/progress.py,sha256=TH8au8yc1PkCw-YF40sjOmXZhlEWMkk4FrPKJO_W8O4,
|
|
|
1060
1060
|
supervisely/task/task_logger.py,sha256=_uDfqEtiwetga6aDAqcTKCKqHjZJSuUXTsHSQFNxAvI,3531
|
|
1061
1061
|
supervisely/team_files/__init__.py,sha256=mtz0Z7eFvsykOcEnSVZ-5bNHsq0_YsNBjZK3qngO-DY,149
|
|
1062
1062
|
supervisely/team_files/team_files_path.py,sha256=dSqz-bycImQYwAs62TD1zCD1NQdysqCQIBhEVh9EDjw,177
|
|
1063
|
+
supervisely/template/__init__.py,sha256=AjUhLEuoLnnj4i7YxevFELb2bScsQ0EaJAOtYxaLP2Q,152
|
|
1064
|
+
supervisely/template/base_generator.py,sha256=3nesbfRpueyRYljQSTnkMjeC8ERTOfjI88INITItXvA,3341
|
|
1065
|
+
supervisely/template/extensions.py,sha256=kTYxu_LrvFyUN3HByCebGq8ra7zUygcEyw4qTUHq3M4,5255
|
|
1066
|
+
supervisely/template/template_renderer.py,sha256=SzGxRdbP59uxqcZT8kZbaHN2epK8Vjfh-0jKBpkdCBY,9709
|
|
1067
|
+
supervisely/template/experiment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1068
|
+
supervisely/template/experiment/experiment.html.jinja,sha256=ALz53bAA-nwfCBoKCHM4O4xooZGEacEOHVC92bw_F-o,17598
|
|
1069
|
+
supervisely/template/experiment/experiment_generator.py,sha256=PNW8lqEOH4YOsA9MdkppbJxNvuzEdtpXx9kvfbNoCbM,37389
|
|
1070
|
+
supervisely/template/experiment/header.html.jinja,sha256=vm0XfXoMBU6nvHPrhX9k4OkkKkmu69OJFGWYvsRTrcs,12801
|
|
1071
|
+
supervisely/template/experiment/sidebar.html.jinja,sha256=4IxuJzcU1OT93mXMixE7EAMYfcn_lOVfCjS3VkEieSk,9323
|
|
1072
|
+
supervisely/template/experiment/sly-style.css,sha256=cl_wJfM-KOL0DumW5vdyLavF7mc6_hb9kh15qhD7MqM,8344
|
|
1073
|
+
supervisely/template/experiment/template.html.jinja,sha256=Sb20RybxMQyi9CjoqMXiGxQsnlyWTWK-TePdvfUe5XU,506
|
|
1063
1074
|
supervisely/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1064
1075
|
supervisely/user/user.py,sha256=4GSVIupPAxWjIxZmUtH3Dtms_vGV82-49kM_aaR2gBI,319
|
|
1065
1076
|
supervisely/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -1103,9 +1114,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
1103
1114
|
supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
|
|
1104
1115
|
supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
|
|
1105
1116
|
supervisely_lib/__init__.py,sha256=7-3QnN8Zf0wj8NCr2oJmqoQWMKKPKTECvjH9pd2S5vY,159
|
|
1106
|
-
supervisely-6.73.
|
|
1107
|
-
supervisely-6.73.
|
|
1108
|
-
supervisely-6.73.
|
|
1109
|
-
supervisely-6.73.
|
|
1110
|
-
supervisely-6.73.
|
|
1111
|
-
supervisely-6.73.
|
|
1117
|
+
supervisely-6.73.391.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
1118
|
+
supervisely-6.73.391.dist-info/METADATA,sha256=zN0oMPyOmo2cnOXswgAIal6RvpY8q17ySOVBovFz154,35254
|
|
1119
|
+
supervisely-6.73.391.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
1120
|
+
supervisely-6.73.391.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
|
|
1121
|
+
supervisely-6.73.391.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
|
|
1122
|
+
supervisely-6.73.391.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|