scale-nucleus 0.17.5__tar.gz → 0.17.6b0__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.
Files changed (91) hide show
  1. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/PKG-INFO +2 -1
  2. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/dataset.py +66 -5
  3. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/pyproject.toml +1 -1
  4. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/LICENSE +0 -0
  5. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/README.md +0 -0
  6. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/client.py +0 -0
  7. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/datasets.py +0 -0
  8. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/helpers/__init__.py +0 -0
  9. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/helpers/nucleus_url.py +0 -0
  10. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/helpers/web_helper.py +0 -0
  11. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/install_completion.py +0 -0
  12. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/jobs.py +0 -0
  13. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/models.py +0 -0
  14. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/nu.py +0 -0
  15. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/reference.py +0 -0
  16. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/slices.py +0 -0
  17. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/cli/tests.py +0 -0
  18. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/__init__.py +0 -0
  19. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/annotation.py +0 -0
  20. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/annotation_uploader.py +0 -0
  21. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/async_job.py +0 -0
  22. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/async_utils.py +0 -0
  23. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/autocurate.py +0 -0
  24. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/camera_params.py +0 -0
  25. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/chip_utils.py +0 -0
  26. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/connection.py +0 -0
  27. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/constants.py +0 -0
  28. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/__init__.py +0 -0
  29. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_details.py +0 -0
  30. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_info.py +0 -0
  31. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/dataset_size.py +0 -0
  32. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/job_status.py +0 -0
  33. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/data_transfer_object/scenes_list.py +0 -0
  34. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/dataset_item.py +0 -0
  35. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/dataset_item_uploader.py +0 -0
  36. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/deprecation_warning.py +0 -0
  37. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/embedding_index.py +0 -0
  38. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/errors.py +0 -0
  39. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/evaluation_match.py +0 -0
  40. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/job.py +0 -0
  41. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/logger.py +0 -0
  42. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metadata_manager.py +0 -0
  43. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/__init__.py +0 -0
  44. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/base.py +0 -0
  45. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/categorization_metrics.py +0 -0
  46. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/cuboid_metrics.py +0 -0
  47. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/cuboid_utils.py +0 -0
  48. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/custom_types.py +0 -0
  49. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/errors.py +0 -0
  50. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/filtering.py +0 -0
  51. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/filters.py +0 -0
  52. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/metric_utils.py +0 -0
  53. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/polygon_metrics.py +0 -0
  54. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/polygon_utils.py +0 -0
  55. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_loader.py +0 -0
  56. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_metrics.py +0 -0
  57. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_to_poly_metrics.py +0 -0
  58. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/metrics/segmentation_utils.py +0 -0
  59. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/model.py +0 -0
  60. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/model_run.py +0 -0
  61. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/package_not_installed.py +0 -0
  62. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/payload_constructor.py +0 -0
  63. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/prediction.py +0 -0
  64. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/pydantic_base.py +0 -0
  65. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/quaternion.py +0 -0
  66. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/retry_strategy.py +0 -0
  67. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/scene.py +0 -0
  68. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/slice.py +0 -0
  69. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/test_launch_integration.py +0 -0
  70. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/track.py +0 -0
  71. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/upload_response.py +0 -0
  72. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/url_utils.py +0 -0
  73. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/utils.py +0 -0
  74. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/__init__.py +0 -0
  75. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/client.py +0 -0
  76. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/constants.py +0 -0
  77. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/__init__.py +0 -0
  78. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/eval_function.py +0 -0
  79. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/scenario_test.py +0 -0
  80. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/scenario_test_evaluations.py +0 -0
  81. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/data_transfer_objects/scenario_test_metric.py +0 -0
  82. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/errors.py +0 -0
  83. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/__init__.py +0 -0
  84. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/available_eval_functions.py +0 -0
  85. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/base_eval_function.py +0 -0
  86. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/config_classes/__init__.py +0 -0
  87. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/eval_functions/config_classes/segmentation.py +0 -0
  88. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/scenario_test.py +0 -0
  89. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/scenario_test_evaluation.py +0 -0
  90. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/scenario_test_metric.py +0 -0
  91. {scale_nucleus-0.17.5 → scale_nucleus-0.17.6b0}/nucleus/validate/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scale-nucleus
3
- Version: 0.17.5
3
+ Version: 0.17.6b0
4
4
  Summary: The official Python client library for Nucleus, the Data Platform for AI
5
5
  Home-page: https://scale.com/nucleus
6
6
  License: MIT
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.8
14
14
  Classifier: Programming Language :: Python :: 3.9
15
15
  Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
17
18
  Provides-Extra: launch
18
19
  Provides-Extra: metrics
19
20
  Requires-Dist: Pillow (>=7.1.2)
@@ -997,9 +997,9 @@ class Dataset:
997
997
  raise Exception("Must provide at least one list of internal IDs")
