Skip to content

Commit 29fa9f9

Browse files
committed
chore: add add_dataset_elements function
Signed-off-by: Grant Linville <[email protected]>
1 parent 5a758ca commit 29fa9f9

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

gptscript/gptscript.py

+24
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,30 @@ async def add_dataset_element(self, workspace_id: str, datasetID: str, elementNa
270270
)
271271
return DatasetElementMeta.model_validate_json(res)
272272

273+
async def add_dataset_elements(self, workspace_id: str, datasetID: str, elements: List[DatasetElement]) -> str:
274+
if workspace_id == "":
275+
workspace_id = os.environ["GPTSCRIPT_WORKSPACE_ID"]
276+
277+
if datasetID == "":
278+
raise ValueError("datasetID cannot be empty")
279+
elif not elements:
280+
raise ValueError("elements cannot be empty")
281+
282+
res = await self._run_basic_command(
283+
"datasets/add-elements",
284+
{
285+
"input": json.dumps({
286+
"datasetID": datasetID,
287+
"elements": [element.model_dump() for element in elements],
288+
}),
289+
"workspaceID": workspace_id,
290+
"datasetToolRepo": self.opts.DatasetToolRepo,
291+
"env": self.opts.Env
292+
}
293+
)
294+
return res
295+
296+
273297
async def list_dataset_elements(self, workspace_id: str, datasetID: str) -> List[DatasetElementMeta]:
274298
if workspace_id == "":
275299
workspace_id = os.environ["GPTSCRIPT_WORKSPACE_ID"]

tests/test_gptscript.py

+25-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from gptscript.confirm import AuthResponse
1313
from gptscript.credentials import Credential
14+
from gptscript.datasets import DatasetElement
1415
from gptscript.exec_utils import get_env
1516
from gptscript.frame import RunEventType, CallFrame, RunFrame, RunState, PromptFrame
1617
from gptscript.gptscript import GPTScript
@@ -775,17 +776,35 @@ async def test_datasets(gptscript):
775776
assert element_meta.name == "element1", "Expected element name to match"
776777
assert element_meta.description == "element1 description", "Expected element description to match"
777778

778-
# Get the element
779-
element = await gptscript.get_dataset_element(workspace_id, dataset.id, "element1")
780-
assert element.name == "element1", "Expected element name to match"
781-
assert element.contents == "element1 contents", "Expected element contents to match"
782-
assert element.description == "element1 description", "Expected element description to match"
779+
# Add two more elements
780+
await gptscript.add_dataset_elements(workspace_id, dataset.id, [
781+
DatasetElement(name="element2", contents="element2 contents", description="element2 description"),
782+
DatasetElement(name="element3", contents="element3 contents", description="element3 description"),
783+
])
784+
785+
# Get the elements
786+
e1 = await gptscript.get_dataset_element(workspace_id, dataset.id, "element1")
787+
assert e1.name == "element1", "Expected element name to match"
788+
assert e1.contents == "element1 contents", "Expected element contents to match"
789+
assert e1.description == "element1 description", "Expected element description to match"
790+
e2 = await gptscript.get_dataset_element(workspace_id, dataset.id, "element2")
791+
assert e2.name == "element2", "Expected element name to match"
792+
assert e2.contents == "element2 contents", "Expected element contents to match"
793+
assert e2.description == "element2 description", "Expected element description to match"
794+
e3 = await gptscript.get_dataset_element(workspace_id, dataset.id, "element3")
795+
assert e3.name == "element3", "Expected element name to match"
796+
assert e3.contents == "element3 contents", "Expected element contents to match"
797+
assert e3.description == "element3 description", "Expected element description to match"
783798

784799
# List elements in the dataset
785800
elements = await gptscript.list_dataset_elements(workspace_id, dataset.id)
786-
assert len(elements) == 1, "Expected one element in the dataset"
801+
assert len(elements) == 3, "Expected one element in the dataset"
787802
assert elements[0].name == "element1", "Expected element name to match"
788803
assert elements[0].description == "element1 description", "Expected element description to match"
804+
assert elements[1].name == "element2", "Expected element name to match"
805+
assert elements[1].description == "element2 description", "Expected element description to match"
806+
assert elements[2].name == "element3", "Expected element name to match"
807+
assert elements[2].description == "element3 description", "Expected element description to match"
789808

790809
# List datasets
791810
datasets = await gptscript.list_datasets(workspace_id)

0 commit comments

Comments
 (0)