59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
from dataclasses import dataclass
|
|
from typing import Dict, List, Optional, TypedDict
|
|
|
|
from literalai.my_types import Utils
|
|
|
|
|
|
class DatasetItemDict(TypedDict, total=False):
|
|
id: str
|
|
createdAt: str
|
|
datasetId: str
|
|
metadata: Dict
|
|
input: Dict
|
|
expectedOutput: Optional[Dict]
|
|
intermediarySteps: Optional[List[Dict]]
|
|
|
|
|
|
@dataclass(repr=False)
|
|
class DatasetItem(Utils):
|
|
"""
|
|
A `Dataset` item, containing `input`, `expectedOutput` and `metadata`.
|
|
"""
|
|
|
|
id: str
|
|
created_at: str
|
|
dataset_id: str
|
|
metadata: Dict
|
|
input: Dict
|
|
expected_output: Optional[Dict] = None
|
|
intermediary_steps: Optional[List[Dict]] = None
|
|
|
|
def to_dict(self):
|
|
"""
|
|
Dumps the contents of the object into a dictionary.
|
|
"""
|
|
return {
|
|
"id": self.id,
|
|
"createdAt": self.created_at,
|
|
"datasetId": self.dataset_id,
|
|
"metadata": self.metadata,
|
|
"input": self.input,
|
|
"expectedOutput": self.expected_output,
|
|
"intermediarySteps": self.intermediary_steps,
|
|
}
|
|
|
|
@classmethod
|
|
def from_dict(cls, dataset_item: DatasetItemDict) -> "DatasetItem":
|
|
"""
|
|
Builds a `DatasetItem` object from a dictionary.
|
|
"""
|
|
return cls(
|
|
id=dataset_item.get("id", ""),
|
|
created_at=dataset_item.get("createdAt", ""),
|
|
dataset_id=dataset_item.get("datasetId", ""),
|
|
metadata=dataset_item.get("metadata", {}),
|
|
input=dataset_item.get("input", {}),
|
|
expected_output=dataset_item.get("expectedOutput"),
|
|
intermediary_steps=dataset_item.get("intermediarySteps"),
|
|
)
|