998
998
  payload = {
999
999
  NAME_KEY: name,
1000
- DATASET_ITEM_IDS_KEY: dataset_item_ids
1001
- if dataset_item_ids
1002
- else None,
1000
+ DATASET_ITEM_IDS_KEY: (
1001
+ dataset_item_ids if dataset_item_ids else None
1002
+ ),
1003
1003
  SCENE_IDS_KEY: scene_ids if scene_ids else None,
1004
1004
  OBJECT_IDS_KEY: [*(annotation_ids or []), *(prediction_ids or [])]
1005
1005
  or None,
@@ -1449,6 +1449,67 @@ class Dataset:
1449
1449
  )
1450
1450
  return convert_export_payload(api_payload[EXPORTED_ROWS])
1451
1451
 
1452
+ def scene_and_annotation_generator(self, page_size: int = 10):
1453
+ """Provides a generator of all Scenes and Annotations in the dataset grouped by scene.
1454
+
1455
+ Args:
1456
+ page_size: Number of scenes to fetch per page. Default is 10.
1457
+
1458
+ Returns:
1459
+ Generator where each element is a nested dict containing scene and annotation information of the dataset structured as a JSON.
1460
+
1461
+ Track grouping is slightly more complicated and is done in the following order:
1462
+ 1. If track_id is defined in the annotations table, use it as the track id.
1463
+ 2. If track_reference_id is defined in the metadata field of the annotations table, use it as the track id.
1464
+ 3. If track_id is defined in the metadata field of the annotations table, use it as the track id.
1465
+ 4. If track_id is not defined and annotation_id is defined, use annotation_id as track id.
1466
+ 5. If annotation_id grouping is unsuccessful such that the annotation id is unique across all frames in the scene for all annotations, throw an error that the annotation format is incompatible.
1467
+ 6. If there is no track or annotation id, throw an error that the annotation format is incompatible.
1468
+
1469
+ If you use the generator and discover that no scenes were generated, check the response error message for more information. It is likely that the annotations are not in the correct format.
1470
+
1471
+ ::
1472
+ Iterable[{
1473
+ "scene": {
1474
+ "id": str,
1475
+ "reference_id": str,
1476
+ "metadata": Dict[str, Any]
1477
+ "type": str,
1478
+ "fileLocation": str,
1479
+ }
1480
+ "annotations": {
1481
+ "{trackId}": {
1482
+ "label": str,
1483
+ "name": str,
1484
+ "frames": List[{
1485
+ "left": int,
1486
+ "top": int,
1487
+ "width": int,
1488
+ "height": int,
1489
+ "key": str, # frame key
1490
+ "metadata": Dict[str, Any]
1491
+ }]
1492
+ }
1493
+ }
1494
+ }]
1495
+
1496
+ This is similar to how the Scale API returns task data
1497
+ """
1498
+
1499
+ if page_size > 30:
1500
+ raise ValueError("Page size must be less than or equal to 30")
1501
+
1502
+ endpoint_name = "exportForTrainingByScene"
1503
+ json_generator = paginate_generator(
1504
+ client=self._client,
1505
+ endpoint=f"dataset/{self.id}/{endpoint_name}",
1506
+ result_key=EXPORT_FOR_TRAINING_KEY,
1507
+ page_size=page_size,
1508
+ )
1509
+
1510
+ for data in json_generator:
1511
+ yield data
1512
+
1452
1513
  def items_and_annotation_generator(
1453
1514
  self,
1454
1515
  query: Optional[str] = None,
@@ -2310,9 +2371,9 @@ class Dataset:
2310
2371
  pointcloud_ref_id: str,
2311
2372
  predictions_s3_path: str,
2312
2373
  ):
2313
- """Upload Lidar Semantic Segmentation predictions for a given pointcloud.
2374
+ """Upload Lidar Semantic Segmentation predictions for a given point-cloud.
2314
2375
 
2315
- Assuming a pointcloud with only 4 points (three labeled as Car, one labeled as Person),
2376
+ Assuming a point-cloud with only 4 points (three labeled as Car, one labeled as Person),
2316
2377
  the contents of the predictions s3 object should be formatted as such:
2317
2378
 
2318
2379
  .. code-block:: json
@@ -25,7 +25,7 @@ ignore = ["E501", "E741", "E731", "F401"] # Easy ignore for getting it running
25
25
 
26
26
  [tool.poetry]
27
27
  name = "scale-nucleus"
28
- version = "0.17.5"
28
+ version = "0.17.6b0"
29
29
  description = "The official Python client library for Nucleus, the Data Platform for AI"
30
30
  license = "MIT"
31
31
  authors = ["Scale AI Nucleus Team <nucleusapi@scaleapi.com>"]
File without changes