Skip to content

Commit e64740b

Browse files
committed
chore: update datasets API
Signed-off-by: Donnie Adams <[email protected]>
1 parent 94fe795 commit e64740b

File tree

2 files changed

+82
-66
lines changed

2 files changed

+82
-66
lines changed

gptscript/gptscript.py

+46-31
Original file line numberDiff line numberDiff line change
@@ -212,35 +212,39 @@ async def delete_credential(self, context: str = "default", name: str = "") -> s
212212
{"context": [context], "name": name}
213213
)
214214

215-
async def list_datasets(self, workspace: str) -> List[DatasetMeta]:
216-
if workspace == "":
217-
workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"]
215+
async def list_datasets(self, workspace_id: str) -> List[DatasetMeta]:
216+
if workspace_id == "":
217+
workspace_id = os.environ["GPTSCRIPT_WORKSPACE_ID"]
218218

219219
res = await self._run_basic_command(
220220
"datasets",
221-
{"input": "{}", "workspace": workspace, "datasetToolRepo": self.opts.DatasetToolRepo}
221+
{"input": "{}", "workspaceID": workspace_id, "datasetToolRepo": self.opts.DatasetToolRepo,
222+
"env": self.opts.Env}
222223
)
223224
return [DatasetMeta.model_validate(d) for d in json.loads(res)]
224225

225-
async def create_dataset(self, workspace: str, name: str, description: str = "") -> Dataset:
226-
if workspace == "":
227-
workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"]
226+
async def create_dataset(self, workspace_id: str, name: str, description: str = "") -> Dataset:
227+
if workspace_id == "":
228+
workspace_id = os.environ["GPTSCRIPT_WORKSPACE_ID"]
228229

229230
if name == "":
230231
raise ValueError("name cannot be empty")
231232

232233
res = await self._run_basic_command(
233234
"datasets/create",
234-
{"input": json.dumps({"datasetName": name, "datasetDescription": description}),
235-
"workspace": workspace,
236-
"datasetToolRepo": self.opts.DatasetToolRepo}
235+
{
236+
"input": json.dumps({"datasetName": name, "datasetDescription": description}),
237+
"workspaceID": workspace_id,
238+
"datasetToolRepo": self.opts.DatasetToolRepo,
239+
"env": self.opts.Env,
240+
}
237241
)
238242
return Dataset.model_validate_json(res)
239243

