Skip to content

Commit 07fa66a

Browse files
committed
attach/detach data asset from cloud workstation session computation
1 parent f7dabda commit 07fa66a

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

src/codeocean/computation.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
from dataclasses import dataclass, field
44
from dataclasses_json import dataclass_json
55
from requests_toolbelt.sessions import BaseUrlSession
6-
from typing import Optional
6+
from typing import Optional, TYPE_CHECKING
77
from time import sleep, time
88
from warnings import warn
99

1010
from codeocean.enum import StrEnum
1111
from codeocean.folder import FileURLs, Folder, DownloadFileURL
1212

13+
if TYPE_CHECKING:
14+
from codeocean.data_asset import DataAssetAttachParams, DataAssetAttachResults
15+
1316

1417
class ComputationState(StrEnum):
1518
"""Current state of a computation during its execution lifecycle."""
@@ -324,6 +327,27 @@ def wait_until_completed(
324327

325328
sleep(polling_interval)
326329

330+
def attach_data_assets(
331+
self,
332+
computation_id: str,
333+
attach_params: list["DataAssetAttachParams"],
334+
) -> list["DataAssetAttachResults"]:
335+
"""Attach one or more data assets to a cloud workstation session computation."""
336+
from codeocean.data_asset import DataAssetAttachResults
337+
338+
res = self.client.post(
339+
f"computations/{computation_id}/data_assets",
340+
json=[j.to_dict() for j in attach_params],
341+
)
342+
return [DataAssetAttachResults.from_dict(c) for c in res.json()]
343+
344+
def detach_data_assets(self, computation_id: str, data_assets: list[str]):
345+
"""Detach one or more data assets from a cloud workstation session computation by their IDs."""
346+
self.client.delete(
347+
f"computations/{computation_id}/data_assets/",
348+
json=data_assets,
349+
)
350+
327351
def list_computation_results(self, computation_id: str, path: str = "") -> Folder:
328352
"""List result files and folders generated by a computation
329353
at the specified path. Empty path retrieves the /results root folder."""

src/codeocean/data_asset.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44
from dataclasses import dataclass, field
55
from requests_toolbelt.sessions import BaseUrlSession
66
from time import sleep, time
7-
from typing import Optional, Iterator
7+
from typing import Optional, Iterator, TYPE_CHECKING
88
from warnings import warn
99

1010
from codeocean.components import Ownership, SortOrder, SearchFilter, Permissions
11-
from codeocean.computation import PipelineProcess, Param
1211
from codeocean.enum import StrEnum
1312
from codeocean.folder import FileURLs, Folder, DownloadFileURL
1413

14+
if TYPE_CHECKING:
15+
from codeocean.computation import PipelineProcess, Param
16+
1517

1618
class DataAssetType(StrEnum):
1719
"""Type of data asset indicating its content and purpose."""

0 commit comments

Comments
 (0)