supervisely 6.73.309__py3-none-any.whl → 6.73.311__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of supervisely might be problematic. Click here for more details.

@@ -44,6 +44,7 @@ from supervisely.io.fs import (
44
44
  ensure_base_path,
45
45
  get_file_ext,
46
46
  get_file_hash,
47
+ get_file_hash_chunked,
47
48
  get_file_hash_async,
48
49
  get_file_name_with_ext,
49
50
  get_file_size,
@@ -1516,7 +1517,7 @@ class VideoApi(RemoveableBulkModuleApi):
1516
1517
  self._api.add_header("x-skip-processing", "true")
1517
1518
 
1518
1519
  video_info_results = []
1519
- hashes = [get_file_hash(x) for x in paths]
1520
+ hashes = [get_file_hash_chunked(x) for x in paths]
1520
1521
 
1521
1522
  self._upload_data_bulk(
1522
1523
  path_to_bytes_stream,
@@ -812,6 +812,25 @@ def _init(
812
812
  response = await process_server_error(request, exc, need_to_handle_error)
813
813
  return response
814
814
 
815
+ def verify_localhost(request: Request):
816
+ client_host = request.client.host
817
+ if client_host not in ["127.0.0.1", "::1"]:
818
+ raise HTTPException(status_code=404, detail="Not Found")
819
+
820
+ @app.post("/debug", dependencies=[Depends(verify_localhost)])
821
+ def start_debug():
822
+ import debugpy
823
+
824
+ debug_host = os.getenv("DEBUG_HOST", "127.0.0.1")
825
+ debug_port = int(os.getenv("DEBUG_PORT", "5678"))
826
+ debugpy.listen((debug_host, debug_port))
827
+ return {
828
+ "status": "success",
829
+ "message": f"Debug server is listening on {debug_host}:{debug_port}",
830
+ "host": debug_host,
831
+ "port": debug_port,
832
+ }
833
+
815
834
  if headless is False:
816
835
  app.cached_template = None
817
836
 
@@ -5,6 +5,7 @@ from supervisely.app import StateJson
5
5
  from supervisely.app.widgets import Button, NotificationBox, Widget, generate_id
6
6
  from supervisely.geometry.any_geometry import AnyGeometry
7
7
  from supervisely.geometry.bitmap import Bitmap
8
+ from supervisely.geometry.alpha_mask import AlphaMask
8
9
  from supervisely.geometry.closed_surface_mesh import ClosedSurfaceMesh
9
10
  from supervisely.geometry.cuboid_2d import Cuboid2d
10
11
  from supervisely.geometry.cuboid_3d import Cuboid3d
@@ -22,6 +23,7 @@ type_to_shape_text = {
22
23
  AnyGeometry: "any shape",
23
24
  Rectangle: "rectangle",
24
25
  Polygon: "polygon",
26
+ AlphaMask: "alpha mask",
25
27
  Bitmap: "bitmap (mask)",
26
28
  Polyline: "polyline",
27
29
  Point: "point",
@@ -4,6 +4,7 @@ from supervisely import ObjClass, ObjClassCollection
4
4
  from supervisely.app import DataJson, StateJson
5
5
 
6
6
  from supervisely.geometry.bitmap import Bitmap
7
+ from supervisely.geometry.alpha_mask import AlphaMask
7
8
  from supervisely.geometry.cuboid import Cuboid
8
9
  from supervisely.geometry.point import Point
9
10
  from supervisely.geometry.polygon import Polygon
@@ -23,6 +24,7 @@ type_to_shape_text = {
23
24
  Rectangle: "rectangle",
24
25
  Polygon: "polygon",
25
26
  Bitmap: "bitmap (mask)",
27
+ AlphaMask: "alpha mask",
26
28
  Polyline: "polyline",
27
29
  Point: "point",
28
30
  Cuboid: "cuboid", #
@@ -4,6 +4,7 @@ from supervisely.annotation.obj_class import ObjClass
4
4
 
5
5
 
6
6
  from supervisely.geometry.bitmap import Bitmap
7
+ from supervisely.geometry.alpha_mask import AlphaMask
7
8
  from supervisely.geometry.cuboid import Cuboid
8
9
  from supervisely.geometry.point import Point
9
10
  from supervisely.geometry.polygon import Polygon
@@ -23,6 +24,7 @@ type_to_zmdi_icon = {
23
24
  Rectangle: "zmdi zmdi-crop-din", # "zmdi zmdi-square-o"
24
25
  # Polygon: "icons8-polygon", # "zmdi zmdi-edit"
25
26
  Bitmap: "zmdi zmdi-brush",
27
+ AlphaMask: "zmdi zmdi-brush",
26
28
  Polyline: "zmdi zmdi-gesture",
27
29
  Point: "zmdi zmdi-dot-circle-alt",
28
30
  Cuboid: "zmdi zmdi-ungroup", #
@@ -49,6 +51,7 @@ type_to_shape_text = {
49
51
  Rectangle: "rectangle",
50
52
  Polygon: "polygon",
51
53
  Bitmap: "bitmap (mask)",
54
+ AlphaMask: "alpha mask",
52
55
  Polyline: "polyline",
53
56
  Point: "point",
54
57
  Cuboid: "cuboid", #
supervisely/io/fs.py CHANGED
@@ -8,6 +8,8 @@ import re
8
8
  import shutil
9
9
  import subprocess
10
10
  import tarfile
11
+ import hashlib
12
+ import base64
11
13
  from typing import Callable, Dict, Generator, List, Literal, Optional, Tuple, Union
12
14
 
13
15
  import aiofiles
@@ -880,6 +882,32 @@ def get_file_hash(path: str) -> str:
880
882
  return get_bytes_hash(file_bytes)
881
883
 
882
884
 
885
+ def get_file_hash_chunked(path: str, chunk_size: Optional[int] = 1024 * 1024) -> str:
886
+ """
887
+ Get hash from target file by reading it in chunks.
888
+
889
+ :param path: Target file path.
890
+ :type path: str
891
+ :param chunk_size: Number of bytes to read per iteration. Default is 1 MB.
892
+ :type chunk_size: int, optional
893
+ :returns: File hash as a base64 encoded string.
894
+ :rtype: str
895
+
896
+ :Usage example:
897
+
898
+ .. code-block:: python
899
+
900
+ file_hash = sly.fs.get_file_hash_chunked('/home/admin/work/projects/examples/1.jpeg')
901
+ print(file_hash) # Example output: rKLYA/p/P64dzidaQ/G7itxIz3ZCVnyUhEE9fSMGxU4=
902
+ """
903
+ hash_sha256 = hashlib.sha256()
904
+ with open(path, "rb") as f:
905
+ while chunk := f.read(chunk_size):
906
+ hash_sha256.update(chunk)
907
+ digest = hash_sha256.digest()
908
+ return base64.b64encode(digest).decode("utf-8")
909
+
910
+
883
911
  def tree(dir_path: str) -> str:
884
912
  """
885
913
  Get tree for target directory.
@@ -4,12 +4,14 @@ import supervisely.nn.inference as inference
4
4
  from supervisely.nn.artifacts.artifacts import BaseTrainArtifacts, TrainInfo
5
5
  from supervisely.nn.prediction_dto import (
6
6
  Prediction,
7
+ PredictionAlphaMask,
7
8
  PredictionBBox,
8
9
  PredictionCuboid3d,
9
10
  PredictionKeypoints,
10
11
  PredictionMask,
11
12
  PredictionSegmentation,
13
+ ProbabilityMask,
12
14
  )
13
15
  from supervisely.nn.task_type import TaskType
14
16
  from supervisely.nn.utils import ModelSource, RuntimeType
15
- from supervisely.nn.experiments import ExperimentInfo, get_experiment_infos
17
+ from supervisely.nn.experiments import ExperimentInfo, get_experiment_infos
@@ -27,4 +27,4 @@ from supervisely.nn.inference.tracking.mask_tracking import MaskTracking
27
27
  from supervisely.nn.inference.tracking.object_tracking_3d import ObjectTracking3D
28
28
  from supervisely.nn.inference.object_detection_3d import ObjectDetection3D
29
29
  from supervisely.nn.utils import CheckpointInfo, DeployInfo, RuntimeType, ModelSource, ModelPrecision
30
- from supervisely.nn.task_type import TaskType
30
+ from supervisely.nn.task_type import TaskType
@@ -1,5 +1,7 @@
1
+ from typing import List, Optional
2
+
1
3
  import numpy as np
2
- from typing import Optional, List, Dict, Union
4
+
3
5
  from supervisely.geometry.cuboid_3d import Cuboid3d
4
6
 
5
7
 
@@ -10,6 +12,12 @@ class Prediction:
10
12
 
11
13
  class PredictionMask(Prediction):
12
14
  def __init__(self, class_name: str, mask: np.ndarray, score: Optional[float] = None):
15
+ """
16
+ class_name: Name of the class.
17
+ mask: Numpy array with bool or binary ([0, 1] or [0, 255]) values.
18
+ Will be converted to sly.Bitmap geometry.
19
+ score: Confidence score.
20
+ """
13
21
  super(PredictionMask, self).__init__(class_name=class_name)
14
22
  self.mask = mask
15
23
  self.score = score
@@ -27,6 +35,28 @@ class PredictionSegmentation(Prediction):
27
35
  self.mask = mask
28
36
 
29
37
 
38
+ class PredictionAlphaMask(Prediction):
39
+ def __init__(self, class_name: str, mask: np.ndarray):
40
+ """
41
+ class_name: Name of the class.
42
+ mask: Numpy array with values in range [0, 255].
43
+ Will be converted to sly.AlphaMask geometry.
44
+ """
45
+ super(PredictionAlphaMask, self).__init__(class_name=class_name)
46
+ self.mask = mask
47
+
48
+
49
+ class ProbabilityMask(Prediction):
50
+ def __init__(self, class_name: str, mask: np.ndarray):
51
+ """
52
+ class_name: Name of the class.
53
+ mask: Numpy array with values in range [0, 255].
54
+ Will be converted to sly.AlphaMask geometry.
55
+ """
56
+ super(ProbabilityMask, self).__init__(class_name=class_name)
57
+ self.mask = mask
58
+
59
+
30
60
  class PredictionKeypoints(Prediction):
31
61
  def __init__(self, class_name: str, labels: List[str], coordinates: List[float]):
32
62
  super(PredictionKeypoints, self).__init__(class_name=class_name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: supervisely
3
- Version: 6.73.309
3
+ Version: 6.73.311
4
4
  Summary: Supervisely Python SDK.
5
5
  Home-page: https://github.com/supervisely/supervisely
6
6
  Author: Supervisely
@@ -70,6 +70,7 @@ Requires-Dist: pyjwt<3.0.0,>=2.1.0
70
70
  Requires-Dist: zstd
71
71
  Requires-Dist: aiofiles
72
72
  Requires-Dist: httpx[http2]==0.27.2
73
+ Requires-Dist: debugpy
73
74
  Provides-Extra: apps
74
75
  Requires-Dist: uvicorn[standard]<1.0.0,>=0.18.2; extra == "apps"
75
76
  Requires-Dist: fastapi<1.0.0,>=0.79.0; extra == "apps"
@@ -64,7 +64,7 @@ supervisely/api/pointcloud/pointcloud_object_api.py,sha256=bO1USWb9HAywG_CW4CDu1
64
64
  supervisely/api/pointcloud/pointcloud_tag_api.py,sha256=iShtr052nOElxsyMyZEUT2vypEm6kP00gnP13ABX24A,4691
65
65
  supervisely/api/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  supervisely/api/video/video_annotation_api.py,sha256=nvbn_ofcqFCZ2qKgu0O5y5zOHxFc4tsY-o93sUgqlWk,14134
67
- supervisely/api/video/video_api.py,sha256=ma33Et1LKlACpyvksBYG9tbGNV_1ZSEuSAAsYpLP8qU,94666
67
+ supervisely/api/video/video_api.py,sha256=vnzAUBBfYyegB-kFeenBlkWsUT4w2U7qgnayA9kIccs,94701
68
68
  supervisely/api/video/video_figure_api.py,sha256=quksohjhgrK2l2-PtbbNE99fOW6uWXX59-_4xfc-I-k,6244
69
69
  supervisely/api/video/video_frame_api.py,sha256=4GwSI4xdCNYEUvTqzKc-Ewd44fw5zqkFoD24jrrN_aY,10214
70
70
  supervisely/api/video/video_object_api.py,sha256=IC0NP8EoIT_d3xxDRgz2cA3ixSiuJ5ymy64eS-RfmDM,2227
@@ -93,7 +93,7 @@ supervisely/app/fastapi/index.html,sha256=6K8akK7_k9Au-BpZ7cM2qocuiegLdXz8UFPnWg
93
93
  supervisely/app/fastapi/no_html_main.html,sha256=NhQP7noyORBx72lFh1CQKgBRupkWjiq6Gaw-9Hkvg7c,37
94
94
  supervisely/app/fastapi/offline.py,sha256=CwMMkJ1frD6wiZS-SEoNDtQ1UJcJe1Ob6ohE3r4CQL8,7414
95
95
  supervisely/app/fastapi/request.py,sha256=NU7rKmxJ1pfkDZ7_yHckRcRAueJRQIqCor11UO2OHr8,766
96
- supervisely/app/fastapi/subapp.py,sha256=AE_AJQ5ZfNKbV38To2uhSnSR7C_XoI99lAc0nDXOtbU,44064
96
+ supervisely/app/fastapi/subapp.py,sha256=uKk5epRbwlhl7ue1-OYKUC6oJ9krJ9hIEHEcFqNVdXI,44757
97
97
  supervisely/app/fastapi/templating.py,sha256=JOAW8U-14GD47E286mzFi3mZSPbm_csJGqtXWLRM4rc,2929
98
98
  supervisely/app/fastapi/utils.py,sha256=GZuTWLcVRGVx8TL3jVEYUOZIT2FawbwIe2kAOBLw9ho,398
99
99
  supervisely/app/fastapi/websocket.py,sha256=TlRSPOAhRItTv1HGvdukK1ZvhRjMUxRa-lJlsRR9rJw,1308
@@ -166,11 +166,11 @@ supervisely/app/widgets/classes_list_preview/classes_list_preview.py,sha256=9Kmr
166
166
  supervisely/app/widgets/classes_list_preview/style.css,sha256=ux1FCReTvcopl64MoEPFhnOdXyUTVP3WNWelyDZVhRA,122
167
167
  supervisely/app/widgets/classes_list_preview/template.html,sha256=3s05ZZWNDHPjFX_zatmABFDfRO2bqZ5BRO2JeY93EBY,1261
168
168
  supervisely/app/widgets/classes_list_selector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
- supervisely/app/widgets/classes_list_selector/classes_list_selector.py,sha256=ffXwThEq9CYwcBTQqDzLDnBNk_NaHypceO56t42Qczs,4513
169
+ supervisely/app/widgets/classes_list_selector/classes_list_selector.py,sha256=Xs63qPK7YiEBR2OaMmgNzWHXxhgd6VZFr2Oef9STkFI,4596
170
170
  supervisely/app/widgets/classes_list_selector/style.css,sha256=fsVL1o8uZfCbQWk9zpp31dINXA5Ua5E5Eo5QdoYaubU,220
171
171
  supervisely/app/widgets/classes_list_selector/template.html,sha256=McMT7t6MKyh4GscGp8-rSKZRo93FyFFZu-5L5yxix9s,2767
172
172
  supervisely/app/widgets/classes_mapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
- supervisely/app/widgets/classes_mapping/classes_mapping.py,sha256=1v6bqRDXvJYRexg1hWOgdlwhYByNmHajkXcGlx8At2c,6643
173
+ supervisely/app/widgets/classes_mapping/classes_mapping.py,sha256=VD35AxXDzp1XbN6AmKI62hh3iiW2IwJYJ6XL7R53hqU,6726
174
174
  supervisely/app/widgets/classes_mapping/template.html,sha256=uzm8AI4T1OoAa7t5ojUJHLpgYqipCNjCSaBS6E293mo,1848
175
175
  supervisely/app/widgets/classes_mapping_preview/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
176
  supervisely/app/widgets/classes_mapping_preview/classes_mapping_preview.py,sha256=ng1XzquFZxHYJN2AyM_qqxn2pym3sWWNsx72DqU6QDU,1883
@@ -371,7 +371,7 @@ supervisely/app/widgets/notification_box/notification_box.py,sha256=4HCi-_kH2lAX
371
371
  supervisely/app/widgets/notification_box/style.css,sha256=JbK7c6eMKd_rb3i4gL08qnA5Ft5la97QQTV1jpS9wC4,1077
372
372
  supervisely/app/widgets/notification_box/template.html,sha256=Ejwl4yyNxcfylsZHOS1KSpmGmiS5tAxrFzPEwZHOsj4,617
373
373
  supervisely/app/widgets/object_class_view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
374
- supervisely/app/widgets/object_class_view/object_class_view.py,sha256=NnJJezorLZFIt7nAW79IKiQjzjDsrsXYmAD_2stZxII,17160
374
+ supervisely/app/widgets/object_class_view/object_class_view.py,sha256=RoZgxxZn8xn7YmissX3aKw4kH5kAT4KHhijkHatIL8I,17277
375
375
  supervisely/app/widgets/object_class_view/style.css,sha256=-dhwN5KZSOh4kw9OZgFJoEXCfiRZlp4TpV2QXHesg-c,134
376
376
  supervisely/app/widgets/object_class_view/template.html,sha256=muRjZQD-XOvjdhQt5eKIVuuQGB9M6lIIBXV70PGHPqM,1542
377
377
  supervisely/app/widgets/object_classes_list/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -708,7 +708,7 @@ supervisely/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
708
708
  supervisely/io/docker_utils.py,sha256=hb_HXGM8IYB0PF-nD7NxMwaHgzaxIFxofsUzQ_RCUZI,7935
709
709
  supervisely/io/env.py,sha256=rKLLw1XQqM3s3X3k3ke9Skyy5hPK0LE_xVUBq3Qko0Q,17284
710
710
  supervisely/io/exception_handlers.py,sha256=_nAgMFeE94bCxEvWakR82hMtdOJUyn7Gc7OymMxI9WI,36484
711
- supervisely/io/fs.py,sha256=Z92fU-UC7XHf-yQq431SwB7kyFODH3OqpxsfwowkuCY,51799
711
+ supervisely/io/fs.py,sha256=-KkS-w9v_46mm2ET6y8YfTB9EHu4T2iz0-ap0SNg538,52691
712
712
  supervisely/io/fs_cache.py,sha256=985gvBGzveLcDudgz10E4EWVjP9jxdU1Pa0GFfCBoCA,6520
713
713
  supervisely/io/github_utils.py,sha256=jGmvQJ5bjtACuSFABzrxL0jJdh14SezovrHp8T-9y8g,1779
714
714
  supervisely/io/json.py,sha256=VvyqXZl22nb6_DJK3TUOPetd5xq9xwRFKumWqsGs7iI,8679
@@ -729,9 +729,9 @@ supervisely/metric/metrics_tests.py,sha256=59L-J9ihYZdX5we8z_qMPZKKUxEPGTgVJqPgJ
729
729
  supervisely/metric/pixel_accuracy.py,sha256=qjtxInOTkGDwPeLUnjBdzOrVRT3V6kGGOWjBZMqMJhw,3273
730
730
  supervisely/metric/precision_recall_metric.py,sha256=4AQCkcB84mpYQS94yJ-wkG1LBuXlQf3X_tI9f67vtR8,3426
731
731
  supervisely/metric/projects_applier.py,sha256=ORtgLQHYtNi4KYsSGaGPPWiZPexTJF9IWqX_RuLRxPk,3415
732
- supervisely/nn/__init__.py,sha256=w2gZ6pCreaTYyhZV8PZrYctqmCu_7sbJ-WGegs7mouw,570
732
+ supervisely/nn/__init__.py,sha256=bG1CTEriUn31-lqGeYF4yUO0MtfYN68zdsObmEFPFZ8,617
733
733
  supervisely/nn/experiments.py,sha256=0RFYp-LZTRny9tsyeVV58GKtPWngxTw54abfrk3052g,8742
734
- supervisely/nn/prediction_dto.py,sha256=8QQE6h_feOf3bjWtyG_PoU8FIQrr4g8PoMOyoscmqJM,1697
734
+ supervisely/nn/prediction_dto.py,sha256=oi146DJpUUBDbR-b-vYkL5WAhCZQYOGomqBDEQGbPdY,2700
735
735
  supervisely/nn/task_type.py,sha256=UJvSJ4L3I08j_e6sU6Ptu7kS5p1H09rfhfoDUSZ2iys,522
736
736
  supervisely/nn/utils.py,sha256=-Xjv5KLu8CTtyi7acqsIX1E0dDwKZPED4D6b4Z_Ln3k,1451
737
737
  supervisely/nn/artifacts/__init__.py,sha256=m7KYTMzEJnoV9wcU_0xzgLuPz69Dqp9va0fP32tohV4,576
@@ -874,7 +874,7 @@ supervisely/nn/benchmark/visualization/widgets/sidebar/__init__.py,sha256=47DEQp
874
874
  supervisely/nn/benchmark/visualization/widgets/sidebar/sidebar.py,sha256=tKPURRSF6_zZReG06MJ5a1nrRWBNtCDFKGm_eEAOp8I,2084
875
875
  supervisely/nn/benchmark/visualization/widgets/table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
876
876
  supervisely/nn/benchmark/visualization/widgets/table/table.py,sha256=atmDnF1Af6qLQBUjLhK18RMDKAYlxnsuVHMSEa5a-e8,4319
877
- supervisely/nn/inference/__init__.py,sha256=mtEci4Puu-fRXDnGn8RP47o97rv3VTE0hjbYO34Zwqg,1622
877
+ supervisely/nn/inference/__init__.py,sha256=QFukX2ip-U7263aEPCF_UCFwj6EujbMnsgrXp5Bbt8I,1623
878
878
  supervisely/nn/inference/cache.py,sha256=h-pP_7th0ana3oJ75sFfTbead3hdKUvYA8Iq2OXDx3I,31317
879
879
  supervisely/nn/inference/inference.py,sha256=WIFVWA-x5RtcIhpq_9I0XjOeQfP32V5Ef1-cL8YyNJ8,148722
880
880
  supervisely/nn/inference/session.py,sha256=jmkkxbe2kH-lEgUU6Afh62jP68dxfhF5v6OGDfLU62E,35757
@@ -1075,9 +1075,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
1075
1075
  supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
1076
1076
  supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
1077
1077
  supervisely_lib/__init__.py,sha256=7-3QnN8Zf0wj8NCr2oJmqoQWMKKPKTECvjH9pd2S5vY,159
1078
- supervisely-6.73.309.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1079
- supervisely-6.73.309.dist-info/METADATA,sha256=Ek8RYYRA_kKO3OyWLaXtIBmF7b61iOmD3h56s3gDFaI,33573
1080
- supervisely-6.73.309.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
1081
- supervisely-6.73.309.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1082
- supervisely-6.73.309.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1083
- supervisely-6.73.309.dist-info/RECORD,,
1078
+ supervisely-6.73.311.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1079
+ supervisely-6.73.311.dist-info/METADATA,sha256=UBLsxrd4D6kvEBOA4q_NYAUxbReS-fGip95b_7nRPzE,33596
1080
+ supervisely-6.73.311.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
1081
+ supervisely-6.73.311.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1082
+ supervisely-6.73.311.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1083
+ supervisely-6.73.311.dist-info/RECORD,,