diff --git a/src/codeocean/capsule.py b/src/codeocean/capsule.py index 15fe3b6..cd86ab7 100644 --- a/src/codeocean/capsule.py +++ b/src/codeocean/capsule.py @@ -62,13 +62,16 @@ def list_computations(self, capsule_id: str) -> list[Computation]: return [Computation.from_dict(c) for c in res.json()] - def attach_data_assets(self, capsule_id: str, attach_params: list[DataAssetAttachParams]) -> DataAssetAttachResults: + def attach_data_assets( + self, + capsule_id: str, + attach_params: list[DataAssetAttachParams]) -> list[DataAssetAttachResults]: res = self.client.post( f"capsules/{capsule_id}/data_assets", json=[j.to_dict() for j in attach_params], ) - return DataAssetAttachResults.from_dict(res.json()) + return [DataAssetAttachResults.from_dict(c) for c in res.json()] def detach_data_assets(self, capsule_id: str, data_assets: list[str]): self.client.delete( diff --git a/src/codeocean/data_asset.py b/src/codeocean/data_asset.py index 04e4acc..19add5e 100644 --- a/src/codeocean/data_asset.py +++ b/src/codeocean/data_asset.py @@ -6,6 +6,7 @@ from typing import Optional from codeocean.components import SortOrder, SearchFilter, Permissions +from codeocean.computation import PipelineProcess, Param class DataAssetType(StrEnum): @@ -51,6 +52,19 @@ class AppParameter: value: str +@dataclass_json +@dataclass(frozen=True) +class ResultsInfo: + capsule_id: Optional[str] = None + pipeline_id: Optional[str] = None + version: Optional[int] = None + commit: Optional[str] = None + run_script: Optional[str] = None + data_assets: Optional[list[str]] = None + parameters: Optional[list[Param]] = None + processes: Optional[list[PipelineProcess]] = None + + @dataclass_json @dataclass(frozen=True) class DataAsset: @@ -139,6 +153,7 @@ class DataAssetParams: target: Optional[Target] = None custom_metadata: Optional[dict] = None data_asset_ids: Optional[list[str]] = None + results_info: Optional[ResultsInfo] = None @dataclass_json