trismik 1.0.1__tar.gz → 1.0.2__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.
- {trismik-1.0.1 → trismik-1.0.2}/PKG-INFO +1 -1
- {trismik-1.0.1 → trismik-1.0.2}/pyproject.toml +1 -1
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_async/client.py +34 -1
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_mapper.py +52 -2
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_sync/client.py +34 -1
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/types.py +43 -0
- {trismik-1.0.1 → trismik-1.0.2}/LICENSE +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/README.md +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/__init__.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_async/__init__.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_async/_test_transform.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_async/helpers.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_sync/__init__.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_sync/_test_transform.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_sync/helpers.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/_utils.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/exceptions.py +0 -0
- {trismik-1.0.1 → trismik-1.0.2}/src/trismik/settings.py +0 -0
|
@@ -20,6 +20,7 @@ from trismik.types import (
|
|
|
20
20
|
TrismikClassicEvalRequest,
|
|
21
21
|
TrismikClassicEvalResponse,
|
|
22
22
|
TrismikDataset,
|
|
23
|
+
TrismikDatasetInfo,
|
|
23
24
|
TrismikItem,
|
|
24
25
|
TrismikMeResponse,
|
|
25
26
|
TrismikProject,
|
|
@@ -173,9 +174,35 @@ class TrismikAsyncClient:
|
|
|
173
174
|
except httpx.HTTPError as e:
|
|
174
175
|
raise TrismikApiError(str(e)) from e
|
|
175
176
|
|
|
177
|
+
async def get_dataset_info(self, dataset_id: str) -> TrismikDatasetInfo:
|
|
178
|
+
"""
|
|
179
|
+
Get detailed information about a specific dataset.
|
|
180
|
+
|
|
181
|
+
Args:
|
|
182
|
+
dataset_id (str): ID of the dataset to retrieve.
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
TrismikDatasetInfo: Detailed dataset information including datacard.
|
|
186
|
+
|
|
187
|
+
Raises:
|
|
188
|
+
TrismikApiError: If API request fails.
|
|
189
|
+
"""
|
|
190
|
+
try:
|
|
191
|
+
url = "/datasets/get-dataset"
|
|
192
|
+
body = {"datasetId": dataset_id}
|
|
193
|
+
response = await self._http_client.post(url, json=body)
|
|
194
|
+
response.raise_for_status()
|
|
195
|
+
json = response.json()
|
|
196
|
+
return TrismikResponseMapper.to_dataset_info(json)
|
|
197
|
+
except httpx.HTTPStatusError as e:
|
|
198
|
+
raise TrismikApiError(TrismikUtils.get_error_message(e.response)) from e
|
|
199
|
+
except httpx.HTTPError as e:
|
|
200
|
+
raise TrismikApiError(str(e)) from e
|
|
201
|
+
|
|
176
202
|
async def start_run(
|
|
177
203
|
self,
|
|
178
204
|
dataset_id: str,
|
|
205
|
+
split: str,
|
|
179
206
|
project_id: str,
|
|
180
207
|
experiment: str,
|
|
181
208
|
metadata: Optional[TrismikRunMetadata] = None,
|
|
@@ -185,6 +212,7 @@ class TrismikAsyncClient:
|
|
|
185
212
|
|
|
186
213
|
Args:
|
|
187
214
|
dataset_id (str): ID of the dataset.
|
|
215
|
+
split (str): Split of the dataset to use (e.g., "train", "test", "val").
|
|
188
216
|
project_id (str): ID of the project.
|
|
189
217
|
experiment (str): Name of the experiment.
|
|
190
218
|
metadata (Optional[TrismikRunMetadata]): Run metadata.
|
|
@@ -201,6 +229,7 @@ class TrismikAsyncClient:
|
|
|
201
229
|
url = "/runs/start"
|
|
202
230
|
body = {
|
|
203
231
|
"datasetId": dataset_id,
|
|
232
|
+
"split": split,
|
|
204
233
|
"projectId": project_id,
|
|
205
234
|
"experiment": experiment,
|
|
206
235
|
"metadata": metadata.toDict() if metadata else {},
|
|
@@ -444,6 +473,7 @@ class TrismikAsyncClient:
|
|
|
444
473
|
async def run( # noqa: E704
|
|
445
474
|
self,
|
|
446
475
|
test_id: str,
|
|
476
|
+
split: str,
|
|
447
477
|
project_id: str,
|
|
448
478
|
experiment: str,
|
|
449
479
|
run_metadata: TrismikRunMetadata,
|
|
@@ -457,6 +487,7 @@ class TrismikAsyncClient:
|
|
|
457
487
|
async def run( # noqa: E704
|
|
458
488
|
self,
|
|
459
489
|
test_id: str,
|
|
490
|
+
split: str,
|
|
460
491
|
project_id: str,
|
|
461
492
|
experiment: str,
|
|
462
493
|
run_metadata: TrismikRunMetadata,
|
|
@@ -469,6 +500,7 @@ class TrismikAsyncClient:
|
|
|
469
500
|
async def run(
|
|
470
501
|
self,
|
|
471
502
|
test_id: str,
|
|
503
|
+
split: str,
|
|
472
504
|
project_id: str,
|
|
473
505
|
experiment: str,
|
|
474
506
|
run_metadata: TrismikRunMetadata,
|
|
@@ -482,6 +514,7 @@ class TrismikAsyncClient:
|
|
|
482
514
|
|
|
483
515
|
Args:
|
|
484
516
|
test_id: ID of the test to run.
|
|
517
|
+
split: Split of the dataset to use (e.g., "train", "test", "val").
|
|
485
518
|
project_id: ID of the project.
|
|
486
519
|
experiment: Name of the experiment.
|
|
487
520
|
run_metadata: Metadata for the run.
|
|
@@ -502,7 +535,7 @@ class TrismikAsyncClient:
|
|
|
502
535
|
raise NotImplementedError("with_responses is not yet implemented for the new API flow")
|
|
503
536
|
|
|
504
537
|
# Start run and get first item
|
|
505
|
-
start_response = await self.start_run(test_id, project_id, experiment, run_metadata)
|
|
538
|
+
start_response = await self.start_run(test_id, split, project_id, experiment, run_metadata)
|
|
506
539
|
|
|
507
540
|
# Initialize state tracking
|
|
508
541
|
states: List[TrismikAdaptiveTestState] = []
|
|
@@ -4,7 +4,10 @@ from typing import Any, Dict, List
|
|
|
4
4
|
from trismik.exceptions import TrismikApiError
|
|
5
5
|
from trismik.types import (
|
|
6
6
|
TrismikClassicEvalResponse,
|
|
7
|
+
TrismikDatacard,
|
|
7
8
|
TrismikDataset,
|
|
9
|
+
TrismikDatasetInfo,
|
|
10
|
+
TrismikDatasetVersion,
|
|
8
11
|
TrismikItem,
|
|
9
12
|
TrismikMeResponse,
|
|
10
13
|
TrismikMultipleChoiceTextItem,
|
|
@@ -40,17 +43,64 @@ class TrismikResponseMapper:
|
|
|
40
43
|
json (Dict[str, Any]): JSON response containing dataset data.
|
|
41
44
|
|
|
42
45
|
Returns:
|
|
43
|
-
List[TrismikDataset]: List of
|
|
44
|
-
|
|
46
|
+
List[TrismikDataset]: List of dataset objects with IDs, names,
|
|
47
|
+
adaptive status, and splits.
|
|
45
48
|
"""
|
|
46
49
|
return [
|
|
47
50
|
TrismikDataset(
|
|
48
51
|
id=item["id"],
|
|
49
52
|
name=item["name"],
|
|
53
|
+
isAdaptive=item["isAdaptive"],
|
|
54
|
+
splits=item["splits"],
|
|
50
55
|
)
|
|
51
56
|
for item in json["data"]
|
|
52
57
|
]
|
|
53
58
|
|
|
59
|
+
@staticmethod
|
|
60
|
+
def to_dataset_info(json: Dict[str, Any]) -> TrismikDatasetInfo:
|
|
61
|
+
"""
|
|
62
|
+
Convert JSON response to a TrismikDatasetInfo object.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
json (Dict[str, Any]): JSON response containing detailed dataset
|
|
66
|
+
information.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
TrismikDatasetInfo: Dataset info object with complete metadata
|
|
70
|
+
including datacard.
|
|
71
|
+
"""
|
|
72
|
+
version = TrismikDatasetVersion(
|
|
73
|
+
year=json["datacard"]["version"]["year"],
|
|
74
|
+
month=json["datacard"]["version"]["month"],
|
|
75
|
+
revision=json["datacard"]["version"]["revision"],
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
datacard = TrismikDatacard(
|
|
79
|
+
task=json["datacard"]["task"],
|
|
80
|
+
license=json["datacard"]["license"],
|
|
81
|
+
version=version,
|
|
82
|
+
datasetHf=json["datacard"]["datasetHf"],
|
|
83
|
+
languages=json["datacard"]["languages"],
|
|
84
|
+
datasetUrl=json["datacard"]["datasetUrl"],
|
|
85
|
+
itemsCount=json["datacard"]["itemsCount"],
|
|
86
|
+
splitsUsed=json["datacard"]["splitsUsed"],
|
|
87
|
+
datasetName=json["datacard"]["datasetName"],
|
|
88
|
+
description=json["datacard"]["description"],
|
|
89
|
+
exampleItem=json["datacard"]["exampleItem"],
|
|
90
|
+
originalReadmeUrl=json["datacard"]["originalReadmeUrl"],
|
|
91
|
+
originalReadmeDownloadedAt=json["datacard"]["originalReadmeDownloadedAt"],
|
|
92
|
+
originalItemCount=json["datacard"]["originalItemCount"],
|
|
93
|
+
difficultyEstimators=json["datacard"]["difficultyEstimators"],
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
return TrismikDatasetInfo(
|
|
97
|
+
id=json["id"],
|
|
98
|
+
name=json["name"],
|
|
99
|
+
isAdaptive=json["isAdaptive"],
|
|
100
|
+
splits=json["splits"],
|
|
101
|
+
datacard=datacard,
|
|
102
|
+
)
|
|
103
|
+
|
|
54
104
|
@staticmethod
|
|
55
105
|
def to_run(json: Dict[str, Any]) -> TrismikRun:
|
|
56
106
|
"""
|
|
@@ -20,6 +20,7 @@ from trismik.types import (
|
|
|
20
20
|
TrismikClassicEvalRequest,
|
|
21
21
|
TrismikClassicEvalResponse,
|
|
22
22
|
TrismikDataset,
|
|
23
|
+
TrismikDatasetInfo,
|
|
23
24
|
TrismikItem,
|
|
24
25
|
TrismikMeResponse,
|
|
25
26
|
TrismikProject,
|
|
@@ -173,9 +174,35 @@ class TrismikClient:
|
|
|
173
174
|
except httpx.HTTPError as e:
|
|
174
175
|
raise TrismikApiError(str(e)) from e
|
|
175
176
|
|
|
177
|
+
def get_dataset_info(self, dataset_id: str) -> TrismikDatasetInfo:
|
|
178
|
+
"""
|
|
179
|
+
Get detailed information about a specific dataset.
|
|
180
|
+
|
|
181
|
+
Args:
|
|
182
|
+
dataset_id (str): ID of the dataset to retrieve.
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
TrismikDatasetInfo: Detailed dataset information including datacard.
|
|
186
|
+
|
|
187
|
+
Raises:
|
|
188
|
+
TrismikApiError: If API request fails.
|
|
189
|
+
"""
|
|
190
|
+
try:
|
|
191
|
+
url = "/datasets/get-dataset"
|
|
192
|
+
body = {"datasetId": dataset_id}
|
|
193
|
+
response = self._http_client.post(url, json=body)
|
|
194
|
+
response.raise_for_status()
|
|
195
|
+
json = response.json()
|
|
196
|
+
return TrismikResponseMapper.to_dataset_info(json)
|
|
197
|
+
except httpx.HTTPStatusError as e:
|
|
198
|
+
raise TrismikApiError(TrismikUtils.get_error_message(e.response)) from e
|
|
199
|
+
except httpx.HTTPError as e:
|
|
200
|
+
raise TrismikApiError(str(e)) from e
|
|
201
|
+
|
|
176
202
|
def start_run(
|
|
177
203
|
self,
|
|
178
204
|
dataset_id: str,
|
|
205
|
+
split: str,
|
|
179
206
|
project_id: str,
|
|
180
207
|
experiment: str,
|
|
181
208
|
metadata: Optional[TrismikRunMetadata] = None,
|
|
@@ -185,6 +212,7 @@ class TrismikClient:
|
|
|
185
212
|
|
|
186
213
|
Args:
|
|
187
214
|
dataset_id (str): ID of the dataset.
|
|
215
|
+
split (str): Split of the dataset to use (e.g., "train", "test", "val").
|
|
188
216
|
project_id (str): ID of the project.
|
|
189
217
|
experiment (str): Name of the experiment.
|
|
190
218
|
metadata (Optional[TrismikRunMetadata]): Run metadata.
|
|
@@ -201,6 +229,7 @@ class TrismikClient:
|
|
|
201
229
|
url = "/runs/start"
|
|
202
230
|
body = {
|
|
203
231
|
"datasetId": dataset_id,
|
|
232
|
+
"split": split,
|
|
204
233
|
"projectId": project_id,
|
|
205
234
|
"experiment": experiment,
|
|
206
235
|
"metadata": metadata.toDict() if metadata else {},
|
|
@@ -444,6 +473,7 @@ class TrismikClient:
|
|
|
444
473
|
def run( # noqa: E704
|
|
445
474
|
self,
|
|
446
475
|
test_id: str,
|
|
476
|
+
split: str,
|
|
447
477
|
project_id: str,
|
|
448
478
|
experiment: str,
|
|
449
479
|
run_metadata: TrismikRunMetadata,
|
|
@@ -457,6 +487,7 @@ class TrismikClient:
|
|
|
457
487
|
def run( # noqa: E704
|
|
458
488
|
self,
|
|
459
489
|
test_id: str,
|
|
490
|
+
split: str,
|
|
460
491
|
project_id: str,
|
|
461
492
|
experiment: str,
|
|
462
493
|
run_metadata: TrismikRunMetadata,
|
|
@@ -469,6 +500,7 @@ class TrismikClient:
|
|
|
469
500
|
def run(
|
|
470
501
|
self,
|
|
471
502
|
test_id: str,
|
|
503
|
+
split: str,
|
|
472
504
|
project_id: str,
|
|
473
505
|
experiment: str,
|
|
474
506
|
run_metadata: TrismikRunMetadata,
|
|
@@ -482,6 +514,7 @@ class TrismikClient:
|
|
|
482
514
|
|
|
483
515
|
Args:
|
|
484
516
|
test_id: ID of the test to run.
|
|
517
|
+
split: Split of the dataset to use (e.g., "train", "test", "val").
|
|
485
518
|
project_id: ID of the project.
|
|
486
519
|
experiment: Name of the experiment.
|
|
487
520
|
run_metadata: Metadata for the run.
|
|
@@ -502,7 +535,7 @@ class TrismikClient:
|
|
|
502
535
|
raise NotImplementedError("with_responses is not yet implemented for the new API flow")
|
|
503
536
|
|
|
504
537
|
# Start run and get first item
|
|
505
|
-
start_response = self.start_run(test_id, project_id, experiment, run_metadata)
|
|
538
|
+
start_response = self.start_run(test_id, split, project_id, experiment, run_metadata)
|
|
506
539
|
|
|
507
540
|
# Initialize state tracking
|
|
508
541
|
states: List[TrismikAdaptiveTestState] = []
|
|
@@ -16,6 +16,49 @@ class TrismikDataset:
|
|
|
16
16
|
|
|
17
17
|
id: str
|
|
18
18
|
name: str
|
|
19
|
+
isAdaptive: bool
|
|
20
|
+
splits: List[str]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass
|
|
24
|
+
class TrismikDatasetVersion:
|
|
25
|
+
"""Version information for a dataset."""
|
|
26
|
+
|
|
27
|
+
year: int
|
|
28
|
+
month: int
|
|
29
|
+
revision: int
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass
|
|
33
|
+
class TrismikDatacard:
|
|
34
|
+
"""Detailed metadata card for a dataset."""
|
|
35
|
+
|
|
36
|
+
task: str
|
|
37
|
+
license: str
|
|
38
|
+
version: "TrismikDatasetVersion"
|
|
39
|
+
datasetHf: str
|
|
40
|
+
languages: List[str]
|
|
41
|
+
datasetUrl: str
|
|
42
|
+
itemsCount: int
|
|
43
|
+
splitsUsed: List[str]
|
|
44
|
+
datasetName: str
|
|
45
|
+
description: str
|
|
46
|
+
exampleItem: str
|
|
47
|
+
originalReadmeUrl: str
|
|
48
|
+
originalReadmeDownloadedAt: str
|
|
49
|
+
originalItemCount: int
|
|
50
|
+
difficultyEstimators: List[str]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@dataclass
|
|
54
|
+
class TrismikDatasetInfo:
|
|
55
|
+
"""Complete dataset information including datacard."""
|
|
56
|
+
|
|
57
|
+
id: str
|
|
58
|
+
name: str
|
|
59
|
+
isAdaptive: bool
|
|
60
|
+
splits: List[str]
|
|
61
|
+
datacard: TrismikDatacard
|
|
19
62
|
|
|
20
63
|
|
|
21
64
|
@dataclass
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|