supervisely 6.73.452__tar.gz → 6.73.453__tar.gz
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-6.73.452/supervisely.egg-info → supervisely-6.73.453}/PKG-INFO +1 -1
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/content.py +14 -6
- supervisely-6.73.453/supervisely/app/fastapi/multi_user.py +88 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/subapp.py +71 -42
- supervisely-6.73.453/supervisely/app/fastapi/websocket.py +107 -0
- supervisely-6.73.453/supervisely/app/singleton.py +32 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/env.py +76 -1
- {supervisely-6.73.452 → supervisely-6.73.453/supervisely.egg-info}/PKG-INFO +1 -1
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely.egg-info/SOURCES.txt +1 -0
- supervisely-6.73.452/supervisely/app/fastapi/websocket.py +0 -39
- supervisely-6.73.452/supervisely/app/singleton.py +0 -11
- {supervisely-6.73.452 → supervisely-6.73.453}/LICENSE +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/README.md +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/pyproject.toml +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/setup.cfg +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/setup.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/README.md +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/_utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/annotation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/annotation_transforms.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/json_geometries_map.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/label.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/obj_class.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/obj_class_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/obj_class_mapper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/renamer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/tag.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/tag_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/tag_meta.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/tag_meta_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/tag_meta_mapper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/advanced_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/agent_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/annotation_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/app_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/dataset_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/entities_collection_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/entity_annotation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/entity_annotation/entity_annotation_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/entity_annotation/figure_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/entity_annotation/object_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/entity_annotation/tag_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/file_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/github_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/image_annotation_tool_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/image_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/import_storage_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/issues_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/labeling_job_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/labeling_queue_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/module_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/nn/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/nn/deploy_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/nn/ecosystem_models_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/nn/neural_network_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/object_class_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/plugin_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_annotation_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_episode_annotation_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_episode_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_episode_object_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_episode_tag_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_figure_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_object_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/pointcloud/pointcloud_tag_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/project_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/project_class_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/remote_storage_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/report_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/role_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/storage_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/task_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/team_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/user_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video/video_annotation_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video/video_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video/video_figure_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video/video_frame_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video/video_object_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video/video_tag_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/video_annotation_tool_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/volume/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/volume/volume_annotation_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/volume/volume_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/volume/volume_figure_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/volume/volume_object_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/volume/volume_tag_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/api/workspace_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/development/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/development/development.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/development/sly-net.sh +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/exceptions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/export_template.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/custom_static_files.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/dialog_window.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/index.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/no_html_main.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/offline.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/request.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/templating.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/fastapi/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/import_template.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/jinja2.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/app_config.md +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/app_service.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/sly-icon-example.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/compare_gallery.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/empty_grid_gallery.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/grid_gallery.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/predictions_dynamics_gallery.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/progress_bar.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/v1/widgets/single_image_gallery.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/agent_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/agent_selector/agent_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/agent_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/apexchart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/apexchart/apexchart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/apexchart/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/augmentations/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/augmentations/augmentations.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/augmentations/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/badge/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/badge/badge.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/badge/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/binded_input_number/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/binded_input_number/binded_input_number.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/binded_input_number/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/bokeh/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/bokeh/bokeh.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/bokeh/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/button/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/button/button.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/button/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/button/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/card/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/card/card.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/card/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/card/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/carousel/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/carousel/carousel.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/carousel/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/cascader/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/cascader/cascader.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/cascader/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/checkbox/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/checkbox/checkbox.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/checkbox/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/checkbox_field/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/checkbox_field/checkbox_field.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/checkbox_field/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/circle_progress/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/circle_progress/circle_progress.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/circle_progress/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/class_balance/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/class_balance/class_balance.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/class_balance/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_color_mapping/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_color_mapping/classes_color_mapping.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_color_mapping/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_color_mapping/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_preview/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_preview/classes_list_preview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_preview/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_preview/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_selector/classes_list_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_selector/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_list_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_mapping/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_mapping/classes_mapping.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_mapping/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_mapping_preview/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_mapping_preview/classes_mapping_preview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_mapping_preview/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_mapping_preview/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_table/classes_table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_table/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classes_table/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classic_table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classic_table/classic_table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/classic_table/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/collapse/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/collapse/collapse.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/collapse/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/color_picker/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/color_picker/color_picker.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/color_picker/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/color_picker/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/compare_annotations/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/compare_annotations/compare_annotations.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/confusion_matrix/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/confusion_matrix/confusion_matrix.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/confusion_matrix/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/container/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/container/container.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/container/old_container.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/container/old_template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/container/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/container/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/copy_to_clipboard/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/copy_to_clipboard/copy_to_clipboard.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/copy_to_clipboard/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/custom_models_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/custom_models_selector/custom_models_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/custom_models_selector/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/custom_models_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dataset_thumbnail/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dataset_thumbnail/dataset_thumbnail.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dataset_thumbnail/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/date_picker/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/date_picker/date_picker.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/date_picker/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/datetime_picker/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/datetime_picker/datetime_picker.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/datetime_picker/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/deploy_model/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/deploy_model/deploy_model.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/destination_project/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/destination_project/destination_project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/destination_project/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dialog/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dialog/dialog.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dialog/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/done_label/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/done_label/done_label.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/done_label/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/draggable/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/draggable/draggable.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/draggable/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/draggable/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dropdown/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dropdown/dropdown.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dropdown/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dropdown_checkbox_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dropdown_checkbox_selector/dropdown_checkbox_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/dropdown_checkbox_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/ecosystem_model_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/ecosystem_model_selector/ecosystem_model_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/editor/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/editor/editor.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/editor/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_button/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_button/element_button.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_button/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_button/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_tag/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_tag/element_tag.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_tag/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_tags_list/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_tags_list/element_tags_list.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/element_tags_list/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/empty/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/empty/empty.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/empty/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/experiment_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/experiment_selector/experiment_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/fast_table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/fast_table/fast_table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/fast_table/script.js +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/fast_table/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/fast_table/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/field/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/field/field.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/field/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/field/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_storage_upload/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_storage_upload/file_storage_upload.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_storage_upload/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_thumbnail/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_thumbnail/file_thumbnail.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_thumbnail/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_viewer/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_viewer/file_viewer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/file_viewer/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/flexbox/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/flexbox/flexbox.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/flexbox/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/folder_thumbnail/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/folder_thumbnail/folder_thumbnail.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/folder_thumbnail/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid/grid.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_chart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_chart/grid_chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_chart/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_gallery/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_gallery/grid_gallery.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_gallery/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_gallery/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_gallery_v2/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_gallery_v2/grid_gallery_v2.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_gallery_v2/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_plot/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_plot/grid_plot.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/grid_plot/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/heatmap_chart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/heatmap_chart/heatmap_chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/icons/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/icons/icons.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/icons/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/identity/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/identity/identity.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/identity/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/iframe/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/iframe/iframe.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/iframe/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image/image.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_annotation_preview/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_annotation_preview/image_annotation_preview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_annotation_preview/script.js +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_annotation_preview/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_annotation_preview/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_pair_sequence/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_pair_sequence/image_pair_sequence.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_pair_sequence/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_region_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_region_selector/image_region_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_region_selector/script.js +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_region_selector/styles.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_region_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_slider/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_slider/image_slider.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/image_slider/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input/input.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_number/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_number/input_number.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_number/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_tag/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_tag/input_tag.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_tag/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_tag_list/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_tag_list/input_tag_list.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/input_tag_list/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/labeled_image/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/labeled_image/labeled_image.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/line_chart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/line_chart/line_chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/line_plot/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/line_plot/line_plot.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/line_plot/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/markdown/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/markdown/markdown.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/markdown/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/markdown/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/match_datasets/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/match_datasets/match_datasets.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/match_datasets/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/match_tags_or_classes/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/match_tags_or_classes/match_tags_or_classes.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/match_tags_or_classes/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/members_list_preview/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/members_list_preview/members_list_preview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/members_list_preview/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/members_list_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/members_list_selector/members_list_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/members_list_selector/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/members_list_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/menu/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/menu/menu.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/menu/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/model_info/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/model_info/model_info.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/model_info/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/nodes_flow/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/nodes_flow/nodes_flow.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/nodes_flow/option_components.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/nodes_flow/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/notification_box/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/notification_box/notification_box.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/notification_box/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/notification_box/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/object_class_view/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/object_class_view/object_class_view.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/object_class_view/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/object_class_view/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/object_classes_list/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/object_classes_list/object_classes_list.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/object_classes_list/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/one_of/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/one_of/one_of.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/one_of/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pagination/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pagination/pagination.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pagination/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pie_chart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pie_chart/pie_chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pretrained_models_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pretrained_models_selector/pretrained_models_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pretrained_models_selector/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/pretrained_models_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_selector/project_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_selector/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_thumbnail/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_thumbnail/project_thumbnail.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_thumbnail/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/project_thumbnail/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_group/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_group/radio_group.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_group/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_table/radio_table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_table/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_table/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_tabs/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_tabs/radio_tabs.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_tabs/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/radio_tabs/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/random_splits_table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/random_splits_table/random_splits_table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/random_splits_table/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/rate/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/rate/rate.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/rate/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/reloadable_area/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/reloadable_area/reloadable_area.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/reloadable_area/script.js +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/reloadable_area/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/report_thumbnail/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/report_thumbnail/report_thumbnail.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/report_thumbnail/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/run_app_button/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/run_app_button/run_app_button.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/run_app_button/script.js +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/run_app_button/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sampling/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sampling/sampling.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/scatter_chart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/scatter_chart/scatter_chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select/select.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_app_session/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_app_session/select_app_session.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_app_session/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_collection/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_collection/select_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_collection/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_cuda/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_cuda/select_cuda.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_cuda/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_dataset/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_dataset/select_dataset.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_dataset/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_dataset_tree/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_dataset_tree/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_item/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_item/select_item.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_item/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_project/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_project/select_project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_project/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_sly_utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_tag_meta/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_tag_meta/select_tag_meta.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_tag_meta/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_team/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_team/select_team.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_team/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_workspace/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_workspace/select_workspace.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/select_workspace/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sidebar/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sidebar/sidebar.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sidebar/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sidebar/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/slider/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/slider/slider.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/slider/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sly_tqdm/README.md +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sly_tqdm/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sly_tqdm/sly_tqdm.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sly_tqdm/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/sly_tqdm/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/stepper/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/stepper/stepper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/stepper/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/switch/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/switch/switch.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/switch/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/table/table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/table/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tabs/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tabs/tabs.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tabs/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tabs_dynamic/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tabs_dynamic/tabs_dynamic.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tabs_dynamic/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tag_meta_view/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tag_meta_view/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tag_meta_view/tag_meta_view.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tag_meta_view/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tag_metas_list/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tag_metas_list/tag_metas_list.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tag_metas_list/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_list_preview/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_list_preview/tags_list_preview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_list_preview/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_list_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_list_selector/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_list_selector/tags_list_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_list_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_table/tags_table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tags_table/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/task_logs/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/task_logs/task_logs.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/task_logs/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/team_files_selector/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/team_files_selector/team_files_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/team_files_selector/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/text/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/text/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/text/text.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/textarea/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/textarea/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/textarea/textarea.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/time_picker/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/time_picker/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/time_picker/time_picker.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/timeline/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/timeline/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/timeline/timeline.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tooltip/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tooltip/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tooltip/tooltip.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/train_val_splits/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/train_val_splits/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/train_val_splits/train_val_splits.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/transfer/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/transfer/style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/transfer/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/transfer/transfer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tree_select/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tree_select/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/tree_select/tree_select.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/treemap_chart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/treemap_chart/treemap_chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video/video.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video_player/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video_player/script.js +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video_player/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video_player/video_player.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video_thumbnail/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video_thumbnail/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/video_thumbnail/video_thumbnail.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets/widget.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/app/widgets_context.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/aug/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/aug/aug.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/aug/imgaug_utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/cli.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/project/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/project/project_download.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/project/project_get.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/project/project_upload.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/release/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/release/release.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/release/run.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/task/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/task/task_set.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/teamfiles/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/teamfiles/teamfiles_download.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/teamfiles/teamfiles_remove.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/cli/teamfiles/teamfiles_upload.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/collection/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/collection/key_indexed_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/collection/str_enum.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/base_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/cityscapes/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/cityscapes/cityscapes_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/cityscapes/cityscapes_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/coco/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/coco/coco_anntotation_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/coco/coco_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/coco/coco_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/csv/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/csv/csv_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/csv/csv_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/high_color/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/high_color/high_color_depth.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/high_color/high_color_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/image_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/image_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/label_me/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/label_me/label_me_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/label_me/label_me_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/label_studio/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/label_studio/label_studio_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/label_studio/label_studio_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/masks/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/masks/image_with_masks_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/masks/images_with_masks_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/medical2d/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/medical2d/medical2d_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/medical2d/medical2d_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/multi_view/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/multi_view/multi_view.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/multispectral/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/multispectral/multispectral_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/pascal_voc/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/pascal_voc/pascal_voc_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/pascal_voc/pascal_voc_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/pdf/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/pdf/pdf_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/pdf/pdf_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/sly/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/sly/fast_sly_image_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/sly/sly_image_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/sly/sly_image_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/yolo/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/yolo/yolo_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/image/yolo/yolo_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/bag/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/bag/bag_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/bag/bag_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/kitti_3d/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/kitti_3d/kitti_3d_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/kitti_3d/kitti_3d_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/las/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/las/las_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/las/las_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/lyft/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/lyft/lyft_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/lyft/lyft_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/nuscenes_conv/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/nuscenes_conv/nuscenes_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/ply/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/ply/ply_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/ply/ply_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/pointcloud_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/sly/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/sly/sly_pointcloud_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud/sly/sly_pointcloud_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/bag/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/bag/bag_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/kitti_360/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/kitti_360/kitti_360_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/kitti_360/kitti_360_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/lyft/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/lyft/lyft_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/nuscenes_conv/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/nuscenes_conv/nuscenes_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/pointcloud_episodes_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/sly/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/pointcloud_episodes/sly/sly_pointcloud_episodes_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/davis/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/davis/davis_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/mot/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/mot/mot_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/sly/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/sly/sly_video_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/sly/sly_video_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/video/video_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/dicom/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/dicom/dicom_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/dicom/dicom_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/nii/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/nii/nii_planes_volume_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/nii/nii_volume_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/nii/nii_volume_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/sly/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/sly/sly_volume_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/sly/sly_volume_helper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/convert/volume/volume_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/decorators/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/decorators/inference.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/decorators/profile.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/delme_fastapi_helpers/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/export/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/export/pascal_voc.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/function_wrapper.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/alpha_mask.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/any_geometry.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/bitmap.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/bitmap_base.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/closed_surface_mesh.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/conversions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/cuboid.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/cuboid_2d.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/cuboid_3d.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/geometry.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/graph.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/helpers.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/image_rotator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/main_tests.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/mask_3d.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/multichannel_bitmap.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/point.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/point_3d.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/point_location.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/pointcloud.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/polygon.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/polyline.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/polyline_3d.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/rectangle.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/sliding_windows.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/sliding_windows_fuzzy.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/validation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/geometry/vector_geometry.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/imaging/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/imaging/_video.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/imaging/color.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/imaging/colors.json.gz +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/imaging/font.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/imaging/image.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/docker_utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/exception_handlers.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/fs.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/fs_cache.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/github_utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/json.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/multipart_stream_decoder.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/io/network_exceptions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/labeling_jobs/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/labeling_jobs/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/labeling_jobs/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/classification_metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/common.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/confusion_matrix_metric.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/iou_metric.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/map_metric.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/matching.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/metric_base.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/metrics_tests.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/pixel_accuracy.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/precision_recall_metric.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/metric/projects_applier.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/artifacts.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/detectron2.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/hrda.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/mmclassification.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/mmdetection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/mmsegmentation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/ritm.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/rtdetr.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/unet.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/yolov5.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/artifacts/yolov8.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/base_benchmark.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/base_evaluator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/base_visualizer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/base_visualizer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/text_templates.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/avg_precision_by_class.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/calibration_score.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/explore_predictions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/localization_accuracy.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/outcome_counts.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/overview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/pr_curve.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/precision_recal_f1.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/vis_metrics/speedtest.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/detection_visualization/visualizer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/model_comparison.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/text_templates.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/classwise_error_analysis.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/explore_predictions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/frequently_confused.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/iou_eou.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/overview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/renormalized_error_ou.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/vis_metrics/speedtest.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/comparison/semantic_segmentation/visualizer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/cv_tasks.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/instance_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/instance_segmentation/benchmark.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/instance_segmentation/evaluation_params.yaml +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/instance_segmentation/evaluator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/instance_segmentation/text_templates.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/instance_segmentation/visualizer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/base_vis_metric.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/benchmark.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/evaluation_params.yaml +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/evaluator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/metric_provider.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/text_templates.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/confidence_distribution.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/confidence_score.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/confusion_matrix.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/explore_predictions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/f1_score_at_different_iou.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/frequently_confused.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/iou_distribution.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/key_metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/model_predictions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/outcome_counts.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/outcome_counts_per_class.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/overview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/pr_curve.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/pr_curve_by_class.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/precision.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/precision_avg_per_class.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/recall.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/recall_vs_precision.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/reliability_diagram.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/vis_metrics/speedtest.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/object_detection/visualizer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/base_vis_metric.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/benchmark.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/evaluation_params.yaml +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/evaluator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/metric_provider.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/text_templates.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/acknowledgement.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/classwise_error_analysis.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/confusion_matrix.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/explore_predictions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/frequently_confused.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/iou_eou.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/key_metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/model_predictions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/overview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/renormalized_error_ou.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/speedtest.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/vis_metrics/vis_texts.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/semantic_segmentation/visualizer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/detection/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/detection/calculate_metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/detection/coco_eval.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/detection/metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/detection/sly2coco.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/detection/utlis.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/semantic_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/semantic_segmentation/calculate_metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/semantic_segmentation/evaluator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/semantic_segmentation/loader.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/utils/semantic_segmentation/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/evaluation_result.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/renderer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/report_template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/vis_click_data.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/chart/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/chart/chart.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/chart/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/collapse/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/collapse/collapse.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/container/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/container/container.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/gallery/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/gallery/gallery.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/gallery/template.html +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/markdown/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/markdown/markdown.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/notification/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/notification/notification.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/radio_group/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/radio_group/radio_group.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/sidebar/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/sidebar/sidebar.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/table/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/table/table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/benchmark/visualization/widgets/widget.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/experiments.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/cache.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/gui/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/gui/gui.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/gui/serving_gui.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/gui/serving_gui_template.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/inference.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/inference_request.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/dashboard/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/dashboard/classes_ui.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/dashboard/deploy_ui.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/dashboard/main_ui.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/dashboard/preview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/dashboard/preview_image.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/instance_segmentation/instance_segmentation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/interactive_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/interactive_segmentation/functional.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/interactive_segmentation/interactive_segmentation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/object_detection/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/object_detection/object_detection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/object_detection_3d/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/object_detection_3d/object_detection_3d.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/pose_estimation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/pose_estimation/pose_estimation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/classes_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/gui.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/input_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/model_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/output_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/preview.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/settings_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/tags_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/gui/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/predict_app/predict_app.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/prompt_based_object_detection/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/prompt_based_object_detection/propmt_based_object_detection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/promptable_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/promptable_segmentation/promptable_segmentation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/salient_object_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/salient_object_segmentation/salient_object_segmentation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/semantic_segmentation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/semantic_segmentation/semantic_segmentation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/session.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/base_tracking.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/bbox_tracking.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/functional.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/mask_tracking.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/object_tracking_3d.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/point_tracking.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/tracker3d_interface.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/tracking/tracker_interface.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/uploader.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/inference/video_inference.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/config.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/dataset.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/class_indexing.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/deploy.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/inference_batch.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/inference_batch_multiprocess.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/inference_modes.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/inference_single_image.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/legacy/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/legacy/inference_config.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/pytorch/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/pytorch/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/pytorch/inference_applier.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/pytorch/trainer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/hosted/trainer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/inference/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/inference/rest_client.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/inference/rest_constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/inference/rest_server.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/pytorch/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/pytorch/cuda.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/pytorch/dataset.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/pytorch/inference.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/pytorch/metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/pytorch/weights.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/raw_to_labels.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/training/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/legacy/training/eval_planner.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/model/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/model/model_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/model/prediction.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/model/prediction_session.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/prediction_dto.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/task_type.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/base_tracker.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/botsort_config.yaml +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/osnet_reid/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/osnet_reid/osnet.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/osnet_reid/osnet_reid_interface.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/tracker/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/tracker/basetrack.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/tracker/gmc.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/tracker/kalman_filter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/tracker/matching.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort/tracker/mc_bot_sort.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/botsort_tracker.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/calculate_metrics.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/tracker/visualize.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/classes_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/gui.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/hyperparameters_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/input_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/model_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/tags_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/train_val_splits_selector.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/training_artifacts.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/training_logs.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/training_process.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/gui/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/loggers/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/loggers/base_train_logger.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/loggers/tensorboard_logger.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/training/train_app.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/nn/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/output/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud/pointcloud.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_annotation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_episode_annotation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_episode_frame.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_episode_frame_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_episode_object.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_episode_object_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_episode_tag.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_episode_tag_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_figure.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_object.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_object_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_tag.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_annotation/pointcloud_tag_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_episodes/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pointcloud_episodes/pointcloud_episodes.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/data_version.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/download.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/pointcloud_episode_project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/pointcloud_project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/project_meta.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/project_settings.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/project_type.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/readme_template.md +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/upload.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/video_project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/project/volume_project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pyscripts_utils/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/pyscripts_utils/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/report/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/report/table.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/script/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/script/utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/sly_logger.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/task/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/task/paths.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/task/progress.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/task/task_logger.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/team_files/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/team_files/team_files_path.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/base_generator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/experiment/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/experiment/experiment.html.jinja +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/experiment/experiment_generator.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/experiment/header.html.jinja +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/experiment/sidebar.html.jinja +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/experiment/sly-style.css +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/experiment/template.html.jinja +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/extensions.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/template/template_renderer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/tiny_timer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/user/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/user/user.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/versions.json +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video/import_utils.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video/sampling.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video/video.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/frame.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/frame_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/key_id_map.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/video_annotation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/video_figure.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/video_object.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/video_object_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/video_tag.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/video_annotation/video_tag_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume/nrrd_encoder.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume/nrrd_loader.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume/stl_converter.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume/volume.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/constants.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/plane.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/slice.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/volume_annotation.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/volume_figure.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/volume_object.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/volume_object_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/volume_tag.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/volume_annotation/volume_tag_collection.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_api/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_api/agent_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_api/agent_rpc.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_api/chunking.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_api/interfaces.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_api/retriers.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_api/rpc_servicer.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_proto/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_proto/worker_api_pb2.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely/worker_proto/worker_api_pb2_grpc.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely.egg-info/dependency_links.txt +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely.egg-info/entry_points.txt +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely.egg-info/requires.txt +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely.egg-info/top_level.txt +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/supervisely_lib/__init__.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test-api-file-list.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_api_video.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_async_file_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_async_image_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_async_pcd_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_async_project.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_async_project_video.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_async_video_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_async_volume_api.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_output.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_setup.py +0 -0
- {supervisely-6.73.452 → supervisely-6.73.453}/tests/test_video_rotations.py +0 -0
@@ -11,6 +11,7 @@ import threading
|
|
11
11
|
import time
|
12
12
|
import traceback
|
13
13
|
from concurrent.futures import ThreadPoolExecutor
|
14
|
+
from typing import Optional, Union
|
14
15
|
|
15
16
|
import jsonpatch
|
16
17
|
from fastapi import Request
|
@@ -109,16 +110,22 @@ class _PatchableJson(dict):
|
|
109
110
|
patch.apply(self._last, in_place=True)
|
110
111
|
self._last = copy.deepcopy(self._last)
|
111
112
|
|
112
|
-
async def synchronize_changes(self):
|
113
|
+
async def synchronize_changes(self, user_id: Optional[Union[int, str]] = None):
|
113
114
|
patch = self._get_patch()
|
114
115
|
await self._apply_patch(patch)
|
115
|
-
await self._ws.broadcast(self.get_changes(patch))
|
116
|
+
await self._ws.broadcast(self.get_changes(patch), user_id=user_id)
|
116
117
|
|
117
118
|
async def send_changes_async(self):
|
118
|
-
|
119
|
+
user_id = None
|
120
|
+
if sly_env.is_multiuser_mode_enabled():
|
121
|
+
user_id = sly_env.user_from_multiuser_app()
|
122
|
+
await self.synchronize_changes(user_id=user_id)
|
119
123
|
|
120
124
|
def send_changes(self):
|
121
|
-
|
125
|
+
user_id = None
|
126
|
+
if sly_env.is_multiuser_mode_enabled():
|
127
|
+
user_id = sly_env.user_from_multiuser_app()
|
128
|
+
run_sync(self.synchronize_changes(user_id=user_id))
|
122
129
|
|
123
130
|
def raise_for_key(self, key: str):
|
124
131
|
if key in self:
|
@@ -139,7 +146,7 @@ class StateJson(_PatchableJson, metaclass=Singleton):
|
|
139
146
|
await StateJson._replace_global(dict(self))
|
140
147
|
|
141
148
|
@classmethod
|
142
|
-
async def from_request(cls, request: Request) -> StateJson:
|
149
|
+
async def from_request(cls, request: Request, local: bool = True) -> StateJson:
|
143
150
|
if "application/json" not in request.headers.get("Content-Type", ""):
|
144
151
|
return None
|
145
152
|
content = await request.json()
|
@@ -149,7 +156,8 @@ class StateJson(_PatchableJson, metaclass=Singleton):
|
|
149
156
|
# TODO: should we always replace STATE with {}?
|
150
157
|
d = content.get(Field.STATE, {})
|
151
158
|
await cls._replace_global(d)
|
152
|
-
|
159
|
+
|
160
|
+
return cls(d, __local__=local)
|
153
161
|
|
154
162
|
@classmethod
|
155
163
|
async def _replace_global(cls, d: dict):
|
@@ -0,0 +1,88 @@
|
|
1
|
+
import hashlib
|
2
|
+
from contextlib import contextmanager
|
3
|
+
from typing import Optional, Union
|
4
|
+
|
5
|
+
from fastapi import Request
|
6
|
+
|
7
|
+
import supervisely.io.env as sly_env
|
8
|
+
from supervisely.api.module_api import ApiField
|
9
|
+
from supervisely.app.fastapi.websocket import WebsocketManager
|
10
|
+
from supervisely.sly_logger import logger
|
11
|
+
|
12
|
+
|
13
|
+
def _parse_int(value):
|
14
|
+
try:
|
15
|
+
return int(value)
|
16
|
+
except (TypeError, ValueError):
|
17
|
+
return None
|
18
|
+
|
19
|
+
|
20
|
+
def _user_identity_from_cookie(request: Request) -> Optional[str]:
|
21
|
+
cookie_header = request.headers.get("cookie")
|
22
|
+
if not cookie_header:
|
23
|
+
return None
|
24
|
+
return hashlib.sha256(cookie_header.encode("utf-8")).hexdigest()
|
25
|
+
|
26
|
+
|
27
|
+
async def extract_user_id_from_request(request: Request) -> Optional[Union[int, str]]:
|
28
|
+
"""Extract user ID from various parts of the request."""
|
29
|
+
if not sly_env.is_multiuser_mode_enabled():
|
30
|
+
return None
|
31
|
+
user_id = _parse_int(request.query_params.get("userId"))
|
32
|
+
if user_id is None:
|
33
|
+
header_user = _parse_int(request.headers.get("x-user-id"))
|
34
|
+
if header_user is not None:
|
35
|
+
user_id = header_user
|
36
|
+
if user_id is None:
|
37
|
+
referer = request.headers.get("referer", "")
|
38
|
+
if referer:
|
39
|
+
from urllib.parse import parse_qs, urlparse
|
40
|
+
|
41
|
+
try:
|
42
|
+
parsed_url = urlparse(referer)
|
43
|
+
query_params = parse_qs(parsed_url.query)
|
44
|
+
referer_user = query_params.get("userId", [None])[0]
|
45
|
+
user_id = _parse_int(referer_user)
|
46
|
+
except Exception as e:
|
47
|
+
logger.error(f"Error parsing userId from referer: {e}")
|
48
|
+
if user_id is None and "application/json" in request.headers.get("Content-Type", ""):
|
49
|
+
try:
|
50
|
+
payload = await request.json()
|
51
|
+
except Exception:
|
52
|
+
payload = {}
|
53
|
+
context = payload.get("context") or {}
|
54
|
+
user_id = _parse_int(context.get("userId") or context.get(ApiField.USER_ID))
|
55
|
+
if user_id is None:
|
56
|
+
state_payload = payload.get("state") or {}
|
57
|
+
user_id = _parse_int(state_payload.get("userId") or state_payload.get(ApiField.USER_ID))
|
58
|
+
if user_id is None:
|
59
|
+
user_id = _user_identity_from_cookie(request)
|
60
|
+
return user_id
|
61
|
+
|
62
|
+
|
63
|
+
@contextmanager
|
64
|
+
def session_context(user_id: Optional[Union[int, str]]):
|
65
|
+
"""
|
66
|
+
Context manager to set and reset user context for multiuser applications.
|
67
|
+
Call this at the beginning of a request handling to ensure the correct user context is set in environment variables (`supervisely_multiuser_app_user_id` ContextVar).
|
68
|
+
"""
|
69
|
+
if not sly_env.is_multiuser_mode_enabled() or user_id is None:
|
70
|
+
yield
|
71
|
+
return
|
72
|
+
token = sly_env.set_user_for_multiuser_app(user_id)
|
73
|
+
try:
|
74
|
+
yield
|
75
|
+
finally:
|
76
|
+
sly_env.reset_user_for_multiuser_app(token)
|
77
|
+
|
78
|
+
|
79
|
+
def remember_cookie(request: Request, user_id: Optional[Union[int, str]]):
|
80
|
+
"""
|
81
|
+
Remember user cookie for the given user ID. This is used to associate WebSocket connections with users in multiuser applications based on cookies.
|
82
|
+
Allows WebSocket connections to be correctly routed to the appropriate user.
|
83
|
+
"""
|
84
|
+
if not sly_env.is_multiuser_mode_enabled() or user_id is None:
|
85
|
+
return
|
86
|
+
cookie_header = request.headers.get("cookie")
|
87
|
+
if cookie_header:
|
88
|
+
WebsocketManager().remember_user_cookie(cookie_header, user_id)
|
@@ -1,17 +1,18 @@
|
|
1
|
+
import hashlib
|
1
2
|
import inspect
|
2
3
|
import json
|
3
4
|
import os
|
4
5
|
import signal
|
5
6
|
import sys
|
6
7
|
import time
|
7
|
-
from contextlib import suppress
|
8
|
+
from contextlib import contextmanager, suppress
|
8
9
|
from contextvars import ContextVar
|
9
10
|
from functools import wraps
|
10
11
|
from pathlib import Path
|
11
12
|
from threading import Event as ThreadingEvent
|
12
13
|
from threading import Thread
|
13
14
|
from time import sleep
|
14
|
-
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional
|
15
|
+
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Union
|
15
16
|
|
16
17
|
import arel
|
17
18
|
import jinja2
|
@@ -32,6 +33,7 @@ from fastapi.responses import JSONResponse
|
|
32
33
|
from fastapi.routing import APIRouter
|
33
34
|
from fastapi.staticfiles import StaticFiles
|
34
35
|
|
36
|
+
import supervisely.app.fastapi.multi_user as multi_user
|
35
37
|
import supervisely.io.env as sly_env
|
36
38
|
from supervisely._utils import (
|
37
39
|
is_debug_with_sly_net,
|
@@ -68,6 +70,7 @@ HEALTH_ENDPOINTS = ["/health", "/is_ready"]
|
|
68
70
|
# Context variable for response time
|
69
71
|
response_time_ctx: ContextVar[float] = ContextVar("response_time", default=None)
|
70
72
|
|
73
|
+
|
71
74
|
class ReadyzFilter(logging.Filter):
|
72
75
|
def filter(self, record):
|
73
76
|
if "/readyz" in record.getMessage() or "/livez" in record.getMessage():
|
@@ -623,18 +626,30 @@ def create(
|
|
623
626
|
shutdown(process_id, before_shutdown_callbacks)
|
624
627
|
|
625
628
|
if headless is False:
|
626
|
-
|
627
629
|
@app.post("/data")
|
628
630
|
async def send_data(request: Request):
|
629
|
-
|
630
|
-
|
631
|
+
if not sly_env.is_multiuser_mode_enabled():
|
632
|
+
data = DataJson()
|
633
|
+
response = JSONResponse(content=dict(data))
|
634
|
+
return response
|
635
|
+
user_id = await multi_user.extract_user_id_from_request(request)
|
636
|
+
multi_user.remember_cookie(request, user_id)
|
637
|
+
with multi_user.session_context(user_id):
|
638
|
+
data = DataJson()
|
639
|
+
response = JSONResponse(content=dict(data))
|
631
640
|
return response
|
632
641
|
|
633
642
|
@app.post("/state")
|
634
643
|
async def send_state(request: Request):
|
635
|
-
|
636
|
-
|
637
|
-
|
644
|
+
if not sly_env.is_multiuser_mode_enabled():
|
645
|
+
state = StateJson()
|
646
|
+
response = JSONResponse(content=dict(state))
|
647
|
+
else:
|
648
|
+
user_id = await multi_user.extract_user_id_from_request(request)
|
649
|
+
multi_user.remember_cookie(request, user_id)
|
650
|
+
with multi_user.session_context(user_id):
|
651
|
+
state = StateJson()
|
652
|
+
response = JSONResponse(content=dict(state))
|
638
653
|
gettrace = getattr(sys, "gettrace", None)
|
639
654
|
if (gettrace is not None and gettrace()) or is_development():
|
640
655
|
response.headers["x-debug-mode"] = "1"
|
@@ -813,41 +828,55 @@ def _init(
|
|
813
828
|
async def get_state_from_request(request: Request, call_next):
|
814
829
|
# Start timer for response time measurement
|
815
830
|
start_time = time.perf_counter()
|
816
|
-
if headless is False:
|
817
|
-
await StateJson.from_request(request)
|
818
|
-
|
819
|
-
if not ("application/json" not in request.headers.get("Content-Type", "")):
|
820
|
-
# {'command': 'inference_batch_ids', 'context': {}, 'state': {'dataset_id': 49711, 'batch_ids': [3120204], 'settings': None}, 'user_api_key': 'XXX', 'api_token': 'XXX', 'instance_type': None, 'server_address': 'https://app.supervisely.com'}
|
821
|
-
content = await request.json()
|
822
|
-
|
823
|
-
request.state.context = content.get("context")
|
824
|
-
request.state.state = content.get("state")
|
825
|
-
request.state.api_token = content.get(
|
826
|
-
"api_token",
|
827
|
-
(
|
828
|
-
request.state.context.get("apiToken")
|
829
|
-
if request.state.context is not None
|
830
|
-
else None
|
831
|
-
),
|
832
|
-
)
|
833
|
-
# logger.debug(f"middleware request api_token {request.state.api_token}")
|
834
|
-
request.state.server_address = content.get(
|
835
|
-
"server_address", sly_env.server_address(raise_not_found=False)
|
836
|
-
)
|
837
|
-
# request.state.server_address = sly_env.server_address(raise_not_found=False)
|
838
|
-
# logger.debug(f"middleware request server_address {request.state.server_address}")
|
839
|
-
# logger.debug(f"middleware request context {request.state.context}")
|
840
|
-
# logger.debug(f"middleware request state {request.state.state}")
|
841
|
-
if request.state.server_address is not None and request.state.api_token is not None:
|
842
|
-
request.state.api = Api(request.state.server_address, request.state.api_token)
|
843
|
-
else:
|
844
|
-
request.state.api = None
|
845
831
|
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
832
|
+
async def _process_request(request: Request, call_next):
|
833
|
+
if "application/json" in request.headers.get("Content-Type", ""):
|
834
|
+
content = await request.json()
|
835
|
+
request.state.context = content.get("context")
|
836
|
+
request.state.state = content.get("state")
|
837
|
+
request.state.api_token = content.get(
|
838
|
+
"api_token",
|
839
|
+
(
|
840
|
+
request.state.context.get("apiToken")
|
841
|
+
if request.state.context is not None
|
842
|
+
else None
|
843
|
+
),
|
844
|
+
)
|
845
|
+
request.state.server_address = content.get(
|
846
|
+
"server_address", sly_env.server_address(raise_not_found=False)
|
847
|
+
)
|
848
|
+
if (
|
849
|
+
request.state.server_address is not None
|
850
|
+
and request.state.api_token is not None
|
851
|
+
):
|
852
|
+
request.state.api = Api(
|
853
|
+
request.state.server_address, request.state.api_token
|
854
|
+
)
|
855
|
+
else:
|
856
|
+
request.state.api = None
|
857
|
+
|
858
|
+
try:
|
859
|
+
response = await call_next(request)
|
860
|
+
except Exception as exc:
|
861
|
+
need_to_handle_error = is_production()
|
862
|
+
response = await process_server_error(
|
863
|
+
request, exc, need_to_handle_error
|
864
|
+
)
|
865
|
+
|
866
|
+
return response
|
867
|
+
|
868
|
+
if not sly_env.is_multiuser_mode_enabled():
|
869
|
+
if headless is False:
|
870
|
+
await StateJson.from_request(request)
|
871
|
+
response = await _process_request(request, call_next)
|
872
|
+
else:
|
873
|
+
user_id = await multi_user.extract_user_id_from_request(request)
|
874
|
+
multi_user.remember_cookie(request, user_id)
|
875
|
+
|
876
|
+
with multi_user.session_context(user_id):
|
877
|
+
if headless is False:
|
878
|
+
await StateJson.from_request(request, local=False)
|
879
|
+
response = await _process_request(request, call_next)
|
851
880
|
# Calculate response time and set it for uvicorn logger in ms
|
852
881
|
elapsed_ms = round((time.perf_counter() - start_time) * 1000)
|
853
882
|
response_time_ctx.set(elapsed_ms)
|
@@ -0,0 +1,107 @@
|
|
1
|
+
import hashlib
|
2
|
+
import time
|
3
|
+
from typing import Dict, List, Optional, Tuple, Union
|
4
|
+
|
5
|
+
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
|
6
|
+
|
7
|
+
import supervisely.io.env as sly_env
|
8
|
+
from supervisely.app.singleton import Singleton
|
9
|
+
|
10
|
+
|
11
|
+
class WebsocketManager(metaclass=Singleton):
|
12
|
+
def __init__(self, path="/sly-app-ws"):
|
13
|
+
self.app = None
|
14
|
+
self.path = path
|
15
|
+
self.active_connections: List[WebSocket] = []
|
16
|
+
self._connection_users: Dict[WebSocket, Optional[Union[int, str]]] = {}
|
17
|
+
self._cookie_user_map: Dict[str, Tuple[Union[int, str], float]] = {}
|
18
|
+
self._cookie_ttl_seconds = 60 * 60
|
19
|
+
|
20
|
+
def set_app(self, app: FastAPI):
|
21
|
+
if self.app is not None:
|
22
|
+
return
|
23
|
+
self.app = app
|
24
|
+
self.app.add_api_websocket_route(path=self.path, endpoint=self.endpoint)
|
25
|
+
|
26
|
+
async def connect(self, websocket: WebSocket):
|
27
|
+
await websocket.accept()
|
28
|
+
user_id = self._resolve_user_id(websocket)
|
29
|
+
self.active_connections.append(websocket)
|
30
|
+
self._connection_users[websocket] = user_id
|
31
|
+
|
32
|
+
def disconnect(self, websocket: WebSocket):
|
33
|
+
if websocket in self.active_connections:
|
34
|
+
self.active_connections.remove(websocket)
|
35
|
+
self._connection_users.pop(websocket, None)
|
36
|
+
|
37
|
+
def remember_user_cookie(
|
38
|
+
self, cookie_header: Optional[str], user_id: Optional[Union[int, str]]
|
39
|
+
):
|
40
|
+
if cookie_header is None or user_id is None:
|
41
|
+
return
|
42
|
+
fingerprint = self._cookie_fingerprint(cookie_header)
|
43
|
+
if fingerprint is None:
|
44
|
+
return
|
45
|
+
self._purge_cookie_cache()
|
46
|
+
self._cookie_user_map[fingerprint] = (user_id, time.monotonic())
|
47
|
+
|
48
|
+
async def broadcast(self, d: dict, user_id: Optional[Union[int, str]] = None):
|
49
|
+
if sly_env.is_multiuser_mode_enabled():
|
50
|
+
if user_id is None:
|
51
|
+
user_id = sly_env.user_from_multiuser_app()
|
52
|
+
if user_id is None:
|
53
|
+
targets = list(self.active_connections)
|
54
|
+
else:
|
55
|
+
targets = [
|
56
|
+
connection
|
57
|
+
for connection in self.active_connections
|
58
|
+
if self._connection_users.get(connection) == user_id
|
59
|
+
]
|
60
|
+
else:
|
61
|
+
targets = list(self.active_connections)
|
62
|
+
|
63
|
+
for connection in list(targets):
|
64
|
+
await connection.send_json(d)
|
65
|
+
|
66
|
+
async def endpoint(self, websocket: WebSocket):
|
67
|
+
await self.connect(websocket)
|
68
|
+
try:
|
69
|
+
while True:
|
70
|
+
data = await websocket.receive_text()
|
71
|
+
except WebSocketDisconnect:
|
72
|
+
self.disconnect(websocket)
|
73
|
+
|
74
|
+
def _resolve_user_id(self, websocket: WebSocket) -> Optional[int]:
|
75
|
+
if not sly_env.is_multiuser_mode_enabled():
|
76
|
+
return None
|
77
|
+
query_user = websocket.query_params.get("userId")
|
78
|
+
if query_user is not None:
|
79
|
+
try:
|
80
|
+
return int(query_user)
|
81
|
+
except ValueError:
|
82
|
+
pass
|
83
|
+
fingerprint = self._cookie_fingerprint(websocket.headers.get("cookie"))
|
84
|
+
if fingerprint is None:
|
85
|
+
return None
|
86
|
+
cached = self._cookie_user_map.get(fingerprint)
|
87
|
+
if cached is None:
|
88
|
+
return None
|
89
|
+
user_id, ts = cached
|
90
|
+
if time.monotonic() - ts > self._cookie_ttl_seconds:
|
91
|
+
self._cookie_user_map.pop(fingerprint, None)
|
92
|
+
return None
|
93
|
+
return user_id
|
94
|
+
|
95
|
+
@staticmethod
|
96
|
+
def _cookie_fingerprint(cookie_header: Optional[str]) -> Optional[str]:
|
97
|
+
if not cookie_header:
|
98
|
+
return None
|
99
|
+
return hashlib.sha256(cookie_header.encode("utf-8")).hexdigest()
|
100
|
+
|
101
|
+
def _purge_cookie_cache(self) -> None:
|
102
|
+
if not self._cookie_user_map:
|
103
|
+
return
|
104
|
+
cutoff = time.monotonic() - self._cookie_ttl_seconds
|
105
|
+
expired = [key for key, (_, ts) in self._cookie_user_map.items() if ts < cutoff]
|
106
|
+
for key in expired:
|
107
|
+
self._cookie_user_map.pop(key, None)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import supervisely.io.env as sly_env
|
2
|
+
|
3
|
+
|
4
|
+
class Singleton(type):
|
5
|
+
_instances = {}
|
6
|
+
_nested_instances = {}
|
7
|
+
|
8
|
+
def __call__(cls, *args, **kwargs):
|
9
|
+
local = kwargs.pop("__local__", False)
|
10
|
+
if local is False:
|
11
|
+
if cls not in cls._instances:
|
12
|
+
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
|
13
|
+
|
14
|
+
if sly_env.is_multiuser_mode_enabled():
|
15
|
+
from supervisely.app.content import DataJson, StateJson
|
16
|
+
from copy import deepcopy
|
17
|
+
|
18
|
+
# Initialize nested instances dict once
|
19
|
+
nested_instances = cls._nested_instances.setdefault(cls, {})
|
20
|
+
|
21
|
+
user_id = sly_env.user_from_multiuser_app()
|
22
|
+
if user_id is not None and cls in (StateJson, DataJson):
|
23
|
+
if user_id not in nested_instances:
|
24
|
+
# Create new instance and copy data
|
25
|
+
instance = super(Singleton, cls).__call__(*args, **kwargs)
|
26
|
+
instance.update(deepcopy(dict(cls._instances[cls])))
|
27
|
+
nested_instances[user_id] = instance
|
28
|
+
|
29
|
+
return nested_instances[user_id]
|
30
|
+
return cls._instances[cls]
|
31
|
+
else:
|
32
|
+
return super(Singleton, cls).__call__(*args, **kwargs)
|
@@ -1,10 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
import json
|
3
3
|
import os
|
4
|
+
from contextvars import ContextVar, Token
|
4
5
|
from typing import Callable, List, Literal, Optional, Union
|
5
6
|
|
6
7
|
RAISE_IF_NOT_FOUND = True
|
7
|
-
|
8
|
+
_MULTIUSER_USER_CTX: ContextVar[Optional[Union[int, str]]] = ContextVar(
|
9
|
+
"supervisely_multiuser_app_user_id",
|
10
|
+
default=None,
|
11
|
+
)
|
8
12
|
|
9
13
|
def flag_from_env(s: str) -> bool:
|
10
14
|
"""Returns True if passed string is a flag, False otherwise.
|
@@ -771,3 +775,74 @@ def add_uploaded_ids_to_env(dataset_id: int, ids: List[int]) -> None:
|
|
771
775
|
else:
|
772
776
|
uploaded[str(dataset_id)].extend(ids)
|
773
777
|
os.environ["UPLOADED_IDS"] = json.dumps(uploaded)
|
778
|
+
|
779
|
+
|
780
|
+
def is_multiuser_mode_enabled() -> bool:
|
781
|
+
"""Returns multiuser app mode flag from environment variable using following keys:
|
782
|
+
- SUPERVISELY_MULTIUSER_APP_MODE
|
783
|
+
:return: multiuser app mode flag
|
784
|
+
:rtype: bool
|
785
|
+
"""
|
786
|
+
return _parse_from_env(
|
787
|
+
name="is_multiuser_mode_enabled",
|
788
|
+
keys=["SUPERVISELY_MULTIUSER_APP_MODE"],
|
789
|
+
default=False,
|
790
|
+
raise_not_found=False,
|
791
|
+
postprocess_fn=flag_from_env,
|
792
|
+
)
|
793
|
+
|
794
|
+
|
795
|
+
def enable_multiuser_app_mode() -> None:
|
796
|
+
"""
|
797
|
+
Enables multiuser app mode by setting the environment variable.
|
798
|
+
This function can be used to activate multiuser mode in the application allowing
|
799
|
+
separation of user DataJson/StateJson.
|
800
|
+
"""
|
801
|
+
os.environ["SUPERVISELY_MULTIUSER_APP_MODE"] = "true"
|
802
|
+
|
803
|
+
|
804
|
+
def disable_multiuser_app_mode() -> None:
|
805
|
+
"""Disables multiuser app mode by removing the environment variable."""
|
806
|
+
os.environ.pop("SUPERVISELY_MULTIUSER_APP_MODE", None)
|
807
|
+
|
808
|
+
|
809
|
+
def set_user_for_multiuser_app(user_id: Optional[Union[int, str]]) -> Token:
|
810
|
+
"""
|
811
|
+
Sets the user ID for multiuser app mode by setting the environment variable.
|
812
|
+
This function should be used in multiuser mode to separate user DataJson/StateJson.
|
813
|
+
|
814
|
+
:param user_id: The user ID (or session key) to set for the current request.
|
815
|
+
:type user_id: int | str
|
816
|
+
:return: A context token that can be used to reset the user ID later.
|
817
|
+
:rtype: Token
|
818
|
+
:raises RuntimeError: If multiuser app mode is not enabled.
|
819
|
+
"""
|
820
|
+
if not is_multiuser_mode_enabled():
|
821
|
+
raise RuntimeError("Multiuser app mode is not enabled. Cannot set user ID.")
|
822
|
+
return _MULTIUSER_USER_CTX.set(user_id)
|
823
|
+
|
824
|
+
|
825
|
+
def reset_user_for_multiuser_app(token: Token) -> None:
|
826
|
+
"""
|
827
|
+
Resets the user ID for multiuser app mode using the provided context token.
|
828
|
+
|
829
|
+
:param token: Context token obtained from `set_user_for_multiuser_app`.
|
830
|
+
:type token: Token
|
831
|
+
"""
|
832
|
+
if not is_multiuser_mode_enabled():
|
833
|
+
return
|
834
|
+
_MULTIUSER_USER_CTX.reset(token)
|
835
|
+
|
836
|
+
|
837
|
+
def user_from_multiuser_app() -> Optional[Union[int, str]]:
|
838
|
+
"""
|
839
|
+
Retrieves the user ID for multiuser app mode from the environment variable.
|
840
|
+
|
841
|
+
:return: The user ID if set, otherwise None.
|
842
|
+
:rtype: Optional[Union[int, str]]
|
843
|
+
"""
|
844
|
+
if not is_multiuser_mode_enabled():
|
845
|
+
return None
|
846
|
+
user_id = _MULTIUSER_USER_CTX.get(None)
|
847
|
+
if user_id is not None:
|
848
|
+
return user_id
|
@@ -107,6 +107,7 @@ supervisely/app/fastapi/__init__.py
|
|
107
107
|
supervisely/app/fastapi/custom_static_files.py
|
108
108
|
supervisely/app/fastapi/dialog_window.html
|
109
109
|
supervisely/app/fastapi/index.html
|
110
|
+
supervisely/app/fastapi/multi_user.py
|
110
111
|
supervisely/app/fastapi/no_html_main.html
|
111
112
|
supervisely/app/fastapi/offline.py
|
112
113
|
supervisely/app/fastapi/request.py
|
@@ -1,39 +0,0 @@
|
|
1
|
-
from typing import List
|
2
|
-
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
|
3
|
-
from supervisely.app.singleton import Singleton
|
4
|
-
|
5
|
-
|
6
|
-
class WebsocketManager(metaclass=Singleton):
|
7
|
-
def __init__(self, path="/sly-app-ws"):
|
8
|
-
self.app = None
|
9
|
-
self.path = path
|
10
|
-
self.active_connections: List[WebSocket] = []
|
11
|
-
|
12
|
-
def set_app(self, app: FastAPI):
|
13
|
-
if self.app is not None:
|
14
|
-
return
|
15
|
-
self.app = app
|
16
|
-
self.app.add_api_websocket_route(path=self.path, endpoint=self.endpoint)
|
17
|
-
|
18
|
-
async def connect(self, websocket: WebSocket):
|
19
|
-
await websocket.accept()
|
20
|
-
self.active_connections.append(websocket)
|
21
|
-
|
22
|
-
def disconnect(self, websocket: WebSocket):
|
23
|
-
self.active_connections.remove(websocket)
|
24
|
-
|
25
|
-
async def broadcast(self, d: dict):
|
26
|
-
# if self.app is None:
|
27
|
-
# raise ValueError(
|
28
|
-
# "WebSocket is not initialized, use Websocket middleware for that"
|
29
|
-
# )
|
30
|
-
for connection in self.active_connections:
|
31
|
-
await connection.send_json(d)
|
32
|
-
|
33
|
-
async def endpoint(self, websocket: WebSocket):
|
34
|
-
await self.connect(websocket)
|
35
|
-
try:
|
36
|
-
while True:
|
37
|
-
data = await websocket.receive_text()
|
38
|
-
except WebSocketDisconnect:
|
39
|
-
self.disconnect(websocket)
|
@@ -1,11 +0,0 @@
|
|
1
|
-
class Singleton(type):
|
2
|
-
_instances = {}
|
3
|
-
|
4
|
-
def __call__(cls, *args, **kwargs):
|
5
|
-
local = kwargs.pop("__local__", False)
|
6
|
-
if local is False:
|
7
|
-
if cls not in cls._instances:
|
8
|
-
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
|
9
|
-
return cls._instances[cls]
|
10
|
-
else:
|
11
|
-
return super(Singleton, cls).__call__(*args, **kwargs)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/annotation_transforms.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{supervisely-6.73.452 → supervisely-6.73.453}/supervisely/annotation/obj_class_collection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|