supervisely 6.73.440__py3-none-any.whl → 6.73.441__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.
@@ -70,7 +70,11 @@ from supervisely.api.module_api import (
70
70
  _get_single_item,
71
71
  )
72
72
  from supervisely.imaging import image as sly_image
73
- from supervisely.io.env import app_categories, increment_upload_count, add_uploaded_ids_to_env
73
+ from supervisely.io.env import (
74
+ add_uploaded_ids_to_env,
75
+ app_categories,
76
+ increment_upload_count,
77
+ )
74
78
  from supervisely.io.fs import (
75
79
  OFFSETS_PKL_BATCH_SIZE,
76
80
  OFFSETS_PKL_SUFFIX,
@@ -5519,3 +5523,66 @@ class ImageApi(RemoveableBulkModuleApi):
5519
5523
  method,
5520
5524
  {ApiField.IMAGES: images},
5521
5525
  )
5526
+
5527
+ def get_subsequent_image_ids(
5528
+ self,
5529
+ image_id: int,
5530
+ images_count: Optional[int] = None,
5531
+ job_id: Optional[int] = None,
5532
+ params: Optional[dict] = None,
5533
+ dataset_id: Optional[int] = None,
5534
+ project_id: Optional[int] = None,
5535
+ ) -> List[int]:
5536
+ """
5537
+ Get list of subsequent image IDs after the specified image ID.
5538
+
5539
+ :param image_id: Image ID in Supervisely.
5540
+ :type image_id: int
5541
+ :param images_count: Number of subsequent images to retrieve. If None, retrieves all subsequent images.
5542
+ :type images_count: int, optional
5543
+ :param job_id: Job ID to filter images. If None, does not filter by job ID.
5544
+ :type job_id: int, optional
5545
+ :param params: Additional parameters for filtering and sorting images.
5546
+ :type params: dict, optional
5547
+ :param dataset_id: Dataset ID to filter images.
5548
+ :type dataset_id: int, optional
5549
+ :param project_id: Project ID to filter images. If None, makes a request to retrieve it from the specified image.
5550
+ :type project_id: int, optional
5551
+ """
5552
+ data = {
5553
+ "recursive": True,
5554
+ "projectId": project_id,
5555
+ "filters": [],
5556
+ "sort": "name",
5557
+ "sort_order": "asc",
5558
+ }
5559
+
5560
+ if params is not None:
5561
+ data.update(params)
5562
+
5563
+ if data["projectId"] is None:
5564
+ image_info = self.get_info_by_id(image_id)
5565
+ if image_info is None:
5566
+ raise ValueError(f"Image with ID {image_id} not found.")
5567
+ project_id = self._api.dataset.get_info_by_id(image_info.dataset_id).project_id
5568
+ if job_id is not None:
5569
+ self._api.add_header("x-job-id", str(job_id))
5570
+ if dataset_id is not None:
5571
+ data["datasetId"] = dataset_id
5572
+
5573
+ image_infos = self.get_list_all_pages(
5574
+ "images.list",
5575
+ data,
5576
+ limit=None,
5577
+ return_first_response=False,
5578
+ )
5579
+ self._api.headers.pop("x-job-id", None)
5580
+ image_ids = [img_info.id for img_info in image_infos]
5581
+ if len(image_ids) == 0:
5582
+ raise ValueError("No images found with the specified criteria.")
5583
+ elif image_id not in image_ids:
5584
+ raise ValueError(f"Image with ID {image_id} not found in the specified entity.")
5585
+
5586
+ target_idx = image_ids.index(image_id) + 1
5587
+ to_idx = target_idx + images_count if images_count is not None else len(image_ids)
5588
+ return image_ids[target_idx:to_idx]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: supervisely
3
- Version: 6.73.440
3
+ Version: 6.73.441
4
4
  Summary: Supervisely Python SDK.
5
5
  Home-page: https://github.com/supervisely/supervisely
6
6
  Author: Supervisely
@@ -31,7 +31,7 @@ supervisely/api/entities_collection_api.py,sha256=Be13HsfMFLmq9XpiOfQog0Y569kbUn
31
31
  supervisely/api/file_api.py,sha256=gNXNsikocSYRojoZrVmXIqXycqXm0e320piAwaLN6JI,92978
32
32
  supervisely/api/github_api.py,sha256=NIexNjEer9H5rf5sw2LEZd7C1WR-tK4t6IZzsgeAAwQ,623
33
33
  supervisely/api/image_annotation_tool_api.py,sha256=YcUo78jRDBJYvIjrd-Y6FJAasLta54nnxhyaGyanovA,5237
34
- supervisely/api/image_api.py,sha256=5GBlY_7hYI7RXkBrwjkxGe3YkJktoytA1o9wdeHdIA4,232938
34
+ supervisely/api/image_api.py,sha256=iDxY_PupkZ5CqnFkegcyLohGohE-6PEa6iiClkLIsC8,235489
35
35
  supervisely/api/import_storage_api.py,sha256=BDCgmR0Hv6OoiRHLCVPKt3iDxSVlQp1WrnKhAK_Zl84,460
36
36
  supervisely/api/issues_api.py,sha256=BqDJXmNoTzwc3xe6_-mA7FDFC5QQ-ahGbXk_HmpkSeQ,17925
37
37
  supervisely/api/labeling_job_api.py,sha256=G2_BV_WtA2lAhfw_nAQmWmv1P-pwimD0ba9GVKoGjiA,55537
@@ -1127,9 +1127,9 @@ supervisely/worker_proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
1127
1127
  supervisely/worker_proto/worker_api_pb2.py,sha256=VQfi5JRBHs2pFCK1snec3JECgGnua3Xjqw_-b3aFxuM,59142
1128
1128
  supervisely/worker_proto/worker_api_pb2_grpc.py,sha256=3BwQXOaP9qpdi0Dt9EKG--Lm8KGN0C5AgmUfRv77_Jk,28940
1129
1129
  supervisely_lib/__init__.py,sha256=yRwzEQmVwSd6lUQoAUdBngKEOlnoQ6hA9ZcoZGJRNC4,331
1130
- supervisely-6.73.440.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1131
- supervisely-6.73.440.dist-info/METADATA,sha256=IkMNY-vAbGbAjZcZ63wwsWqEcsZQeJH2Zn3NgghAZ5g,35480
1132
- supervisely-6.73.440.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1133
- supervisely-6.73.440.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1134
- supervisely-6.73.440.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1135
- supervisely-6.73.440.dist-info/RECORD,,
1130
+ supervisely-6.73.441.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1131
+ supervisely-6.73.441.dist-info/METADATA,sha256=uhVLj_ydUAqj4wTu-LxNrR_oto1sTrPETKyV7viy49I,35480
1132
+ supervisely-6.73.441.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1133
+ supervisely-6.73.441.dist-info/entry_points.txt,sha256=U96-5Hxrp2ApRjnCoUiUhWMqijqh8zLR03sEhWtAcms,102
1134
+ supervisely-6.73.441.dist-info/top_level.txt,sha256=kcFVwb7SXtfqZifrZaSE3owHExX4gcNYe7Q2uoby084,28
1135
+ supervisely-6.73.441.dist-info/RECORD,,