Skip to content

Commit 06c66b6

Browse files
Merge pull request #64 from aimonlabs/custom-metrics
Add Custom metrics and improve Datasets UX
2 parents e00acdd + 95a54fa commit 06c66b6

12 files changed

+420
-34
lines changed

aimon/_client.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
get_async_library,
2525
)
2626
from ._version import __version__
27-
from .resources import users, models, analyze, inference, retrieval
27+
from .resources import users, models, analyze, metrics, inference, retrieval
2828
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
2929
from ._exceptions import APIStatusError
3030
from ._base_client import (
@@ -48,6 +48,7 @@ class Client(SyncAPIClient):
4848
analyze: analyze.AnalyzeResource
4949
inference: inference.InferenceResource
5050
retrieval: retrieval.RetrievalResource
51+
metrics: metrics.MetricsResource
5152
with_raw_response: ClientWithRawResponse
5253
with_streaming_response: ClientWithStreamedResponse
5354

@@ -104,6 +105,7 @@ def __init__(
104105
self.analyze = analyze.AnalyzeResource(self)
105106
self.inference = inference.InferenceResource(self)
106107
self.retrieval = retrieval.RetrievalResource(self)
108+
self.metrics = metrics.MetricsResource(self)
107109
self.with_raw_response = ClientWithRawResponse(self)
108110
self.with_streaming_response = ClientWithStreamedResponse(self)
109111

@@ -221,6 +223,7 @@ class AsyncClient(AsyncAPIClient):
221223
analyze: analyze.AsyncAnalyzeResource
222224
inference: inference.AsyncInferenceResource
223225
retrieval: retrieval.AsyncRetrievalResource
226+
metrics: metrics.AsyncMetricsResource
224227
with_raw_response: AsyncClientWithRawResponse
225228
with_streaming_response: AsyncClientWithStreamedResponse
226229

@@ -277,6 +280,7 @@ def __init__(
277280
self.analyze = analyze.AsyncAnalyzeResource(self)
278281
self.inference = inference.AsyncInferenceResource(self)
279282
self.retrieval = retrieval.AsyncRetrievalResource(self)
283+
self.metrics = metrics.AsyncMetricsResource(self)
280284
self.with_raw_response = AsyncClientWithRawResponse(self)
281285
self.with_streaming_response = AsyncClientWithStreamedResponse(self)
282286

@@ -395,6 +399,7 @@ def __init__(self, client: Client) -> None:
395399
self.analyze = analyze.AnalyzeResourceWithRawResponse(client.analyze)
396400
self.inference = inference.InferenceResourceWithRawResponse(client.inference)
397401
self.retrieval = retrieval.RetrievalResourceWithRawResponse(client.retrieval)
402+
self.metrics = metrics.MetricsResourceWithRawResponse(client.metrics)
398403

399404

400405
class AsyncClientWithRawResponse:
@@ -407,6 +412,7 @@ def __init__(self, client: AsyncClient) -> None:
407412
self.analyze = analyze.AsyncAnalyzeResourceWithRawResponse(client.analyze)
408413
self.inference = inference.AsyncInferenceResourceWithRawResponse(client.inference)
409414
self.retrieval = retrieval.AsyncRetrievalResourceWithRawResponse(client.retrieval)
415+
self.metrics = metrics.AsyncMetricsResourceWithRawResponse(client.metrics)
410416

411417

412418
class ClientWithStreamedResponse:
@@ -419,6 +425,7 @@ def __init__(self, client: Client) -> None:
419425
self.analyze = analyze.AnalyzeResourceWithStreamingResponse(client.analyze)
420426
self.inference = inference.InferenceResourceWithStreamingResponse(client.inference)
421427
self.retrieval = retrieval.RetrievalResourceWithStreamingResponse(client.retrieval)
428+
self.metrics = metrics.MetricsResourceWithStreamingResponse(client.metrics)
422429

423430

424431
class AsyncClientWithStreamedResponse:
@@ -431,6 +438,7 @@ def __init__(self, client: AsyncClient) -> None:
431438
self.analyze = analyze.AsyncAnalyzeResourceWithStreamingResponse(client.analyze)
432439
self.inference = inference.AsyncInferenceResourceWithStreamingResponse(client.inference)
433440
self.retrieval = retrieval.AsyncRetrievalResourceWithStreamingResponse(client.retrieval)
441+
self.metrics = metrics.AsyncMetricsResourceWithStreamingResponse(client.metrics)
434442

435443

436444
Client = Client

aimon/resources/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@
2424
AnalyzeResourceWithStreamingResponse,
2525
AsyncAnalyzeResourceWithStreamingResponse,
2626
)
27+
from .metrics import (
28+
MetricsResource,
29+
AsyncMetricsResource,
30+
MetricsResourceWithRawResponse,
31+
AsyncMetricsResourceWithRawResponse,
32+
MetricsResourceWithStreamingResponse,
33+
AsyncMetricsResourceWithStreamingResponse,
34+
)
2735
from .datasets import (
2836
DatasetsResource,
2937
AsyncDatasetsResource,
@@ -114,4 +122,10 @@
114122
"AsyncRetrievalResourceWithRawResponse",
115123
"RetrievalResourceWithStreamingResponse",
116124
"AsyncRetrievalResourceWithStreamingResponse",
125+
"MetricsResource",
126+
"AsyncMetricsResource",
127+
"MetricsResourceWithRawResponse",
128+
"AsyncMetricsResourceWithRawResponse",
129+
"MetricsResourceWithStreamingResponse",
130+
"AsyncMetricsResourceWithStreamingResponse",
117131
]

aimon/resources/datasets/datasets.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ def create(
7676
self,
7777
*,
7878
file: FileTypes,
79-
json_data: str,
79+
name: str,
80+
description: str | NotGiven = NOT_GIVEN,
8081
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
8182
# The extra values given here take precedence over values defined on the client or passed to this method.
8283
extra_headers: Headers | None = None,
@@ -90,7 +91,9 @@ def create(
9091
Args:
9192
file: The CSV file containing the dataset
9293
93-
json_data: JSON string containing dataset metadata
94+
name: Name of the dataset
95+
96+
description: Optional description of the dataset
9497
9598
extra_headers: Send extra headers
9699
@@ -103,7 +106,8 @@ def create(
103106
body = deepcopy_minimal(
104107
{
105108
"file": file,
106-
"json_data": json_data,
109+
"name": name,
110+
"description": description,
107111
}
108112
)
109113
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
@@ -112,7 +116,7 @@ def create(
112116
# multipart/form-data; boundary=---abc--
113117
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
114118
return self._post(
115-
"/v1/dataset",
119+
"/v2/dataset",
116120
body=maybe_transform(body, dataset_create_params.DatasetCreateParams),
117121
files=files,
118122
options=make_request_options(
@@ -189,7 +193,8 @@ async def create(
189193
self,
190194
*,
191195
file: FileTypes,
192-
json_data: str,
196+
name: str,
197+
description: str | NotGiven = NOT_GIVEN,
193198
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
194199
# The extra values given here take precedence over values defined on the client or passed to this method.
195200
extra_headers: Headers | None = None,
@@ -203,7 +208,9 @@ async def create(
203208
Args:
204209
file: The CSV file containing the dataset
205210
206-
json_data: JSON string containing dataset metadata
211+
name: Name of the dataset
212+
213+
description: Optional description of the dataset
207214
208215
extra_headers: Send extra headers
209216
@@ -216,7 +223,8 @@ async def create(
216223
body = deepcopy_minimal(
217224
{
218225
"file": file,
219-
"json_data": json_data,
226+
"name": name,
227+
"description": description,
220228
}
221229
)
222230
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
@@ -225,7 +233,7 @@ async def create(
225233
# multipart/form-data; boundary=---abc--
226234
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
227235
return await self._post(
228-
"/v1/dataset",
236+
"/v2/dataset",
229237
body=await async_maybe_transform(body, dataset_create_params.DatasetCreateParams),
230238
files=files,
231239
options=make_request_options(

0 commit comments

Comments
 (0)