240-
async def add_dataset_element(self, workspace: str, datasetID: str, elementName: str, elementContent: str,
244+
async def add_dataset_element(self, workspace_id: str, datasetID: str, elementName: str, elementContent: str,
241245
elementDescription: str = "") -> DatasetElementMeta:
242-
if workspace == "":
243-
workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"]
246+
if workspace_id == "":
247+
workspace_id = os.environ["GPTSCRIPT_WORKSPACE_ID"]
244248

245249
if datasetID == "":
246250
raise ValueError("datasetID cannot be empty")
@@ -251,33 +255,41 @@ async def add_dataset_element(self, workspace: str, datasetID: str, elementName:
251255

252256
res = await self._run_basic_command(
253257
"datasets/add-element",
254-
{"input": json.dumps({"datasetID": datasetID,
255-
"elementName": elementName,
256-
"elementContent": elementContent,
257-
"elementDescription": elementDescription}),
258-
"workspace": workspace,
259-
"datasetToolRepo": self.opts.DatasetToolRepo}
258+
{
259+
"input": json.dumps({
260+
"datasetID": datasetID,
261+
"elementName": elementName,
262+
"elementContent": elementContent,
263+
"elementDescription": elementDescription,
264+
}),
265+
"workspaceID": workspace_id,
266+
"datasetToolRepo": self.opts.DatasetToolRepo,
267+
"env": self.opts.Env
268+
}
260269
)
261270
return DatasetElementMeta.model_validate_json(res)
262271

263-
async def list_dataset_elements(self, workspace: str, datasetID: str) -> List[DatasetElementMeta]:
264-
if workspace == "":
265-
workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"]
272+
async def list_dataset_elements(self, workspace_id: str, datasetID: str) -> List[DatasetElementMeta]:
273+
if workspace_id == "":
274+
workspace_id = os.environ["GPTSCRIPT_WORKSPACE_ID"]
266275

267276
if datasetID == "":
268277
raise ValueError("datasetID cannot be empty")
269278

270279
res = await self._run_basic_command(
271280
"datasets/list-elements",
272-
{"input": json.dumps({"datasetID": datasetID}),
273-
"workspace": workspace,
274-
"datasetToolRepo": self.opts.DatasetToolRepo}
281+
{
282+
"input": json.dumps({"datasetID": datasetID}),
283+
"workspaceID": workspace_id,
284+
"datasetToolRepo": self.opts.DatasetToolRepo,
285+
"env": self.opts.Env
286+
}
275287
)
276288
return [DatasetElementMeta.model_validate(d) for d in json.loads(res)]
277289

278-
async def get_dataset_element(self, workspace: str, datasetID: str, elementName: str) -> DatasetElement:
279-
if workspace == "":
280-
workspace = os.environ["GPTSCRIPT_WORKSPACE_DIR"]
290+
async def get_dataset_element(self, workspace_id: str, datasetID: str, elementName: str) -> DatasetElement:
291+
if workspace_id == "":
292+
workspace_id = os.environ["GPTSCRIPT_WORKSPACE_ID"]
281293

282294
if datasetID == "":
283295
raise ValueError("datasetID cannot be empty")
@@ -286,9 +298,12 @@ async def get_dataset_element(self, workspace: str, datasetID: str, elementName:
286298

287299
res = await self._run_basic_command(
288300
"datasets/get-element",
289-
{"input": json.dumps({"datasetID": datasetID, "element": elementName}),
290-
"workspace": workspace,
291-
"datasetToolRepo": self.opts.DatasetToolRepo}
301+
{
302+
"input": json.dumps({"datasetID": datasetID, "element": elementName}),
303+
"workspaceID": workspace_id,
304+
"datasetToolRepo": self.opts.DatasetToolRepo,
305+
"env": self.opts.Env,
306+
}
292307
)
293308
return DatasetElement.model_validate_json(res)
294309

tests/test_gptscript.py

+36-35
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import os
55
import platform
66
import subprocess
7-
import tempfile
87
from datetime import datetime, timedelta, timezone
98
from time import sleep
109

@@ -760,40 +759,42 @@ async def test_credentials(gptscript):
760759

761760
@pytest.mark.asyncio
762761
async def test_datasets(gptscript):
763-
with tempfile.TemporaryDirectory(prefix="py-gptscript_") as tempdir:
764-
dataset_name = str(os.urandom(8).hex())
765-
766-
# Create dataset
767-
dataset = await gptscript.create_dataset(tempdir, dataset_name, "this is a test dataset")
768-
assert dataset.id != "", "Expected dataset id to be set"
769-
assert dataset.name == dataset_name, "Expected dataset name to match"
770-
assert dataset.description == "this is a test dataset", "Expected dataset description to match"
771-
assert len(dataset.elements) == 0, "Expected dataset elements to be empty"
772-
773-
# Add an element
774-
element_meta = await gptscript.add_dataset_element(tempdir, dataset.id, "element1", "element1 contents",
775-
"element1 description")
776-
assert element_meta.name == "element1", "Expected element name to match"
777-
assert element_meta.description == "element1 description", "Expected element description to match"
778-
779-
# Get the element
780-
element = await gptscript.get_dataset_element(tempdir, dataset.id, "element1")
781-
assert element.name == "element1", "Expected element name to match"
782-
assert element.contents == "element1 contents", "Expected element contents to match"
783-
assert element.description == "element1 description", "Expected element description to match"
784-
785-
# List elements in the dataset
786-
elements = await gptscript.list_dataset_elements(tempdir, dataset.id)
787-
assert len(elements) == 1, "Expected one element in the dataset"
788-
assert elements[0].name == "element1", "Expected element name to match"
789-
assert elements[0].description == "element1 description", "Expected element description to match"
790-
791-
# List datasets
792-
datasets = await gptscript.list_datasets(tempdir)
793-
assert len(datasets) > 0, "Expected at least one dataset"
794-
assert datasets[0].id == dataset.id, "Expected dataset id to match"
795-
assert datasets[0].name == dataset_name, "Expected dataset name to match"
796-
assert datasets[0].description == "this is a test dataset", "Expected dataset description to match"
762+
workspace_id = await gptscript.create_workspace("directory")
763+
dataset_name = str(os.urandom(8).hex())
764+
765+
# Create dataset
766+
dataset = await gptscript.create_dataset(workspace_id, dataset_name, "this is a test dataset")
767+
assert dataset.id != "", "Expected dataset id to be set"
768+
assert dataset.name == dataset_name, "Expected dataset name to match"
769+
assert dataset.description == "this is a test dataset", "Expected dataset description to match"
770+
assert len(dataset.elements) == 0, "Expected dataset elements to be empty"
771+
772+
# Add an element
773+
element_meta = await gptscript.add_dataset_element(workspace_id, dataset.id, "element1", "element1 contents",
774+
"element1 description")
775+
assert element_meta.name == "element1", "Expected element name to match"
776+
assert element_meta.description == "element1 description", "Expected element description to match"
777+
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"
783+
784+
# List elements in the dataset
785+
elements = await gptscript.list_dataset_elements(workspace_id, dataset.id)
786+
assert len(elements) == 1, "Expected one element in the dataset"
787+
assert elements[0].name == "element1", "Expected element name to match"
788+
assert elements[0].description == "element1 description", "Expected element description to match"
789+
790+
# List datasets
791+
datasets = await gptscript.list_datasets(workspace_id)
792+
assert len(datasets) > 0, "Expected at least one dataset"
793+
assert datasets[0].id == dataset.id, "Expected dataset id to match"
794+
assert datasets[0].name == dataset_name, "Expected dataset name to match"
795+
assert datasets[0].description == "this is a test dataset", "Expected dataset description to match"
796+
797+
await gptscript.delete_workspace(workspace_id)
797798

798799

799800
@pytest.mark.asyncio

0 commit comments

Comments
 (0)