codeocean 0.14.0__tar.gz → 0.15.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {codeocean-0.14.0 → codeocean-0.15.0}/CHANGELOG.md +5 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/PKG-INFO +1 -1
- {codeocean-0.14.0 → codeocean-0.15.0}/pyproject.toml +1 -1
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/capsule.py +6 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/client.py +1 -1
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/data_asset.py +6 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/models/capsule.py +4 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/models/computation.py +7 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/models/data_asset.py +12 -5
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/pipeline.py +4 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/.flake8 +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/.gitignore +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/LICENSE +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/README.md +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/RELEASE.md +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/examples/create_data_asset.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/examples/run_capsule.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/examples/run_pipeline.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/__init__.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/components.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/computation.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/custom_metadata.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/enum.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/error.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/models/__init__.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/models/components.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/src/codeocean/models/folder.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/tests/__init__.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/tests/test_client.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/tests/test_error.py +0 -0
- {codeocean-0.14.0 → codeocean-0.15.0}/tests/test_package.py +0 -0
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
CHANGELOG
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
## 0.15.0 (2026-04-10)
|
|
5
|
+
- [#69](https://github.com/codeocean/codeocean-sdk-python/pull/69) feat: Code Ocean version 4.3 functionality
|
|
6
|
+
- [#68](https://github.com/codeocean/codeocean-sdk-python/pull/68) feat: add get_permissions method for capsules, pipelines, data assets
|
|
7
|
+
- **Minimum Code Ocean platform version updated to `4.3.0`.**
|
|
8
|
+
|
|
4
9
|
## 0.14.0 (2026-01-29)
|
|
5
10
|
- [#66](https://github.com/codeocean/codeocean-sdk-python/pull/66) feat: Code Ocean version 4.2 functionality
|
|
6
11
|
- **Minimum Code Ocean platform version updated to `4.2.0`.**
|
|
@@ -58,6 +58,12 @@ class Capsules:
|
|
|
58
58
|
|
|
59
59
|
return [Computation.from_dict(c) for c in res.json()]
|
|
60
60
|
|
|
61
|
+
def get_permissions(self, capsule_id: str) -> Permissions:
|
|
62
|
+
"""Get permissions for a specific capsule."""
|
|
63
|
+
res = self.client.get(f"{self._route}/{capsule_id}/permissions")
|
|
64
|
+
|
|
65
|
+
return Permissions.from_dict(res.json())
|
|
66
|
+
|
|
61
67
|
def update_permissions(self, capsule_id: str, permissions: Permissions):
|
|
62
68
|
"""Update permissions for a capsule."""
|
|
63
69
|
self.client.post(
|
|
@@ -38,7 +38,7 @@ class CodeOcean:
|
|
|
38
38
|
agent_id: Optional[str] = None
|
|
39
39
|
|
|
40
40
|
# Minimum server version required by this SDK
|
|
41
|
-
MIN_SERVER_VERSION = "4.
|
|
41
|
+
MIN_SERVER_VERSION = "4.3.0"
|
|
42
42
|
|
|
43
43
|
def __post_init__(self):
|
|
44
44
|
self.session = BaseUrlSession(base_url=f"{self.domain}/api/v1/")
|
|
@@ -183,6 +183,12 @@ class DataAssets:
|
|
|
183
183
|
|
|
184
184
|
params["next_token"] = response.next_token
|
|
185
185
|
|
|
186
|
+
def get_permissions(self, data_asset_id: str) -> Permissions:
|
|
187
|
+
"""Get permissions for a specific data asset."""
|
|
188
|
+
res = self.client.get(f"data_assets/{data_asset_id}/permissions")
|
|
189
|
+
|
|
190
|
+
return Permissions.from_dict(res.json())
|
|
191
|
+
|
|
186
192
|
def list_data_asset_files(self, data_asset_id: str, path: str = "") -> Folder:
|
|
187
193
|
"""
|
|
188
194
|
List files and folders within an internal data asset at the specified path.
|
|
@@ -101,6 +101,10 @@ class Capsule:
|
|
|
101
101
|
slug: str = dataclass_field(
|
|
102
102
|
metadata={"description": "Alternate capsule ID (URL-friendly identifier)"},
|
|
103
103
|
)
|
|
104
|
+
owner_email: Optional[str] = dataclass_field(
|
|
105
|
+
default=None,
|
|
106
|
+
metadata={"description": "Capsule owner's email address"},
|
|
107
|
+
)
|
|
104
108
|
last_accessed: Optional[int] = dataclass_field(
|
|
105
109
|
default=None,
|
|
106
110
|
metadata={"description": "Capsule last accessed time (int64 timestamp)"},
|
|
@@ -97,6 +97,9 @@ class Computation:
|
|
|
97
97
|
name: str = field(
|
|
98
98
|
metadata={"description": "Display name of the computation"},
|
|
99
99
|
)
|
|
100
|
+
owner: str = field(
|
|
101
|
+
metadata={"description": "Computation owner's ID"},
|
|
102
|
+
)
|
|
100
103
|
run_time: int = field(
|
|
101
104
|
metadata={"description": "Total run time in seconds"},
|
|
102
105
|
)
|
|
@@ -105,6 +108,10 @@ class Computation:
|
|
|
105
108
|
"description": "Current state of the computation (initializing, running, finalizing, completed, failed)",
|
|
106
109
|
},
|
|
107
110
|
)
|
|
111
|
+
owner_email: Optional[str] = field(
|
|
112
|
+
default=None,
|
|
113
|
+
metadata={"description": "Computation owner's email address"},
|
|
114
|
+
)
|
|
108
115
|
cloud_workstation: Optional[bool] = field(
|
|
109
116
|
default=None,
|
|
110
117
|
metadata={
|
|
@@ -173,6 +173,14 @@ class DataAsset:
|
|
|
173
173
|
mount: str = field(
|
|
174
174
|
metadata={"description": "The default mount folder of the data asset"},
|
|
175
175
|
)
|
|
176
|
+
last_used: int = field(
|
|
177
|
+
metadata={
|
|
178
|
+
"description": "Time data asset was last used in seconds from unix epoch",
|
|
179
|
+
},
|
|
180
|
+
)
|
|
181
|
+
owner: str = field(
|
|
182
|
+
metadata={"description": "Data asset owner's ID"},
|
|
183
|
+
)
|
|
176
184
|
state: DataAssetState = field(
|
|
177
185
|
metadata={"description": "Data asset creation state (draft, ready, failed)"},
|
|
178
186
|
)
|
|
@@ -181,11 +189,6 @@ class DataAsset:
|
|
|
181
189
|
"description": "Type of the data asset (dataset, result, combined, model)",
|
|
182
190
|
},
|
|
183
191
|
)
|
|
184
|
-
last_used: int = field(
|
|
185
|
-
metadata={
|
|
186
|
-
"description": "Time data asset was last used in seconds from unix epoch",
|
|
187
|
-
},
|
|
188
|
-
)
|
|
189
192
|
files: Optional[int] = field(
|
|
190
193
|
default=None,
|
|
191
194
|
metadata={"description": "Number of files in the data asset"},
|
|
@@ -198,6 +201,10 @@ class DataAsset:
|
|
|
198
201
|
default=None,
|
|
199
202
|
metadata={"description": "Data asset description"},
|
|
200
203
|
)
|
|
204
|
+
owner_email: Optional[str] = field(
|
|
205
|
+
default=None,
|
|
206
|
+
metadata={"description": "Data asset owner's email address"},
|
|
207
|
+
)
|
|
201
208
|
tags: Optional[list[str]] = field(
|
|
202
209
|
default=None,
|
|
203
210
|
metadata={"description": "Keywords for searching the data asset"},
|
|
@@ -42,6 +42,10 @@ class Pipelines:
|
|
|
42
42
|
"""Get all computations associated with a specific pipeline."""
|
|
43
43
|
return self._capsules.list_computations(pipeline_id)
|
|
44
44
|
|
|
45
|
+
def get_permissions(self, pipeline_id: str) -> Permissions:
|
|
46
|
+
"""Get permissions for a specific pipeline."""
|
|
47
|
+
return self._capsules.get_permissions(pipeline_id)
|
|
48
|
+
|
|
45
49
|
def update_permissions(self, pipeline_id: str, permissions: Permissions):
|
|
46
50
|
"""Update permissions for a pipeline."""
|
|
47
51
|
return self._capsules.update_permissions(pipeline_id, permissions)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|