orca-sdk 0.0.102__py3-none-any.whl → 0.0.104__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.
@@ -281,6 +281,7 @@ class RegressionModel:
281
281
  save_telemetry: TelemetryMode = "on",
282
282
  prompt: str | None = None,
283
283
  use_lookup_cache: bool = True,
284
+ timeout_seconds: int = 10,
284
285
  ) -> RegressionPrediction: ...
285
286
 
286
287
  @overload
@@ -292,6 +293,7 @@ class RegressionModel:
292
293
  save_telemetry: TelemetryMode = "on",
293
294
  prompt: str | None = None,
294
295
  use_lookup_cache: bool = True,
296
+ timeout_seconds: int = 10,
295
297
  ) -> list[RegressionPrediction]: ...
296
298
 
297
299
  # TODO: add filter support
@@ -303,6 +305,7 @@ class RegressionModel:
303
305
  save_telemetry: TelemetryMode = "on",
304
306
  prompt: str | None = None,
305
307
  use_lookup_cache: bool = True,
308
+ timeout_seconds: int = 10,
306
309
  ) -> RegressionPrediction | list[RegressionPrediction]:
307
310
  """
308
311
  Make predictions using the regression model.
@@ -316,13 +319,20 @@ class RegressionModel:
316
319
  environment variable is set to `"1"`. You can also pass `"sync"` or `"async"` to
317
320
  explicitly set the save mode.
318
321
  prompt: Optional prompt for instruction-tuned embedding models
322
+ use_lookup_cache: Whether to use cached lookup results for faster predictions
323
+ timeout_seconds: Timeout in seconds for the request, defaults to 10 seconds
319
324
 
320
325
  Returns:
321
326
  Single RegressionPrediction or list of RegressionPrediction objects
322
327
 
323
328
  Raises:
324
329
  ValueError: If expected_scores length doesn't match value length for batch predictions
330
+ ValueError: If timeout_seconds is not a positive integer
331
+ TimeoutError: If the request times out after the specified duration
325
332
  """
333
+ if timeout_seconds <= 0:
334
+ raise ValueError("timeout_seconds must be a positive integer")
335
+
326
336
  telemetry_on, telemetry_sync = _get_telemetry_config(save_telemetry)
327
337
  response = orca_api.POST(
328
338
  "/gpu/regression_model/{name_or_id}/prediction",
@@ -341,6 +351,7 @@ class RegressionModel:
341
351
  "prompt": prompt,
342
352
  "use_lookup_cache": use_lookup_cache,
343
353
  },
354
+ timeout=timeout_seconds,
344
355
  )
345
356
 
346
357
  if telemetry_on and any(p["prediction_id"] is None for p in response):
@@ -454,7 +465,18 @@ class RegressionModel:
454
465
  params={"model_name_or_id": self.id, "task_id": response["task_id"]},
455
466
  )
456
467
  assert res["result"] is not None
457
- return RegressionMetrics(**res["result"])
468
+ return RegressionMetrics(
469
+ coverage=res["result"].get("coverage"),
470
+ mse=res["result"].get("mse"),
471
+ rmse=res["result"].get("rmse"),
472
+ mae=res["result"].get("mae"),
473
+ r2=res["result"].get("r2"),
474
+ explained_variance=res["result"].get("explained_variance"),
475
+ loss=res["result"].get("loss"),
476
+ anomaly_score_mean=res["result"].get("anomaly_score_mean"),
477
+ anomaly_score_median=res["result"].get("anomaly_score_median"),
478
+ anomaly_score_variance=res["result"].get("anomaly_score_variance"),
479
+ )
458
480
 
459
481
  job = Job(response["task_id"], get_value)
460
482
  return job if background else job.result()
@@ -469,6 +491,12 @@ class RegressionModel:
469
491
  batch_size: int,
470
492
  prompt: str | None = None,
471
493
  ) -> RegressionMetrics:
