orca-sdk 0.1.6__py3-none-any.whl → 0.1.8__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.
- orca_sdk/_shared/metrics.py +112 -14
- orca_sdk/_shared/metrics_test.py +204 -0
- orca_sdk/async_client.py +67 -11
- orca_sdk/classification_model.py +2 -1
- orca_sdk/client.py +67 -11
- orca_sdk/embedding_model.py +19 -12
- orca_sdk/embedding_model_test.py +1 -1
- orca_sdk/memoryset.py +1093 -231
- orca_sdk/memoryset_test.py +109 -2
- orca_sdk/regression_model.py +2 -3
- {orca_sdk-0.1.6.dist-info → orca_sdk-0.1.8.dist-info}/METADATA +3 -2
- {orca_sdk-0.1.6.dist-info → orca_sdk-0.1.8.dist-info}/RECORD +13 -13
- {orca_sdk-0.1.6.dist-info → orca_sdk-0.1.8.dist-info}/WHEEL +0 -0
orca_sdk/memoryset_test.py
CHANGED
|
@@ -46,16 +46,98 @@ def test_create_memoryset(readonly_memoryset: LabeledMemoryset, hf_dataset: Data
|
|
|
46
46
|
assert readonly_memoryset.index_params == {"n_lists": 100}
|
|
47
47
|
|
|
48
48
|
|
|
49
|
+
def test_create_empty_labeled_memoryset():
|
|
50
|
+
name = f"test_empty_labeled_{uuid4()}"
|
|
51
|
+
label_names = ["negative", "positive"]
|
|
52
|
+
try:
|
|
53
|
+
memoryset = LabeledMemoryset.create(name, label_names=label_names, description="empty labeled test")
|
|
54
|
+
assert memoryset is not None
|
|
55
|
+
assert memoryset.name == name
|
|
56
|
+
assert memoryset.length == 0
|
|
57
|
+
assert memoryset.label_names == label_names
|
|
58
|
+
assert memoryset.insertion_status is None
|
|
59
|
+
|
|
60
|
+
# inserting should work on an empty memoryset
|
|
61
|
+
memoryset.insert(dict(value="i love soup", label=1, key="k1"))
|
|
62
|
+
memoryset.refresh()
|
|
63
|
+
assert memoryset.length == 1
|
|
64
|
+
m = memoryset[0]
|
|
65
|
+
assert isinstance(m, LabeledMemory)
|
|
66
|
+
assert m.value == "i love soup"
|
|
67
|
+
assert m.label == 1
|
|
68
|
+
assert m.label_name == "positive"
|
|
69
|
+
assert m.metadata.get("key") == "k1"
|
|
70
|
+
|
|
71
|
+
# if_exists="open" should re-open the same memoryset
|
|
72
|
+
reopened = LabeledMemoryset.create(name, label_names=label_names, if_exists="open")
|
|
73
|
+
assert reopened.id == memoryset.id
|
|
74
|
+
assert len(reopened) == 1
|
|
75
|
+
|
|
76
|
+
# if_exists="open" should raise if label_names mismatch
|
|
77
|
+
with pytest.raises(ValueError, match=r"label names|requested"):
|
|
78
|
+
LabeledMemoryset.create(name, label_names=["turtles", "frogs"], if_exists="open")
|
|
79
|
+
|
|
80
|
+
# if_exists="open" should raise if embedding_model mismatch
|
|
81
|
+
with pytest.raises(ValueError, match=r"embedding_model|requested"):
|
|
82
|
+
LabeledMemoryset.create(
|
|
83
|
+
name,
|
|
84
|
+
label_names=label_names,
|
|
85
|
+
embedding_model=PretrainedEmbeddingModel.DISTILBERT,
|
|
86
|
+
if_exists="open",
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
# if_exists="error" should raise when it already exists
|
|
90
|
+
with pytest.raises(ValueError, match="already exists"):
|
|
91
|
+
LabeledMemoryset.create(name, label_names=label_names, if_exists="error")
|
|
92
|
+
finally:
|
|
93
|
+
LabeledMemoryset.drop(name, if_not_exists="ignore")
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_create_empty_scored_memoryset():
|
|
97
|
+
name = f"test_empty_scored_{uuid4()}"
|
|
98
|
+
try:
|
|
99
|
+
memoryset = ScoredMemoryset.create(name, description="empty scored test")
|
|
100
|
+
assert memoryset is not None
|
|
101
|
+
assert memoryset.name == name
|
|
102
|
+
assert memoryset.length == 0
|
|
103
|
+
assert memoryset.insertion_status is None
|
|
104
|
+
|
|
105
|
+
# inserting should work on an empty memoryset
|
|
106
|
+
memoryset.insert(dict(value="i love soup", score=0.25, key="k1", label=0))
|
|
107
|
+
memoryset.refresh()
|
|
108
|
+
assert memoryset.length == 1
|
|
109
|
+
m = memoryset[0]
|
|
110
|
+
assert isinstance(m, ScoredMemory)
|
|
111
|
+
assert m.value == "i love soup"
|
|
112
|
+
assert m.score == 0.25
|
|
113
|
+
assert m.metadata.get("key") == "k1"
|
|
114
|
+
assert m.metadata.get("label") == 0
|
|
115
|
+
|
|
116
|
+
# if_exists="open" should re-open the same memoryset
|
|
117
|
+
reopened = ScoredMemoryset.create(name, if_exists="open")
|
|
118
|
+
assert reopened.id == memoryset.id
|
|
119
|
+
|
|
120
|
+
# if_exists="open" should raise if embedding_model mismatch
|
|
121
|
+
with pytest.raises(ValueError, match=r"embedding_model|requested"):
|
|
122
|
+
ScoredMemoryset.create(name, embedding_model=PretrainedEmbeddingModel.DISTILBERT, if_exists="open")
|
|
123
|
+
|
|
124
|
+
# if_exists="error" should raise when it already exists
|
|
125
|
+
with pytest.raises(ValueError, match="already exists"):
|
|
126
|
+
ScoredMemoryset.create(name, if_exists="error")
|
|
127
|
+
finally:
|
|
128
|
+
ScoredMemoryset.drop(name, if_not_exists="ignore")
|
|
129
|
+
|
|
130
|
+
|
|
49
131
|
def test_create_memoryset_unauthenticated(unauthenticated_client, datasource):
|
|
50
132
|
with unauthenticated_client.use():
|
|
51
133
|
with pytest.raises(ValueError, match="Invalid API key"):
|
|
52
|
-
LabeledMemoryset.create("test_memoryset", datasource)
|
|
134
|
+
LabeledMemoryset.create("test_memoryset", datasource=datasource)
|
|
53
135
|
|
|
54
136
|
|
|
55
137
|
def test_create_memoryset_invalid_input(datasource):
|
|
56
138
|
# invalid name
|
|
57
139
|
with pytest.raises(ValueError, match=r"Invalid input:.*"):
|
|
58
|
-
LabeledMemoryset.create("test memoryset", datasource)
|
|
140
|
+
LabeledMemoryset.create("test memoryset", datasource=datasource)
|
|
59
141
|
|
|
60
142
|
|
|
61
143
|
def test_create_memoryset_already_exists_error(hf_dataset, label_names, readonly_memoryset):
|
|
@@ -849,6 +931,31 @@ def test_clone_memoryset(readonly_memoryset: LabeledMemoryset):
|
|
|
849
931
|
assert cloned_memoryset.insertion_status == Status.COMPLETED
|
|
850
932
|
|
|
851
933
|
|
|
934
|
+
def test_clone_empty_memoryset():
|
|
935
|
+
name = f"test_empty_to_clone_{uuid4()}"
|
|
936
|
+
cloned_name = f"test_empty_cloned_{uuid4()}"
|
|
937
|
+
label_names = ["negative", "positive"]
|
|
938
|
+
try:
|
|
939
|
+
# Create an empty memoryset
|
|
940
|
+
empty_memoryset = LabeledMemoryset.create(name, label_names=label_names, description="empty memoryset to clone")
|
|
941
|
+
assert empty_memoryset is not None
|
|
942
|
+
assert empty_memoryset.name == name
|
|
943
|
+
assert empty_memoryset.length == 0
|
|
944
|
+
assert empty_memoryset.insertion_status is None # Empty memorysets have None status
|
|
945
|
+
|
|
946
|
+
# Clone the empty memoryset
|
|
947
|
+
cloned_memoryset = empty_memoryset.clone(cloned_name, embedding_model=PretrainedEmbeddingModel.DISTILBERT)
|
|
948
|
+
assert cloned_memoryset is not None
|
|
949
|
+
assert cloned_memoryset.name == cloned_name
|
|
950
|
+
assert cloned_memoryset.length == 0 # Clone should also be empty
|
|
951
|
+
assert cloned_memoryset.embedding_model == PretrainedEmbeddingModel.DISTILBERT
|
|
952
|
+
assert cloned_memoryset.insertion_status == Status.COMPLETED
|
|
953
|
+
assert cloned_memoryset.label_names == label_names
|
|
954
|
+
finally:
|
|
955
|
+
LabeledMemoryset.drop(name, if_not_exists="ignore")
|
|
956
|
+
LabeledMemoryset.drop(cloned_name, if_not_exists="ignore")
|
|
957
|
+
|
|
958
|
+
|
|
852
959
|
@pytest.fixture(scope="function")
|
|
853
960
|
async def test_group_potential_duplicates(writable_memoryset: LabeledMemoryset):
|
|
854
961
|
writable_memoryset.insert(
|
orca_sdk/regression_model.py
CHANGED
|
@@ -11,10 +11,8 @@ from ._shared.metrics import RegressionMetrics, calculate_regression_metrics
|
|
|
11
11
|
from ._utils.common import UNSET, CreateMode, DropMode
|
|
12
12
|
from .client import (
|
|
13
13
|
OrcaClient,
|
|
14
|
-
PostRegressionModelByModelNameOrIdEvaluationParams,
|
|
15
14
|
PredictiveModelUpdate,
|
|
16
15
|
RARHeadType,
|
|
17
|
-
RegressionEvaluationRequest,
|
|
18
16
|
RegressionModelMetadata,
|
|
19
17
|
RegressionPredictionRequest,
|
|
20
18
|
)
|
|
@@ -85,12 +83,13 @@ class RegressionModel:
|
|
|
85
83
|
return isinstance(other, RegressionModel) and self.id == other.id
|
|
86
84
|
|
|
87
85
|
def __repr__(self):
|
|
86
|
+
memoryset_repr = self.memoryset.__repr__().replace("\n", "\n ")
|
|
88
87
|
return (
|
|
89
88
|
"RegressionModel({\n"
|
|
90
89
|
f" name: '{self.name}',\n"
|
|
91
90
|
f" head_type: {self.head_type},\n"
|
|
92
91
|
f" memory_lookup_count: {self.memory_lookup_count},\n"
|
|
93
|
-
f" memoryset:
|
|
92
|
+
f" memoryset: {memoryset_repr},\n"
|
|
94
93
|
"})"
|
|
95
94
|
)
|
|
96
95
|
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orca_sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: SDK for interacting with Orca Services
|
|
5
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,<3.
|
|
8
|
+
Requires-Python: >=3.11,<3.15
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
14
|
Requires-Dist: datasets (>=3.1.0,<4)
|
|
14
15
|
Requires-Dist: gradio (>=5.44.1,<6)
|
|
15
16
|
Requires-Dist: httpx (>=0.28.1)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
orca_sdk/__init__.py,sha256=xyjNwkLQXaX8A-UYgGwYDjv2btOXArT_yiMTfmW7KA8,1003
|
|
2
2
|
orca_sdk/_shared/__init__.py,sha256=3Kt0Hu3QLI5FEp9nqGTxqAm3hAoBJKcagfaGQZ-lbJQ,223
|
|
3
|
-
orca_sdk/_shared/metrics.py,sha256=
|
|
4
|
-
orca_sdk/_shared/metrics_test.py,sha256=
|
|
3
|
+
orca_sdk/_shared/metrics.py,sha256=faeL1B1ftmns1ikfKrIlU3xOn6j0iAGLNUupxvAFza8,24968
|
|
4
|
+
orca_sdk/_shared/metrics_test.py,sha256=vDIXoj8EuuLcdPJz_7EiVPgQ-FXiVT81JG30jxsg9HM,20752
|
|
5
5
|
orca_sdk/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
orca_sdk/_utils/analysis_ui.py,sha256=nT-M_YcNRCVPQzvuqYNFKnNHhYkADYBvq1GlIUePrWw,9232
|
|
7
7
|
orca_sdk/_utils/analysis_ui_style.css,sha256=q_ba_-_KtgztepHg829zLzypaxKayl7ySC1-oYDzV3k,836
|
|
@@ -17,25 +17,25 @@ orca_sdk/_utils/prediction_result_ui.py,sha256=Ur_FY7dz3oWNmtPiP3Wl3yRlEMgK8q9Uf
|
|
|
17
17
|
orca_sdk/_utils/tqdm_file_reader.py,sha256=Lw7Cg1UgNuRUoN6jjqZb-IlV00H-kbRcrZLdudr1GxE,324
|
|
18
18
|
orca_sdk/_utils/value_parser.py,sha256=c3qMABCCDQcIjn9N1orYYnlRwDW9JWdGwW_2TDZPLdI,1286
|
|
19
19
|
orca_sdk/_utils/value_parser_test.py,sha256=OybsiC-Obi32RRi9NIuwrVBRAnlyPMV1xVAaevSrb7M,1079
|
|
20
|
-
orca_sdk/async_client.py,sha256=
|
|
21
|
-
orca_sdk/classification_model.py,sha256=
|
|
20
|
+
orca_sdk/async_client.py,sha256=U7B8yLbeB5STPr3dkeTTwPkDHou2nBCJ9CLBPulrXVY,134893
|
|
21
|
+
orca_sdk/classification_model.py,sha256=jy8h5Kb4cesFqm1sat4JuxAs9uH53rUvOrlqKID-mwA,46294
|
|
22
22
|
orca_sdk/classification_model_test.py,sha256=vBn7KBb9-ACuJEdzW50n54Fn6Mh9iEYbn1197lE8-yI,36997
|
|
23
|
-
orca_sdk/client.py,sha256=
|
|
23
|
+
orca_sdk/client.py,sha256=9AaEYrfK7HZEpsSSih8mRuTUiaQ4yk2n0jU92oLusGY,133942
|
|
24
24
|
orca_sdk/conftest.py,sha256=0O1VY-SPKNAvi9fBLdY1RMnYVgZvMjP92y99bNAqqiw,12461
|
|
25
25
|
orca_sdk/credentials.py,sha256=80_1r8n5jruEvN_E629SaRrRhKvF_NhWUEZyZzPXkqQ,6620
|
|
26
26
|
orca_sdk/credentials_test.py,sha256=TLbXJMz3IlThvtSrHeLM7jRsKnrncA_ahOTpHg15Ei4,4089
|
|
27
27
|
orca_sdk/datasource.py,sha256=6QaccghiyFEUSFcqnwjIJzpgIh9Id0snJk2EqViqPsU,22356
|
|
28
28
|
orca_sdk/datasource_test.py,sha256=sCk3IcQJbDut5oN4Wf7PXhTxyMwalxMuCXJekSxy9wk,16665
|
|
29
|
-
orca_sdk/embedding_model.py,sha256=
|
|
30
|
-
orca_sdk/embedding_model_test.py,sha256
|
|
29
|
+
orca_sdk/embedding_model.py,sha256=vLGnlO9I-cN1lklNBl_LxZ8m9oK3vkegFOpvYYw8u8g,28038
|
|
30
|
+
orca_sdk/embedding_model_test.py,sha256=Lc6fZ0ifT0hh6ldkUfjwMPcP6OgN0Umlzu8XDLs7UO4,8144
|
|
31
31
|
orca_sdk/job.py,sha256=wHwVt-s7i-v8udhLGybB-90Kp4dwOLrY806bE4Tam5Q,13092
|
|
32
32
|
orca_sdk/job_test.py,sha256=nRSWxd_1UIfrj9oMVvrXjt6OBkBpddYAjb2y6P-DTUg,4327
|
|
33
|
-
orca_sdk/memoryset.py,sha256
|
|
34
|
-
orca_sdk/memoryset_test.py,sha256=
|
|
35
|
-
orca_sdk/regression_model.py,sha256=
|
|
33
|
+
orca_sdk/memoryset.py,sha256=-bTQJLzr8Fdt3LIaCEliO2jT_LxcaoaqxETY42vH0mA,156070
|
|
34
|
+
orca_sdk/memoryset_test.py,sha256=X-gAOz-BA4ByXAitI19GQsktnL2xRGcLus8AHj5mL48,51218
|
|
35
|
+
orca_sdk/regression_model.py,sha256=Ga0TZLm1Qe_bQXoP90BrMiyvZ8bsJ33Z9I6RgT86t2c,31339
|
|
36
36
|
orca_sdk/regression_model_test.py,sha256=DfWLkqxB835jjwM-sj1uxQ6Yz_ZBMnt8EHjdfnHsRnU,25103
|
|
37
37
|
orca_sdk/telemetry.py,sha256=ZyCMiyyo_SchjadWZH55TlLrC4Ucq5S316NbW26LL4Y,27834
|
|
38
38
|
orca_sdk/telemetry_test.py,sha256=eT66C5lFdNg-pQdo2I__BP7Tn5fTc9aTkVo9ZhWwhU0,5519
|
|
39
|
-
orca_sdk-0.1.
|
|
40
|
-
orca_sdk-0.1.
|
|
41
|
-
orca_sdk-0.1.
|
|
39
|
+
orca_sdk-0.1.8.dist-info/METADATA,sha256=EIDzSzxtf7D5LEuAdakH5rIy1XHqeEC1HhqsrF_oT5c,3710
|
|
40
|
+
orca_sdk-0.1.8.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
41
|
+
orca_sdk-0.1.8.dist-info/RECORD,,
|
|
File without changes
|