scale-nucleus 0.14.7__py3-none-any.whl → 0.14.14b0__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.
@@ -18,10 +18,7 @@ from .constants import (
18
18
  THRESHOLD_KEY,
19
19
  ThresholdComparison,
20
20
  )
21
- from .data_transfer_objects.scenario_test_evaluations import (
22
- EvaluationResult,
23
- GetEvalHistory,
24
- )
21
+ from .data_transfer_objects.scenario_test_evaluations import EvaluationResult
25
22
  from .data_transfer_objects.scenario_test_metric import AddScenarioTestFunction
26
23
  from .eval_functions.available_eval_functions import (
27
24
  EvalFunction,
@@ -52,13 +49,24 @@ class ScenarioTest:
52
49
  slice_id: str = field(init=False)
53
50
  baseline_model_id: Optional[str] = None
54
51
 
55
- def __post_init__(self):
52
+ @classmethod
53
+ def from_id(cls, unit_test_id: str, connection: Connection):
56
54
  # TODO(gunnar): Remove this pattern. It's too slow. We should get all the info required in one call
57
- response = self.connection.get(
58
- f"validate/scenario_test/{self.id}/info",
55
+ response = connection.get(
56
+ f"validate/scenario_test/{unit_test_id}/info",
59
57
  )
60
- self.name = response[NAME_KEY]
61
- self.slice_id = response[SLICE_ID_KEY]
58
+ instance = cls(unit_test_id, connection)
59
+ instance.name = response[NAME_KEY]
60
+ instance.slice_id = response[SLICE_ID_KEY]
61
+ return instance
62
+
63
+ @classmethod
64
+ def from_response(cls, response, connection: Connection):
65
+ instance = cls(response["id"], connection)
66
+ instance.name = response[NAME_KEY]
67
+ instance.slice_id = response[SLICE_ID_KEY]
68
+ instance.baseline_model_id = response.get("baseline_model_id", None)
69
+ return instance
62
70
 
63
71
  def add_eval_function(
64
72
  self, eval_function: EvalFunction
@@ -148,13 +156,13 @@ class ScenarioTest:
148
156
  A list of :class:`ScenarioTestEvaluation` objects.
149
157
  """
150
158
  response = self.connection.get(
151
- f"validate/scenario_test/{self.id}/eval_history",
159
+ f"validate/scenario_test/{self.id}/eval_history/details",
152
160
  )
153
- eval_history = GetEvalHistory.parse_obj(response)
154
- return [
155
- ScenarioTestEvaluation(evaluation.id, self.connection)
156
- for evaluation in eval_history.evaluations
161
+ evaluations = [
162
+ ScenarioTestEvaluation.from_request(eval_payload, self.connection)
163
+ for eval_payload in response
157
164
  ]
165
+ return evaluations
158
166
 
159
167
  def get_items(self) -> List[DatasetItem]:
160
168
  response = self.connection.get(
@@ -1,5 +1,5 @@
1
1
  """Data types for Scenario Test Evaluation results."""
2
- from dataclasses import InitVar, dataclass, field
2
+ from dataclasses import dataclass, field
3
3
  from enum import Enum
4
4
  from typing import List, Optional
5
5
 
@@ -77,31 +77,30 @@ class ScenarioTestEvaluation:
77
77
  status: ScenarioTestEvaluationStatus = field(init=False)
78
78
  result: Optional[float] = field(init=False)
79
79
  passed: bool = field(init=False)
80
- item_evals: List[ScenarioTestItemEvaluation] = field(init=False)
81
- connection: InitVar[Connection]
82
-
83
- def __post_init__(self, connection: Connection):
84
- # TODO(gunnar): Having the function call /info on every construction is too slow. The original
85
- # endpoint should rather return the necessary human-readable information
86
- response = connection.make_request(
80
+ connection: Connection = field(init=False, repr=False)
81
+
82
+ @classmethod
83
+ def from_request(cls, response, connection):
84
+ instance = cls(response["id"])
85
+ instance.connection = connection
86
+
87
+ instance.scenario_test_id = response[SCENARIO_TEST_ID_KEY]
88
+ instance.eval_function_id = response[EVAL_FUNCTION_ID_KEY]
89
+ instance.model_id = response[MODEL_ID_KEY]
90
+ instance.status = ScenarioTestEvaluationStatus(response[STATUS_KEY])
91
+ instance.result = try_convert_float(response[RESULT_KEY])
92
+ instance.passed = bool(response[PASS_KEY])
93
+ return instance
94
+
95
+ @property
96
+ def item_evals(self) -> List[ScenarioTestItemEvaluation]:
97
+ response = self.connection.make_request(
87
98
  {},
88
99
  f"validate/eval/{self.id}/info",
89
100
  requests_command=requests.get,
90
101
  )
91
- eval_response = response[SCENARIO_TEST_EVAL_KEY]
92
102
  items_response = response[ITEM_EVAL_KEY]
93
-
94
- self.scenario_test_id: str = eval_response[SCENARIO_TEST_ID_KEY]
95
- self.eval_function_id: str = eval_response[EVAL_FUNCTION_ID_KEY]
96
- self.model_id: str = eval_response[MODEL_ID_KEY]
97
- self.status: ScenarioTestEvaluationStatus = (
98
- ScenarioTestEvaluationStatus(eval_response[STATUS_KEY])
99
- )
100
- self.result: Optional[float] = try_convert_float(
101
- eval_response[RESULT_KEY]
102
- )
103
- self.passed: bool = bool(eval_response[PASS_KEY])
104
- self.item_evals: List[ScenarioTestItemEvaluation] = [
103
+ items = [
105
104
  ScenarioTestItemEvaluation(
106
105
  evaluation_id=res[EVALUATION_ID_KEY],
107
106
  scenario_test_id=res[SCENARIO_TEST_ID_KEY],
@@ -112,3 +111,4 @@ class ScenarioTestEvaluation:
112
111
  )
113
112
  for res in items_response
114
113
  ]
114
+ return items
nucleus/validate/utils.py CHANGED
@@ -4,5 +4,5 @@ from typing import Optional
4
4
  def try_convert_float(float_str: str) -> Optional[float]:
5
5
  try:
6
6
  return float(float_str)
7
- except ValueError:
7
+ except (ValueError, TypeError):
8
8
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scale-nucleus
3
- Version: 0.14.7
3
+ Version: 0.14.14b0
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
@@ -9,6 +9,7 @@ Author-email: nucleusapi@scaleapi.com
9
9
  Requires-Python: >=3.6.2,<4.0
10
10
  Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
12
13
  Classifier: Programming Language :: Python :: 3.7
13
14
  Classifier: Programming Language :: Python :: 3.8
14
15
  Classifier: Programming Language :: Python :: 3.9
@@ -26,7 +27,6 @@ Requires-Dist: pydantic (>=1.8.2,<2.0.0)
26
27
  Requires-Dist: rasterio (>=1.2.0); extra == "metrics"
27
28
  Requires-Dist: requests (>=2.23.0,<3.0.0)
28
29
  Requires-Dist: rich (>=10.15.2)
29
- Requires-Dist: s3fs (>=2021.9.0); extra == "metrics"
30
30
  Requires-Dist: scale-launch (>=0.1.0); (python_version >= "3.7" and python_version < "4.0") and (extra == "launch")
31
31
  Requires-Dist: scikit-learn (>=0.24.0)
32
32
  Requires-Dist: scipy (>=1.4.1)
@@ -8,32 +8,32 @@ cli/jobs.py,sha256=v-ArlqUyK3iPose2ihlzk7rq2W3uf5gOKmN0npNULKU,1176
8
8
  cli/models.py,sha256=IWJyL9EJZXlpul0aW2qRgZG9rhFO59M8Ux-u-yMofzI,1039
9
9
  cli/nu.py,sha256=0f71zPq4fe3I1ghhiSRQi39ENhAzoLPdhz_vh8vxSI8,2074
10
10
  cli/reference.py,sha256=RuHVhmGTZNe0MfwpL96YjJdaH0OJzg98rz4xeIu4hJU,256
11
- cli/slices.py,sha256=p7UGiUgvYKqi5iJpYSkoX3H-1GGoG5EQoOSObtkjYjg,2106
11
+ cli/slices.py,sha256=1qAeX3-50-aBEDQxz0M8REwlTg9taLExS0a4PA3r3-U,1520
12
12
  cli/tests.py,sha256=q90eo3l8yn0VxRwjWB821E709y_9xWqvFdEgPwV8vTY,4508
13
- nucleus/__init__.py,sha256=Yi5BTrtwBo9vMP_E2bkKpr8O7HZ7p5YU-Wb2Tpzr11Y,39694
14
- nucleus/annotation.py,sha256=i96YEnRXQmqIvNS7Orz4frjMn-u4o1dTw0bHqQn9A8g,36144
13
+ nucleus/__init__.py,sha256=P9mw2bqIjffa8Ys7RlB-KznxsouPDwrRcKcrdvku5jQ,39897
14
+ nucleus/annotation.py,sha256=yAmK734BhhuJitdKvoV8FGILKCUjc72d_fEtwjjyCV4,36189
15
15
  nucleus/annotation_uploader.py,sha256=v9mlvKs1nV3LzZC5rL_gu8O366SSbvKzn9fvpkpRdpc,9477
16
16
  nucleus/async_utils.py,sha256=RhHymn-GvP9cEs-nerbjrUmGxwqvWES4yWmf_9nr-qs,6709
17
17
  nucleus/autocurate.py,sha256=Juw8V5CYKp3T-15u1QZOWaT6_fhXqGITf80eqtBNIqY,1074
18
18
  nucleus/camera_params.py,sha256=fl17aaSAZDAJIWo6F2HFvM6HKGcQh9fXvo4t3RzGMc4,3726
19
- nucleus/connection.py,sha256=GCgsNESj-SRron9H9GP7lHexmsJ31nir3DF958s_qng,2651
20
- nucleus/constants.py,sha256=dQVP3tcGsFrjMKJvdIO45OX7zw5JkieHvGyJrGCOZzs,4212
19
+ nucleus/connection.py,sha256=xl6Dz8io57GOn02Fbg5btnlMslEgNbijpht7JekZoD4,2862
20
+ nucleus/constants.py,sha256=ohLj4T9EjWYoh9zeVs9MmNmuKGjVrPkNJuNMUf1fH6g,4245
21
21
  nucleus/data_transfer_object/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  nucleus/data_transfer_object/dataset_details.py,sha256=1YGvfKkPSqDrXK_y5mBXyRThY07tU-nwOCYTkYCSl6k,214
23
23
  nucleus/data_transfer_object/dataset_info.py,sha256=5P_gpvAyaqXxj2ZQuzLkGN2XROaN9Me56OLybCmO3R4,940
24
24
  nucleus/data_transfer_object/dataset_size.py,sha256=oe-dXaMLpsQRDcJQRZ9Ja8JTagYz4dviZuTognEylp0,111
25
25
  nucleus/data_transfer_object/scenes_list.py,sha256=iTHE6vA47bRB6ciyEU4LArUXEXco4ArnGvZTGTeK8xs,432
26
- nucleus/dataset.py,sha256=4QOws_1map1B-dByhp1ZvOYn9Qp-L3vr49Cn3KeWD4s,67076
27
- nucleus/dataset_item.py,sha256=-hZF8oYCje5bV99wjJFJDStTLr_9hzYCEMtpj_vSV2w,8779
26
+ nucleus/dataset.py,sha256=w1BF3Qwg7jA_ymEU3QLx37dzXP2AZYVsneXdfh8ezHw,70455
27
+ nucleus/dataset_item.py,sha256=NbJMHjaLIjsdF6IfsYgJgYibvNWn7BiV9dWmDX7QWeI,9148
28
28
  nucleus/dataset_item_uploader.py,sha256=oH4Ly6sIQYrkdaOqrcbU_l-n5wQnspMefpJvgdBYAUM,6938
29
29
  nucleus/deprecation_warning.py,sha256=5C9dVusR5UkUQnW2MrRkIXCfbc8ULc7xOaB134agNKk,976
30
30
  nucleus/errors.py,sha256=IAONLQq-vsFVZSCY3zWzEOyRjkiOpJ3hUquS7_jNAz8,2870
31
- nucleus/job.py,sha256=qB2kUHXrUWI6ZwctQkSYqSia1OXTcMXw6_V-610D-J8,4745
31
+ nucleus/job.py,sha256=juxzn3xB8HwGDxolANX8Ryo4xM5QCOCaOembCdxyFaQ,4745
32
32
  nucleus/logger.py,sha256=acoFtszu4T-fj_Op4rwlXNNaLPrQ8Kw2ofaYusBHO8I,208
33
33
  nucleus/metadata_manager.py,sha256=gO1jChfP7sAokr-llYv3D86eV_VPumMWfOtn6GMw-Ew,1890
34
34
  nucleus/metrics/__init__.py,sha256=bve48T1quN_vh3zhpW1nbv8ZfFBBiT9k6d8cipu-1k0,894
35
35
  nucleus/metrics/base.py,sha256=cwBE1xm-2SN6ULfRwajLwNrC8oaLU4cGxP686EP4KE8,7757
36
- nucleus/metrics/categorization_metrics.py,sha256=3pcpbzNfQrwB54cwNeZIVZeVy-ckX8xRloeujntpsjo,11790
36
+ nucleus/metrics/categorization_metrics.py,sha256=sGM7Zyz1DLSUEFbaqBFEf4oNXlWvc465dMCFVI5LhcI,11934
37
37
  nucleus/metrics/cuboid_metrics.py,sha256=ZjlFNa8kknx2mJzEiJ8ZvTlvOSW0BjZzzfJiv3WHm-g,12461
38
38
  nucleus/metrics/cuboid_utils.py,sha256=J_HOd5c9m77naHhiS0xhbUbRwTOicN9RpGrf97ODtAY,11190
39
39
  nucleus/metrics/custom_types.py,sha256=6oWmlajz229crwEm2ImvC5vOhBXjt-HhVqj41D5uSwk,485
@@ -43,30 +43,30 @@ nucleus/metrics/filters.py,sha256=SegJ2UdYSSnRJpoiqguVpGrDSGfyCK7OiREziunZw54,11
43
43
  nucleus/metrics/metric_utils.py,sha256=1EJf3ezTQAzh4mgECrxWyiUHzUjDqA_5hV9eqZISxRU,971
44
44
  nucleus/metrics/polygon_metrics.py,sha256=mrsGc7714B944NDhLZ6pa0FbyWltuJEkd6ZVccLibdU,29277
45
45
  nucleus/metrics/polygon_utils.py,sha256=z1ERZepMwrmEgUz1tSBfCy9z07uqsoLZFNJ41Bl-sX4,12371
46
- nucleus/metrics/segmentation_loader.py,sha256=ayION_O2iY38LHclN475JUqjMXJvaKlkphHLU4m4wsw,799
47
- nucleus/metrics/segmentation_metrics.py,sha256=SrcH-FYGHzlmHIDowqJyJbdJeU508BjZne8O9FnLNvw,29831
48
- nucleus/metrics/segmentation_to_poly_metrics.py,sha256=fmPZK_aZaV4piuvv3cea8pD7Ku4vuSOnEoUKSNg7Zec,29248
49
- nucleus/metrics/segmentation_utils.py,sha256=oq1tNKK-RRiSsA0EyrZOmpx5z94HBXbTUkMxcG1zq7s,10085
50
- nucleus/model.py,sha256=yzEGadeXtwguhOqnhWnnujbIaCUSUGTBlqnY_rzf4_w,8604
51
- nucleus/model_run.py,sha256=BPBrTp8M1Qgqw11SS_H5FArBZNqz5Gj6i7T13hZceHQ,9538
46
+ nucleus/metrics/segmentation_loader.py,sha256=GEKbdp71hIiyBwrZm7qkLJ1fFH_FOsDGYTSuZ_9GPYA,790
47
+ nucleus/metrics/segmentation_metrics.py,sha256=6PFp4ESPx3gUWqxF7HOtDm44_j_Sdp2lTi1P0bkEFas,29522
48
+ nucleus/metrics/segmentation_to_poly_metrics.py,sha256=1C1In5Kz2CAgVy39GCF3zBBT_OBybHnbL-jlCsQYrZc,29087
49
+ nucleus/metrics/segmentation_utils.py,sha256=uvypa95DX66sDIHHdE5xUjsuePTFJWePiq2OceolW3I,10075
50
+ nucleus/model.py,sha256=vbBgq0ZJEWL-1-w_rWMZiYmH5N3rDX_pY2Gvlg_QwmQ,8738
51
+ nucleus/model_run.py,sha256=Epbr-M2m0qOZY2AR9r-tzX6Au9i9bbk2Vwb5mw27i0Q,9541
52
52
  nucleus/package_not_installed.py,sha256=1ae0aqKAM3KrB0C-5MuPPXoz9tLWJUKtP1UZ-vw9Zik,1117
53
53
  nucleus/payload_constructor.py,sha256=-x4UYu_NHTaWfbrhEx9USUKH2q6wZzelh1gGG_-2nQM,4442
54
- nucleus/prediction.py,sha256=y2z3s8UuvpXVkOpkjO2rGzaCQRnacNNNjPlDJqqebHY,25911
54
+ nucleus/prediction.py,sha256=D91YVjHvtGFmVuJjUS1LfxeJiJcMORJUtfhQP3FFxaY,25921
55
55
  nucleus/pydantic_base.py,sha256=EQER8_XqG4B-RC4aggUfukJa6f5OZ7ej92AsDWWIWPc,682
56
56
  nucleus/quaternion.py,sha256=TAnwj4arQXoTeofFgZMdZsCyxAMnu23N6to0F1WFNwk,1111
57
57
  nucleus/retry_strategy.py,sha256=daKZqjZYCh87WtXoVUuR9BZu2TTE-CtOFEYZ-d6xVMY,312
58
58
  nucleus/scene.py,sha256=4mQLstDi9GNRP7EGr4nLcHN9ALIldgR6Yw4hrBaULVk,26149
59
- nucleus/slice.py,sha256=MNVRrxL3-E_tw1G0DyKWRd5CDW2jEZOaDJOfOiRrWxY,15451
59
+ nucleus/slice.py,sha256=2MR6dbFjEHc7vji45KdFI-4BKWgTWBoCN4TssvKnXgE,18767
60
60
  nucleus/upload_response.py,sha256=wR_pfZCBju1vGiGqbVgk8zhM6GhD3ebYxyGBm8y0GvY,3287
61
61
  nucleus/url_utils.py,sha256=EZ3vy1FYTGvXRVNyq43Wif-ypS8LFoDrYMYJre_DVuQ,790
62
62
  nucleus/utils.py,sha256=fxISxhIPbAeBBRs25YG_kRnRfHKxpisXv-AF9uHZGCA,12653
63
63
  nucleus/validate/__init__.py,sha256=de4m8RfJXSMBD8lF_mR0NAedP4Y5F03jHqNU0-XHSjI,773
64
- nucleus/validate/client.py,sha256=SUCiB01OlYymuvYc0ffg6_rJ_5Yp4kkY17FrnDkvCbA,7703
64
+ nucleus/validate/client.py,sha256=0QcF2u1g513NjvR_CID0M6zM0jqRthSqBY9zla6LBZg,7786
65
65
  nucleus/validate/constants.py,sha256=aHCX56E-yqsbIzeLbstaOhPqZOEXQptn4-zr74NDgzw,663
66
66
  nucleus/validate/data_transfer_objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  nucleus/validate/data_transfer_objects/eval_function.py,sha256=5scyeLfQhTWdNWrdybUEf5MIJJ0r9xdyfUO-aeYq7cQ,3828
68
68
  nucleus/validate/data_transfer_objects/scenario_test.py,sha256=6gFGzBkl9y0Z5yNI_QtAC_TDPbLWqG0_pPAteDF0vnw,574
69
- nucleus/validate/data_transfer_objects/scenario_test_evaluations.py,sha256=nMEG1tQ0KaCujE0RSDhJ8zLlWrFyFO0TCBPpCO4xzGc,613
69
+ nucleus/validate/data_transfer_objects/scenario_test_evaluations.py,sha256=MsQQp8ls5g91MzsyD6-n9KdBqV_rKrjOe3wfCbfSDoA,491
70
70
  nucleus/validate/data_transfer_objects/scenario_test_metric.py,sha256=jXGwPx0Y99ga0RfzwGMCG3_06NkiFsp0yHxUuGFJ2EI,208
71
71
  nucleus/validate/errors.py,sha256=UOI4oPeVzNLEmibWayfMdCMFNZvgsq-VRG42vC1cT_w,110
72
72
  nucleus/validate/eval_functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -74,12 +74,12 @@ nucleus/validate/eval_functions/available_eval_functions.py,sha256=Uv3SeXLocbvAv
74
74
  nucleus/validate/eval_functions/base_eval_function.py,sha256=bMwK1oTiVmQOJZ07S6p7cr5ZHaHlt6idMZY7yV-9fjw,2207
75
75
  nucleus/validate/eval_functions/config_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
76
  nucleus/validate/eval_functions/config_classes/segmentation.py,sha256=Hk6yDYDwdKgjamfQJEOpyzQLP4zMqcz_I2cLnDBXtz0,13409
77
- nucleus/validate/scenario_test.py,sha256=QfyUaqFDAz6T6xs77jmf-HOjwPQhRNs262nI_wdnjEE,8184
78
- nucleus/validate/scenario_test_evaluation.py,sha256=IoqyIok2Kbug2AEmWzvmBKne14gvnFPeD9bt5CE4Wpk,4316
77
+ nucleus/validate/scenario_test.py,sha256=1FQanSrvh72TPiJwSAdNRkb6gfNPyauVo-1s8apiZRo,8597
78
+ nucleus/validate/scenario_test_evaluation.py,sha256=Q0WzaEE9uUbPVc4EHlCoKjhJcqMNt4QbyiiJx12VOR0,4075
79
79
  nucleus/validate/scenario_test_metric.py,sha256=AhVFOB1ULwBqlZ2X_Au1TXy4iQELljtzR4ZpeLB35So,1209
80
- nucleus/validate/utils.py,sha256=yq5LCQJ1smoQWEGnIFltNTq2skrRtBWp6iK3E_u2lj0,172
81
- scale_nucleus-0.14.7.dist-info/entry_points.txt,sha256=fmqEzh6NZQyg9eFMILnWabKT8OWQTMSCdDzMiVq2zYs,32
82
- scale_nucleus-0.14.7.dist-info/LICENSE,sha256=jaTGyQSQIZeWMo5iyYqgbAYHR9Bdy7nOzgE-Up3m_-g,1075
83
- scale_nucleus-0.14.7.dist-info/WHEEL,sha256=DRf8A_Psd1SF2kVqTQOOFU1Xzl3-A2qljAxBMTOusUs,83
84
- scale_nucleus-0.14.7.dist-info/METADATA,sha256=r_2qAIBFrBGaQwg6UwwBMdYxfAjalqyt7Go59C20SMg,7734
85
- scale_nucleus-0.14.7.dist-info/RECORD,,
80
+ nucleus/validate/utils.py,sha256=VjdIJj9Pii4z4L6xbvClAc7ra_J7cX0vWB_J2X6yrGE,185
81
+ scale_nucleus-0.14.14b0.dist-info/entry_points.txt,sha256=fmqEzh6NZQyg9eFMILnWabKT8OWQTMSCdDzMiVq2zYs,32
82
+ scale_nucleus-0.14.14b0.dist-info/LICENSE,sha256=jaTGyQSQIZeWMo5iyYqgbAYHR9Bdy7nOzgE-Up3m_-g,1075
83
+ scale_nucleus-0.14.14b0.dist-info/WHEEL,sha256=DA86_h4QwwzGeRoz62o1svYt5kGEXpoUTuTtwzoTb30,83
84
+ scale_nucleus-0.14.14b0.dist-info/METADATA,sha256=KYRHazVKZ2BXxUYGGCpTbpKrpIOtJtZ8xT4hmXpkIGE,7735
85
+ scale_nucleus-0.14.14b0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry 1.0.6
2
+ Generator: poetry 1.0.8
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any