494
+ if len(dataset) == 0:
495
+ raise ValueError("Evaluation dataset cannot be empty")
496
+
497
+ if any(x is None for x in dataset[score_column]):
498
+ raise ValueError("Evaluation dataset cannot contain None values in the score column")
499
+
472
500
  predictions = [
473
501
  prediction
474
502
  for i in range(0, len(dataset), batch_size)
@@ -165,6 +165,16 @@ def test_evaluate(
165
165
  assert -1.0 <= result.anomaly_score_variance <= 1.0
166
166
 
167
167
 
168
+ def test_evaluate_datasource_with_nones_raises_error(regression_model: RegressionModel, datasource: Datasource):
169
+ with pytest.raises(ValueError):
170
+ regression_model.evaluate(datasource, record_predictions=True, tags={"test"})
171
+
172
+
173
+ def test_evaluate_dataset_with_nones_raises_error(regression_model: RegressionModel, hf_dataset: Dataset):
174
+ with pytest.raises(ValueError):
175
+ regression_model.evaluate(hf_dataset, record_predictions=True, tags={"test"})
176
+
177
+
168
178
  def test_evaluate_with_telemetry(regression_model, eval_dataset: Dataset):
169
179
  result = regression_model.evaluate(eval_dataset, record_predictions=True, tags={"test"})
170
180
  assert result is not None
@@ -187,6 +197,13 @@ def test_predict(regression_model: RegressionModel):
187
197
  assert 0 <= predictions[1].confidence <= 1
188
198
 
189
199
 
200
+ def test_regression_prediction_has_no_score(regression_model: RegressionModel):
201
+ """Ensure optional score is None for regression predictions."""
202
+ prediction = regression_model.predict("This beach is amazing!")
203
+ assert isinstance(prediction, RegressionPrediction)
204
+ assert prediction.score is None
205
+
206
+
190
207
  def test_predict_unauthenticated(unauthenticated, regression_model: RegressionModel):
191
208
  with pytest.raises(ValueError, match="Invalid API key"):
192
209
  regression_model.predict(["This is excellent!", "This is terrible!"])
@@ -258,7 +275,7 @@ def test_predict_with_memoryset_override(regression_model: RegressionModel, hf_d
258
275
  # Create a memoryset with different scores
259
276
  inverted_scored_memoryset = ScoredMemoryset.from_hf_dataset(
260
277
  "test_memoryset_inverted_scores",
261
- hf_dataset.map(lambda x: {"score": 2.0 - x["score"]}), # Invert scores
278
+ hf_dataset.map(lambda x: {"score": (2.0 - x["score"]) if x["score"] is not None else None}), # Invert scores
262
279
  embedding_model=PretrainedEmbeddingModel.GTE_BASE,
263
280
  )
264
281
  original_predictions = regression_model.predict(["This is excellent!", "This is terrible!"])
@@ -1,24 +1,25 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: orca_sdk
3
- Version: 0.0.102
3
+ Version: 0.0.104
4
4
  Summary: SDK for interacting with Orca Services
5
- License: Apache-2.0
5
+ License-Expression: Apache-2.0
6
6
  Author: Orca DB Inc.
7
7
  Author-email: dev-rel@orcadb.ai
8
- Requires-Python: >=3.11,<4.0
9
- Classifier: License :: OSI Approved :: Apache Software License
8
+ Requires-Python: >=3.11,<3.14
10
9
  Classifier: Programming Language :: Python :: 3
11
10
  Classifier: Programming Language :: Python :: 3.11
12
11
  Classifier: Programming Language :: Python :: 3.12
13
12
  Classifier: Programming Language :: Python :: 3.13
14
- Requires-Dist: datasets (>=3.1.0,<4.0.0)
15
- Requires-Dist: gradio (==5.13.0)
16
- Requires-Dist: httpx (>=0.20.0,<0.29.0)
17
- Requires-Dist: pandas (>=2.2.3,<3.0.0)
18
- Requires-Dist: pyarrow (>=18.0.0,<19.0.0)
19
- Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
20
- Requires-Dist: scikit-learn (>=1.6.1,<2.0.0)
21
- Requires-Dist: torch (>=2.5.1,<3.0.0)
13
+ Requires-Dist: datasets (>=3.1.0,<4)
14
+ Requires-Dist: gradio (>=5.44.1,<6)
15
+ Requires-Dist: httpx (>=0.28.1)
16
+ Requires-Dist: httpx-retries (>=0.4.3,<0.5.0)
17
+ Requires-Dist: numpy (>=2.1.0,<3)
18
+ Requires-Dist: pandas (>=2.2.3,<3)
19
+ Requires-Dist: pyarrow (>=18.0.0,<19)
20
+ Requires-Dist: python-dotenv (>=1.1.0)
21
+ Requires-Dist: scikit-learn (>=1.6.1,<2)
22
+ Requires-Dist: torch (>=2.8.0,<3)
22
23
  Description-Content-Type: text/markdown
23
24
 
24
25
  <!--
@@ -45,7 +46,7 @@ You can find the documentation for all things Orca at [docs.orcadb.ai](https://d
45
46
 
46
47
  ## Installation
47
48
 
48
- Orca SDK is compatible with Python 3.10 or higher and is available on [PyPI](https://pypi.org/project/orca_sdk/). You can install it with your favorite python package manager:
49
+ OrcaSDK is compatible with Python 3.10 or higher and is available on [PyPI](https://pypi.org/project/orca_sdk/). You can install it with your favorite python package manager:
49
50
 
50
51
  - Pip: `pip install orca_sdk`
51
52
  - Conda: `conda install orca_sdk`
@@ -0,0 +1,40 @@
1
+ orca_sdk/__init__.py,sha256=bNbT7BlBGo5ZWYHBiPUz77dIc344l7czz7AsuBrdzyM,1001
2
+ orca_sdk/_shared/__init__.py,sha256=3Kt0Hu3QLI5FEp9nqGTxqAm3hAoBJKcagfaGQZ-lbJQ,223
3
+ orca_sdk/_shared/metrics.py,sha256=LEZfAUWUtUWv_WWy9F_yjGLlUQHQpmR9WxG2fbKxa7U,14419
4
+ orca_sdk/_shared/metrics_test.py,sha256=Rw1MaH37FppNsMnW8Ir9vMd8xxnZt3eo2Iypx1igtBI,9440
5
+ orca_sdk/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ orca_sdk/_utils/analysis_ui.py,sha256=nT-M_YcNRCVPQzvuqYNFKnNHhYkADYBvq1GlIUePrWw,9232
7
+ orca_sdk/_utils/analysis_ui_style.css,sha256=q_ba_-_KtgztepHg829zLzypaxKayl7ySC1-oYDzV3k,836
8
+ orca_sdk/_utils/auth.py,sha256=Yf39jucuAkrM-TbTsLm_iRgLbLEcAIRzlHrCqgy8RiM,2483
9
+ orca_sdk/_utils/auth_test.py,sha256=ygVWv1Ex53LaxIP7p2hzPHl8l9qYyBD5IGmEFJMps6s,1056
10
+ orca_sdk/_utils/common.py,sha256=wUm2pNDWytEecC5WiDWd02-yCZw3Akx0bIutG4lHsFA,805
11
+ orca_sdk/_utils/data_parsing.py,sha256=gkAwWEC8qRt3vRUObe7n7Pr0azOayNwc2yFY04WFp7E,5220
12
+ orca_sdk/_utils/data_parsing_test.py,sha256=fNEYzPzE1jt3KWE2Kj91KqIeuv-L5REHFAa98zkNGSQ,8962
13
+ orca_sdk/_utils/pagination.py,sha256=986z0QPZixrZeurJWorF6eMgnTRdDF84AagEA6qNbMw,4245
14
+ orca_sdk/_utils/pagination_test.py,sha256=BUylCrcHnwoKEBmMUzVr0lwLpA35ivcCwdBK4rMw9y8,4887
15
+ orca_sdk/_utils/prediction_result_ui.css,sha256=sqBlkRLnovb5X5EcUDdB6iGpH63nVRlTW4uAmXuD0WM,258
16
+ orca_sdk/_utils/prediction_result_ui.py,sha256=Ur_FY7dz3oWNmtPiP3Wl3yRlEMgK8q9UfT-SDu9UPxA,4805
17
+ orca_sdk/_utils/tqdm_file_reader.py,sha256=Lw7Cg1UgNuRUoN6jjqZb-IlV00H-kbRcrZLdudr1GxE,324
18
+ orca_sdk/_utils/value_parser.py,sha256=c3qMABCCDQcIjn9N1orYYnlRwDW9JWdGwW_2TDZPLdI,1286
19
+ orca_sdk/_utils/value_parser_test.py,sha256=OybsiC-Obi32RRi9NIuwrVBRAnlyPMV1xVAaevSrb7M,1079
20
+ orca_sdk/classification_model.py,sha256=A_3efuBSYF3hUxu1VbSlZNpzBF9CwuGEEtvgSPyTl9M,32696
21
+ orca_sdk/classification_model_test.py,sha256=fJx4s3fcKwQ1z-K0LsmbM9gVakWjejs595WeM2AlnR8,20405
22
+ orca_sdk/client.py,sha256=8SJBt38AzmQNJQvkmO9tx1yqlkW8kBMcNNJgRD5ZtLk,123279
23
+ orca_sdk/conftest.py,sha256=p5ae1XS0Ra9l-OuQzaUw3YyM0lfsA1GpK7grSqKnKPc,9589
24
+ orca_sdk/credentials.py,sha256=YuWipb5r1R_uPRe0nrm8mbbrfrXKFimgFOxny9bzAbI,5063
25
+ orca_sdk/credentials_test.py,sha256=ZIIZtfv507UyIIgLhnECWn6KS5NjbfHMdT31f8k0zJM,1623
26
+ orca_sdk/datasource.py,sha256=BfjutQ12cuvjMSyPTTiJVopKgDwy8PxoRkbfDM7tHXw,20262
27
+ orca_sdk/datasource_test.py,sha256=mVEYWZVpgpGo9RDXmcqlXEIZeGDPiLG4K87wS2-nJuc,11810
28
+ orca_sdk/embedding_model.py,sha256=sgOEJE-U99qU3qkKAdtZbZqNXY48wjkHqwOQ9KZLd3Q,27285
29
+ orca_sdk/embedding_model_test.py,sha256=1aELyCuIzxSxUg7Z4tYtNOd8-hV5hFb-gsZTNh712OQ,7765
30
+ orca_sdk/job.py,sha256=yHmHgm5vf2DHJlvAGgA2o1mNbKs3yoJ5RMeUpPSwl7E,12858
31
+ orca_sdk/job_test.py,sha256=nRSWxd_1UIfrj9oMVvrXjt6OBkBpddYAjb2y6P-DTUg,4327
32
+ orca_sdk/memoryset.py,sha256=L6Y1Hw6D93XHYUdz0zPcTsgmJZWcODSTLOqXFLN-T3A,85854
33
+ orca_sdk/memoryset_test.py,sha256=hmbRERbea7vEWlSLJeeZcH4FEKXIDoUyQci7KdatfiU,21400
34
+ orca_sdk/regression_model.py,sha256=YNrpp9G-kT9YL2Dl5IAZMVzyS7N4NNESWWxxjhFQJ8c,25987
35
+ orca_sdk/regression_model_test.py,sha256=J8u9xZ9Y1qmMcKRTB0wyPDABvr0C3lHHI_FaGwQOmPs,15386
36
+ orca_sdk/telemetry.py,sha256=qTEPkOlqjxsPaS-HR5Jh5ZnIvuF58aIy5OpzA-wQkAE,25713
37
+ orca_sdk/telemetry_test.py,sha256=eT66C5lFdNg-pQdo2I__BP7Tn5fTc9aTkVo9ZhWwhU0,5519
38
+ orca_sdk-0.0.104.dist-info/METADATA,sha256=rDiw0iacZ8sG8ZON99Ovdyl4E8dRZzL9fYzUTJUEjwA,3661
39
+ orca_sdk-0.0.104.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
40
+ orca_sdk-0.0.104.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.1
2
+ Generator: poetry-core 2.2.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,40 +0,0 @@
1
- orca_sdk/__init__.py,sha256=bNbT7BlBGo5ZWYHBiPUz77dIc344l7czz7AsuBrdzyM,1001
2
- orca_sdk/_shared/__init__.py,sha256=3Kt0Hu3QLI5FEp9nqGTxqAm3hAoBJKcagfaGQZ-lbJQ,223
3
- orca_sdk/_shared/metrics.py,sha256=S-0aC340vUCW0JB-x4IExo8Dt_-cPhmLs-goI0RPvEE,13490
4
- orca_sdk/_shared/metrics_test.py,sha256=3wD1e2WE_wGtWBQ0E2gML6J3LCcbQBMezxvhDM947a0,8478
5
- orca_sdk/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- orca_sdk/_utils/analysis_ui.py,sha256=nT-M_YcNRCVPQzvuqYNFKnNHhYkADYBvq1GlIUePrWw,9232
7
- orca_sdk/_utils/analysis_ui_style.css,sha256=q_ba_-_KtgztepHg829zLzypaxKayl7ySC1-oYDzV3k,836
8
- orca_sdk/_utils/auth.py,sha256=58Gaa4KA9iy7WP-hMZT4PI6x5lkpctFbbJ6Piwu1ZS4,2484
9
- orca_sdk/_utils/auth_test.py,sha256=ygVWv1Ex53LaxIP7p2hzPHl8l9qYyBD5IGmEFJMps6s,1056
10
- orca_sdk/_utils/common.py,sha256=wUm2pNDWytEecC5WiDWd02-yCZw3Akx0bIutG4lHsFA,805
11
- orca_sdk/_utils/data_parsing.py,sha256=gkAwWEC8qRt3vRUObe7n7Pr0azOayNwc2yFY04WFp7E,5220
12
- orca_sdk/_utils/data_parsing_test.py,sha256=fNEYzPzE1jt3KWE2Kj91KqIeuv-L5REHFAa98zkNGSQ,8962
13
- orca_sdk/_utils/pagination.py,sha256=986z0QPZixrZeurJWorF6eMgnTRdDF84AagEA6qNbMw,4245
14
- orca_sdk/_utils/pagination_test.py,sha256=BUylCrcHnwoKEBmMUzVr0lwLpA35ivcCwdBK4rMw9y8,4887
15
- orca_sdk/_utils/prediction_result_ui.css,sha256=sqBlkRLnovb5X5EcUDdB6iGpH63nVRlTW4uAmXuD0WM,258
16
- orca_sdk/_utils/prediction_result_ui.py,sha256=0xBXodbnh50IRoI4y4dWCWCm3YCuQddWSHYw3gwXcjQ,4633
17
- orca_sdk/_utils/tqdm_file_reader.py,sha256=Lw7Cg1UgNuRUoN6jjqZb-IlV00H-kbRcrZLdudr1GxE,324
18
- orca_sdk/_utils/value_parser.py,sha256=c3qMABCCDQcIjn9N1orYYnlRwDW9JWdGwW_2TDZPLdI,1286
19
- orca_sdk/_utils/value_parser_test.py,sha256=OybsiC-Obi32RRi9NIuwrVBRAnlyPMV1xVAaevSrb7M,1079
20
- orca_sdk/classification_model.py,sha256=SUiUgv_o3UUngpz3Le_L6DsijhjXVEB3yo84hrD1MX4,31172
21
- orca_sdk/classification_model_test.py,sha256=WganVoP-0vw1cqiVWJ2vXyGi4lwYp_hbZHultpxvFqk,19536
22
- orca_sdk/client.py,sha256=Q2tjK-CeNnX0dgK-oZPzElgEK3wkxXC1q5YK85mZcqE,120338
23
- orca_sdk/conftest.py,sha256=LHA46gDU_D0T_ogS6XOVQvGDDMD01nVZFWVcBYDConc,8885
24
- orca_sdk/credentials.py,sha256=G_jdeC-1j6oL6VtHnRHL-LxvLXnL-KH2CDCB2iQ9POY,5084
25
- orca_sdk/credentials_test.py,sha256=whUweSJIEws6C8Bku-5V31Dv9hD1mFDDW7X2cCsB6g0,1629
26
- orca_sdk/datasource.py,sha256=6wARRq-eNDJVSBABdVzn41z7s69xasTsqbozaVAsf9U,20263
27
- orca_sdk/datasource_test.py,sha256=wENPourrJvQN-uJJPaJI9EDuof6wVw3GirOhbrY4sFI,11564
28
- orca_sdk/embedding_model.py,sha256=FBuMDYKS8x6iyhSHtNO8TI2pCi6yYDycirKw3hqaGAc,26043
29
- orca_sdk/embedding_model_test.py,sha256=1aELyCuIzxSxUg7Z4tYtNOd8-hV5hFb-gsZTNh712OQ,7765
30
- orca_sdk/job.py,sha256=wWJPkkQbkNu_ylBtZN4AscU00VwWTfqlSmysRBUlivw,12787
31
- orca_sdk/job_test.py,sha256=r4zCyCuJ8eVN-O6_IUSakmSBn64rY7oBmlNtb5RNsi0,3919
32
- orca_sdk/memoryset.py,sha256=aeceFH6WpIt3hVXnpjLGr7cdj5lPy_PeT3ZxR8fdhKA,85585
33
- orca_sdk/memoryset_test.py,sha256=14WG6u_adVmm6CSn2dM5lEfQYxybwh3s9Q7RBeTuoPE,20486
34
- orca_sdk/regression_model.py,sha256=je2g1BmoPCuouv5iWqDolja90F2w2vD6TooXA8KjL7c,24552
35
- orca_sdk/regression_model_test.py,sha256=8LDhtQeh52grZQ2Xd0ju1MQvb_hwosY_ORDDE3wS2LA,14570
36
- orca_sdk/telemetry.py,sha256=qTEPkOlqjxsPaS-HR5Jh5ZnIvuF58aIy5OpzA-wQkAE,25713
37
- orca_sdk/telemetry_test.py,sha256=eT66C5lFdNg-pQdo2I__BP7Tn5fTc9aTkVo9ZhWwhU0,5519
38
- orca_sdk-0.0.102.dist-info/METADATA,sha256=dfe9GFGNjzso6R73Y-uVqyRgvFxvJZRIOsCgVvPpnn8,3665
39
- orca_sdk-0.0.102.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
40
- orca_sdk-0.0.102.dist-info/RECORD,,