benchling-sdk 1.21.1__py3-none-any.whl → 1.22.0__py3-none-any.whl
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.
- benchling_sdk/apps/canvas/types.py +8 -0
- benchling_sdk/apps/config/framework.py +2 -2
- benchling_sdk/apps/config/helpers.py +6 -5
- benchling_sdk/apps/config/mock_config.py +4 -4
- benchling_sdk/apps/helpers/webhook_helpers.py +2 -2
- benchling_sdk/apps/status/framework.py +5 -5
- benchling_sdk/apps/status/helpers.py +2 -0
- benchling_sdk/auth/client_credentials_oauth2.py +5 -4
- benchling_sdk/benchling.py +90 -14
- benchling_sdk/errors.py +4 -3
- benchling_sdk/helpers/retry_helpers.py +1 -1
- benchling_sdk/helpers/serialization_helpers.py +6 -3
- benchling_sdk/helpers/task_helpers.py +12 -9
- benchling_sdk/models/__init__.py +1335 -329
- benchling_sdk/models/webhooks/v0/__init__.py +24 -4
- benchling_sdk/services/v2/base_service.py +5 -4
- benchling_sdk/services/v2/beta/v2_beta_data_frame_service.py +16 -8
- benchling_sdk/services/v2/stable/aa_sequence_service.py +4 -0
- benchling_sdk/services/v2/{beta/v2_beta_audit_service.py → stable/audit_service.py} +6 -6
- benchling_sdk/services/v2/stable/blob_service.py +6 -3
- benchling_sdk/services/v2/stable/box_service.py +4 -0
- benchling_sdk/services/v2/stable/connect_service.py +79 -0
- benchling_sdk/services/v2/stable/container_service.py +4 -0
- benchling_sdk/services/v2/stable/custom_entity_service.py +4 -0
- benchling_sdk/services/v2/stable/data_frame_service.py +323 -0
- benchling_sdk/services/v2/stable/dataset_service.py +192 -0
- benchling_sdk/services/v2/stable/dna_oligo_service.py +4 -0
- benchling_sdk/services/v2/stable/dna_sequence_service.py +4 -0
- benchling_sdk/services/v2/stable/file_service.py +191 -0
- benchling_sdk/services/v2/stable/{request_service.py → legacy_request_service.py} +25 -25
- benchling_sdk/services/v2/stable/location_service.py +4 -0
- benchling_sdk/services/v2/stable/mixture_service.py +4 -0
- benchling_sdk/services/v2/stable/molecule_service.py +4 -0
- benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +4 -0
- benchling_sdk/services/v2/stable/organization_service.py +10 -5
- benchling_sdk/services/v2/stable/plate_service.py +4 -0
- benchling_sdk/services/v2/stable/rna_oligo_service.py +4 -0
- benchling_sdk/services/v2/stable/rna_sequence_service.py +4 -0
- benchling_sdk/services/v2/stable/task_service.py +1 -7
- benchling_sdk/services/v2/stable/team_service.py +14 -7
- benchling_sdk/services/v2/stable/test_order_service.py +145 -0
- benchling_sdk/services/v2/v2_alpha_service.py +2 -2
- benchling_sdk/services/v2/v2_beta_service.py +2 -16
- benchling_sdk/services/v2/v2_stable_service.py +104 -17
- benchling_sdk/services/v2_service.py +1 -1
- {benchling_sdk-1.21.1.dist-info → benchling_sdk-1.22.0.dist-info}/METADATA +2 -2
- {benchling_sdk-1.21.1.dist-info → benchling_sdk-1.22.0.dist-info}/RECORD +49 -44
- {benchling_sdk-1.21.1.dist-info → benchling_sdk-1.22.0.dist-info}/LICENSE +0 -0
- {benchling_sdk-1.21.1.dist-info → benchling_sdk-1.22.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,191 @@
|
|
1
|
+
from typing import Iterable, List, Optional
|
2
|
+
|
3
|
+
from benchling_api_client.v2.stable.api.files import (
|
4
|
+
archive_files as api_client_archive_files,
|
5
|
+
create_file,
|
6
|
+
get_file,
|
7
|
+
list_files,
|
8
|
+
patch_file,
|
9
|
+
unarchive_files,
|
10
|
+
)
|
11
|
+
from benchling_api_client.v2.stable.models.file import File
|
12
|
+
from benchling_api_client.v2.stable.models.file_create import FileCreate
|
13
|
+
from benchling_api_client.v2.stable.models.file_update import FileUpdate
|
14
|
+
from benchling_api_client.v2.stable.models.files_archival_change import FilesArchivalChange
|
15
|
+
from benchling_api_client.v2.stable.models.files_archive import FilesArchive
|
16
|
+
from benchling_api_client.v2.stable.models.files_archive_reason import FilesArchiveReason
|
17
|
+
from benchling_api_client.v2.stable.models.files_paginated_list import FilesPaginatedList
|
18
|
+
from benchling_api_client.v2.stable.models.files_unarchive import FilesUnarchive
|
19
|
+
from benchling_api_client.v2.types import Response
|
20
|
+
|
21
|
+
from benchling_sdk.errors import raise_for_status
|
22
|
+
from benchling_sdk.helpers.decorators import api_method
|
23
|
+
from benchling_sdk.helpers.pagination_helpers import NextToken, PageIterator
|
24
|
+
from benchling_sdk.helpers.response_helpers import model_from_detailed
|
25
|
+
from benchling_sdk.helpers.serialization_helpers import none_as_unset
|
26
|
+
from benchling_sdk.models import ListFilesSort
|
27
|
+
from benchling_sdk.services.v2.base_service import BaseService
|
28
|
+
|
29
|
+
|
30
|
+
class FileService(BaseService):
|
31
|
+
"""
|
32
|
+
Files.
|
33
|
+
|
34
|
+
Files are Benchling objects that represent files and their metadata. Compared to Blobs, which are used by
|
35
|
+
most Benchling products for attachments, Files are primarily used in the Analysis and Connect product.
|
36
|
+
|
37
|
+
See https://benchling.com/api/v2/reference#/Files
|
38
|
+
"""
|
39
|
+
|
40
|
+
@api_method
|
41
|
+
def archive_files(
|
42
|
+
self, file_ids: Iterable[str], reason: FilesArchiveReason
|
43
|
+
) -> FilesArchivalChange:
|
44
|
+
"""
|
45
|
+
Archive Files.
|
46
|
+
|
47
|
+
See https://benchling.com/api/reference#/Files/archiveFiles
|
48
|
+
"""
|
49
|
+
archive_request = FilesArchive(reason=reason, file_ids=list(file_ids))
|
50
|
+
response = api_client_archive_files.sync_detailed(
|
51
|
+
client=self.client,
|
52
|
+
json_body=archive_request,
|
53
|
+
)
|
54
|
+
return model_from_detailed(response)
|
55
|
+
|
56
|
+
@api_method
|
57
|
+
def create(self, file: FileCreate) -> File:
|
58
|
+
"""
|
59
|
+
Create a file.
|
60
|
+
|
61
|
+
See https://benchling.com/api/v2/reference#/Files/createFile
|
62
|
+
"""
|
63
|
+
response = create_file.sync_detailed(client=self.client, json_body=file)
|
64
|
+
return model_from_detailed(response)
|
65
|
+
|
66
|
+
@api_method
|
67
|
+
def get_by_id(self, file_id: str) -> File:
|
68
|
+
"""
|
69
|
+
Get a file.
|
70
|
+
|
71
|
+
See https://benchling.com/api/v2/reference#/Files/getFile
|
72
|
+
"""
|
73
|
+
response = get_file.sync_detailed(client=self.client, file_id=file_id)
|
74
|
+
return model_from_detailed(response)
|
75
|
+
|
76
|
+
@api_method
|
77
|
+
def _files_page(
|
78
|
+
self,
|
79
|
+
page_size: Optional[int] = 50,
|
80
|
+
next_token: Optional[str] = None,
|
81
|
+
sort: Optional[ListFilesSort] = ListFilesSort.MODIFIEDAT,
|
82
|
+
archive_reason: Optional[str] = None,
|
83
|
+
created_at: Optional[str] = None,
|
84
|
+
creator_ids: Optional[str] = None,
|
85
|
+
folder_id: Optional[str] = None,
|
86
|
+
mentioned_in: Optional[str] = None,
|
87
|
+
modified_at: Optional[str] = None,
|
88
|
+
name: Optional[str] = None,
|
89
|
+
name_includes: Optional[str] = None,
|
90
|
+
namesany_ofcase_sensitive: Optional[str] = None,
|
91
|
+
namesany_of: Optional[str] = None,
|
92
|
+
origin_ids: Optional[str] = None,
|
93
|
+
ids: Optional[str] = None,
|
94
|
+
display_ids: Optional[str] = None,
|
95
|
+
returning: Optional[str] = None,
|
96
|
+
) -> Response[FilesPaginatedList]:
|
97
|
+
response = list_files.sync_detailed(
|
98
|
+
client=self.client,
|
99
|
+
page_size=none_as_unset(page_size),
|
100
|
+
next_token=none_as_unset(next_token),
|
101
|
+
sort=none_as_unset(sort),
|
102
|
+
archive_reason=none_as_unset(archive_reason),
|
103
|
+
created_at=none_as_unset(created_at),
|
104
|
+
creator_ids=none_as_unset(creator_ids),
|
105
|
+
folder_id=none_as_unset(folder_id),
|
106
|
+
mentioned_in=none_as_unset(mentioned_in),
|
107
|
+
modified_at=none_as_unset(modified_at),
|
108
|
+
name=none_as_unset(name),
|
109
|
+
name_includes=none_as_unset(name_includes),
|
110
|
+
namesany_ofcase_sensitive=none_as_unset(namesany_ofcase_sensitive),
|
111
|
+
namesany_of=none_as_unset(namesany_of),
|
112
|
+
origin_ids=none_as_unset(origin_ids),
|
113
|
+
ids=none_as_unset(ids),
|
114
|
+
display_ids=none_as_unset(display_ids),
|
115
|
+
returning=none_as_unset(returning),
|
116
|
+
)
|
117
|
+
raise_for_status(response)
|
118
|
+
return response # type: ignore
|
119
|
+
|
120
|
+
def list(
|
121
|
+
self,
|
122
|
+
*,
|
123
|
+
page_size: Optional[int] = 50,
|
124
|
+
sort: Optional[ListFilesSort] = ListFilesSort.MODIFIEDAT,
|
125
|
+
archive_reason: Optional[str] = None,
|
126
|
+
created_at: Optional[str] = None,
|
127
|
+
creator_ids: Optional[str] = None,
|
128
|
+
folder_id: Optional[str] = None,
|
129
|
+
mentioned_in: Optional[str] = None,
|
130
|
+
modified_at: Optional[str] = None,
|
131
|
+
name: Optional[str] = None,
|
132
|
+
name_includes: Optional[str] = None,
|
133
|
+
namesany_ofcase_sensitive: Optional[str] = None,
|
134
|
+
namesany_of: Optional[str] = None,
|
135
|
+
origin_ids: Optional[str] = None,
|
136
|
+
ids: Optional[str] = None,
|
137
|
+
display_ids: Optional[str] = None,
|
138
|
+
returning: Optional[str] = None,
|
139
|
+
) -> PageIterator[File]:
|
140
|
+
"""
|
141
|
+
List Files.
|
142
|
+
|
143
|
+
See https://benchling.com/api/v2/reference#/Files/listFiles
|
144
|
+
"""
|
145
|
+
|
146
|
+
def api_call(next_token: NextToken) -> Response[FilesPaginatedList]:
|
147
|
+
return self._files_page(
|
148
|
+
page_size=page_size,
|
149
|
+
next_token=next_token,
|
150
|
+
sort=sort,
|
151
|
+
archive_reason=archive_reason,
|
152
|
+
created_at=created_at,
|
153
|
+
creator_ids=creator_ids,
|
154
|
+
folder_id=folder_id,
|
155
|
+
mentioned_in=mentioned_in,
|
156
|
+
modified_at=modified_at,
|
157
|
+
name=name,
|
158
|
+
name_includes=name_includes,
|
159
|
+
namesany_ofcase_sensitive=namesany_ofcase_sensitive,
|
160
|
+
namesany_of=namesany_of,
|
161
|
+
origin_ids=origin_ids,
|
162
|
+
ids=ids,
|
163
|
+
display_ids=display_ids,
|
164
|
+
returning=returning,
|
165
|
+
)
|
166
|
+
|
167
|
+
def results_extractor(body: FilesPaginatedList) -> Optional[List[File]]:
|
168
|
+
return body.files
|
169
|
+
|
170
|
+
return PageIterator(api_call, results_extractor)
|
171
|
+
|
172
|
+
@api_method
|
173
|
+
def update(self, file_id: str, file: FileUpdate) -> File:
|
174
|
+
"""
|
175
|
+
Update a File.
|
176
|
+
|
177
|
+
See https://benchling.com/api/reference#/Files/updateFile
|
178
|
+
"""
|
179
|
+
response = patch_file.sync_detailed(client=self.client, file_id=file_id, json_body=file)
|
180
|
+
return model_from_detailed(response)
|
181
|
+
|
182
|
+
@api_method
|
183
|
+
def unarchive(self, file_ids: Iterable[str]) -> FilesArchivalChange:
|
184
|
+
"""
|
185
|
+
Unarchive one or more Files.
|
186
|
+
|
187
|
+
See https://benchling.com/api/reference#/Files/unarchiveFiles
|
188
|
+
"""
|
189
|
+
unarchive_request = FilesUnarchive(file_ids=list(file_ids))
|
190
|
+
response = unarchive_files.sync_detailed(client=self.client, json_body=unarchive_request)
|
191
|
+
return model_from_detailed(response)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from typing import Iterable, List, Optional
|
2
2
|
|
3
|
-
from benchling_api_client.v2.stable.api.
|
3
|
+
from benchling_api_client.v2.stable.api.legacy_requests import (
|
4
4
|
bulk_create_request_tasks,
|
5
5
|
bulk_get_requests,
|
6
6
|
bulk_update_request_tasks,
|
@@ -40,21 +40,21 @@ from benchling_sdk.models import (
|
|
40
40
|
from benchling_sdk.services.v2.base_service import BaseService
|
41
41
|
|
42
42
|
|
43
|
-
class
|
43
|
+
class LegacyRequestService(BaseService):
|
44
44
|
"""
|
45
|
-
Requests.
|
45
|
+
Legacy Requests.
|
46
46
|
|
47
|
-
Requests allow scientists and teams to collaborate around experimental assays and workflows.
|
47
|
+
Legacy Requests allow scientists and teams to collaborate around experimental assays and workflows.
|
48
48
|
|
49
|
-
See https://benchling.com/api/reference#/
|
49
|
+
See https://benchling.com/api/reference#/Legacy%20Requests
|
50
50
|
"""
|
51
51
|
|
52
52
|
@api_method
|
53
53
|
def get_by_id(self, request_id: str, returning: Optional[Iterable[str]] = None) -> Request:
|
54
54
|
"""
|
55
|
-
Get a Request by ID.
|
55
|
+
Get a Legacy Request by ID.
|
56
56
|
|
57
|
-
See https://benchling.com/api/reference#/
|
57
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/getRequest
|
58
58
|
"""
|
59
59
|
returning_string = optional_array_query_param(returning)
|
60
60
|
response = get_request.sync_detailed(
|
@@ -98,7 +98,7 @@ class RequestService(BaseService):
|
|
98
98
|
"""
|
99
99
|
List Requests.
|
100
100
|
|
101
|
-
See https://benchling.com/api/reference#/
|
101
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/listRequests
|
102
102
|
"""
|
103
103
|
|
104
104
|
def api_call(next_token: NextToken) -> Response[RequestsPaginatedList]:
|
@@ -128,7 +128,7 @@ class RequestService(BaseService):
|
|
128
128
|
"""
|
129
129
|
Bulk get Requests.
|
130
130
|
|
131
|
-
See https://benchling.com/api/reference#/
|
131
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/bulkGetRequests
|
132
132
|
"""
|
133
133
|
request_id_string = optional_array_query_param(request_ids)
|
134
134
|
display_id_string = optional_array_query_param(display_ids)
|
@@ -145,9 +145,9 @@ class RequestService(BaseService):
|
|
145
145
|
@api_method
|
146
146
|
def request_response(self, request_id: str) -> RequestResponse:
|
147
147
|
"""
|
148
|
-
Get a Request's response.
|
148
|
+
Get a Legacy Request's response.
|
149
149
|
|
150
|
-
See https://benchling.com/api/reference#/
|
150
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/getRequestResponse
|
151
151
|
"""
|
152
152
|
response = get_request_response.sync_detailed(client=self.client, request_id=request_id)
|
153
153
|
return model_from_detailed(response)
|
@@ -155,9 +155,9 @@ class RequestService(BaseService):
|
|
155
155
|
@api_method
|
156
156
|
def create(self, request: RequestCreate) -> Request:
|
157
157
|
"""
|
158
|
-
Create a Request.
|
158
|
+
Create a Legacy Request.
|
159
159
|
|
160
|
-
See https://benchling.com/api/reference#/
|
160
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/createRequest
|
161
161
|
"""
|
162
162
|
response = create_request.sync_detailed(client=self.client, json_body=request)
|
163
163
|
return model_from_detailed(response)
|
@@ -165,9 +165,9 @@ class RequestService(BaseService):
|
|
165
165
|
@api_method
|
166
166
|
def update(self, request_id: str, request: RequestUpdate) -> Request:
|
167
167
|
"""
|
168
|
-
Update a Request.
|
168
|
+
Update a Legacy Request.
|
169
169
|
|
170
|
-
See https://benchling.com/api/reference#/
|
170
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/patchRequest
|
171
171
|
"""
|
172
172
|
response = patch_request.sync_detailed(client=self.client, request_id=request_id, json_body=request)
|
173
173
|
return model_from_detailed(response)
|
@@ -175,9 +175,9 @@ class RequestService(BaseService):
|
|
175
175
|
@api_method
|
176
176
|
def execute_sample_groups(self, request_id: str, sample_groups: SampleGroupsStatusUpdate) -> None:
|
177
177
|
"""
|
178
|
-
Update the status of sample groups in a Request.
|
178
|
+
Update the status of sample groups in a Legacy Request.
|
179
179
|
|
180
|
-
See https://benchling.com/api/reference#/
|
180
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/executeRequestsSampleGroups
|
181
181
|
"""
|
182
182
|
response = execute_requests_sample_groups.sync_detailed(
|
183
183
|
client=self.client, request_id=request_id, json_body=sample_groups
|
@@ -187,9 +187,9 @@ class RequestService(BaseService):
|
|
187
187
|
@api_method
|
188
188
|
def request_fulfillment(self, request_fulfillment_id: str) -> RequestFulfillment:
|
189
189
|
"""
|
190
|
-
Get a Request's fulfillment.
|
190
|
+
Get a Legacy Request's fulfillment.
|
191
191
|
|
192
|
-
See https://benchling.com/api/reference#/
|
192
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/getRequestFulfillment
|
193
193
|
"""
|
194
194
|
response = get_request_fulfillment.sync_detailed(
|
195
195
|
client=self.client, request_fulfillment_id=request_fulfillment_id
|
@@ -218,9 +218,9 @@ class RequestService(BaseService):
|
|
218
218
|
self, entry_id: str, modified_at: Optional[str] = None, page_size: Optional[int] = None
|
219
219
|
) -> PageIterator[RequestFulfillment]:
|
220
220
|
"""
|
221
|
-
List Request Fulfillments.
|
221
|
+
List Legacy Request Fulfillments.
|
222
222
|
|
223
|
-
See https://benchling.com/api/reference#/
|
223
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/listRequestFulfillments
|
224
224
|
"""
|
225
225
|
|
226
226
|
def api_call(next_token: NextToken) -> Response[RequestFulfillmentsPaginatedList]:
|
@@ -241,9 +241,9 @@ class RequestService(BaseService):
|
|
241
241
|
self, request_id: str, tasks: Iterable[RequestTasksBulkCreate]
|
242
242
|
) -> RequestTasksBulkCreateResponse:
|
243
243
|
"""
|
244
|
-
Create tasks for a Request.
|
244
|
+
Create tasks for a Legacy Request.
|
245
245
|
|
246
|
-
See https://benchling.com/api/reference#/
|
246
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/bulkCreateRequestTasks
|
247
247
|
"""
|
248
248
|
create = RequestTasksBulkCreateRequest(tasks=list(tasks))
|
249
249
|
response = bulk_create_request_tasks.sync_detailed(
|
@@ -256,9 +256,9 @@ class RequestService(BaseService):
|
|
256
256
|
self, request_id: str, tasks: Iterable[RequestTaskBase]
|
257
257
|
) -> RequestTasksBulkUpdateResponse:
|
258
258
|
"""
|
259
|
-
Update tasks for a Request.
|
259
|
+
Update tasks for a Legacy Request.
|
260
260
|
|
261
|
-
See https://benchling.com/api/reference#/
|
261
|
+
See https://benchling.com/api/reference#/Legacy%20Requests/bulkUpdateRequestTasks
|
262
262
|
"""
|
263
263
|
update = RequestTasksBulkUpdateRequest(tasks=list(tasks))
|
264
264
|
response = bulk_update_request_tasks.sync_detailed(
|
@@ -63,6 +63,7 @@ class LocationService(BaseService):
|
|
63
63
|
sort: Optional[ListLocationsSort] = None,
|
64
64
|
schema_id: Optional[str] = None,
|
65
65
|
modified_at: Optional[str] = None,
|
66
|
+
created_at: Optional[str] = None,
|
66
67
|
name: Optional[str] = None,
|
67
68
|
name_includes: Optional[str] = None,
|
68
69
|
ancestor_storage_id: Optional[str] = None,
|
@@ -79,6 +80,7 @@ class LocationService(BaseService):
|
|
79
80
|
sort=none_as_unset(sort),
|
80
81
|
schema_id=none_as_unset(schema_id),
|
81
82
|
modified_at=none_as_unset(modified_at),
|
83
|
+
created_at=none_as_unset(created_at),
|
82
84
|
name=none_as_unset(name),
|
83
85
|
name_includes=none_as_unset(name_includes),
|
84
86
|
ancestor_storage_id=none_as_unset(ancestor_storage_id),
|
@@ -101,6 +103,7 @@ class LocationService(BaseService):
|
|
101
103
|
sort: Optional[Union[str, ListLocationsSort]] = None,
|
102
104
|
schema_id: Optional[str] = None,
|
103
105
|
modified_at: Optional[str] = None,
|
106
|
+
created_at: Optional[str] = None,
|
104
107
|
name: Optional[str] = None,
|
105
108
|
name_includes: Optional[str] = None,
|
106
109
|
ancestor_storage_id: Optional[str] = None,
|
@@ -124,6 +127,7 @@ class LocationService(BaseService):
|
|
124
127
|
sort=_translate_to_string_enum(ListLocationsSort, sort),
|
125
128
|
schema_id=schema_id,
|
126
129
|
modified_at=modified_at,
|
130
|
+
created_at=created_at,
|
127
131
|
name=name,
|
128
132
|
name_includes=name_includes,
|
129
133
|
ancestor_storage_id=ancestor_storage_id,
|
@@ -65,6 +65,7 @@ class MixtureService(BaseService):
|
|
65
65
|
def _mixtures_page(
|
66
66
|
self,
|
67
67
|
modified_at: Optional[str] = None,
|
68
|
+
created_at: Optional[str] = None,
|
68
69
|
name: Optional[str] = None,
|
69
70
|
name_includes: Optional[str] = None,
|
70
71
|
folder_id: Optional[str] = None,
|
@@ -89,6 +90,7 @@ class MixtureService(BaseService):
|
|
89
90
|
response = list_mixtures.sync_detailed(
|
90
91
|
client=self.client,
|
91
92
|
modified_at=none_as_unset(modified_at),
|
93
|
+
created_at=none_as_unset(created_at),
|
92
94
|
name=none_as_unset(name),
|
93
95
|
name_includes=none_as_unset(name_includes),
|
94
96
|
folder_id=none_as_unset(folder_id),
|
@@ -120,6 +122,7 @@ class MixtureService(BaseService):
|
|
120
122
|
def list(
|
121
123
|
self,
|
122
124
|
modified_at: Optional[str] = None,
|
125
|
+
created_at: Optional[str] = None,
|
123
126
|
name: Optional[str] = None,
|
124
127
|
name_includes: Optional[str] = None,
|
125
128
|
folder_id: Optional[str] = None,
|
@@ -151,6 +154,7 @@ class MixtureService(BaseService):
|
|
151
154
|
def api_call(next_token: NextToken) -> Response[MixturesPaginatedList]:
|
152
155
|
return self._mixtures_page(
|
153
156
|
modified_at=modified_at,
|
157
|
+
created_at=created_at,
|
154
158
|
name=name,
|
155
159
|
name_includes=name_includes,
|
156
160
|
folder_id=folder_id,
|
@@ -69,6 +69,7 @@ class MoleculeService(BaseService):
|
|
69
69
|
def _molecules_page(
|
70
70
|
self,
|
71
71
|
modified_at: Optional[str] = None,
|
72
|
+
created_at: Optional[str] = None,
|
72
73
|
name: Optional[str] = None,
|
73
74
|
name_includes: Optional[str] = None,
|
74
75
|
folder_id: Optional[str] = None,
|
@@ -92,6 +93,7 @@ class MoleculeService(BaseService):
|
|
92
93
|
response = list_molecules.sync_detailed(
|
93
94
|
client=self.client,
|
94
95
|
modified_at=none_as_unset(modified_at),
|
96
|
+
created_at=none_as_unset(created_at),
|
95
97
|
name=none_as_unset(name),
|
96
98
|
name_includes=none_as_unset(name_includes),
|
97
99
|
folder_id=none_as_unset(folder_id),
|
@@ -118,6 +120,7 @@ class MoleculeService(BaseService):
|
|
118
120
|
def list(
|
119
121
|
self,
|
120
122
|
modified_at: Optional[str] = None,
|
123
|
+
created_at: Optional[str] = None,
|
121
124
|
name: Optional[str] = None,
|
122
125
|
name_includes: Optional[str] = None,
|
123
126
|
folder_id: Optional[str] = None,
|
@@ -148,6 +151,7 @@ class MoleculeService(BaseService):
|
|
148
151
|
def api_call(next_token: NextToken) -> Response[MoleculesPaginatedList]:
|
149
152
|
return self._molecules_page(
|
150
153
|
modified_at=modified_at,
|
154
|
+
created_at=created_at,
|
151
155
|
name=name,
|
152
156
|
name_includes=name_includes,
|
153
157
|
folder_id=folder_id,
|
@@ -50,6 +50,7 @@ class NucleotideAlignmentsService(BaseService):
|
|
50
50
|
def _nucleotide_alignments_page(
|
51
51
|
self,
|
52
52
|
modified_at: Optional[str] = None,
|
53
|
+
created_at: Optional[str] = None,
|
53
54
|
name: Optional[str] = None,
|
54
55
|
name_includes: Optional[str] = None,
|
55
56
|
ids: Optional[List[str]] = None,
|
@@ -63,6 +64,7 @@ class NucleotideAlignmentsService(BaseService):
|
|
63
64
|
response = list_nucleotide_alignments.sync_detailed(
|
64
65
|
client=self.client,
|
65
66
|
modified_at=none_as_unset(modified_at),
|
67
|
+
created_at=none_as_unset(created_at),
|
66
68
|
name=none_as_unset(name),
|
67
69
|
name_includes=none_as_unset(name_includes),
|
68
70
|
ids=none_as_unset(optional_array_query_param(ids)),
|
@@ -79,6 +81,7 @@ class NucleotideAlignmentsService(BaseService):
|
|
79
81
|
def list(
|
80
82
|
self,
|
81
83
|
modified_at: Optional[str] = None,
|
84
|
+
created_at: Optional[str] = None,
|
82
85
|
name: Optional[str] = None,
|
83
86
|
name_includes: Optional[str] = None,
|
84
87
|
ids: Optional[List[str]] = None,
|
@@ -97,6 +100,7 @@ class NucleotideAlignmentsService(BaseService):
|
|
97
100
|
def api_call(next_token: NextToken) -> Response[NucleotideAlignmentsPaginatedList]:
|
98
101
|
return self._nucleotide_alignments_page(
|
99
102
|
modified_at=modified_at,
|
103
|
+
created_at=created_at,
|
100
104
|
name=name,
|
101
105
|
name_includes=name_includes,
|
102
106
|
ids=ids,
|
@@ -157,7 +157,8 @@ class OrganizationService(BaseService):
|
|
157
157
|
role: Optional[str] = None,
|
158
158
|
page_size: Optional[int] = None,
|
159
159
|
) -> PageIterator[MembershipsPaginatedList]:
|
160
|
-
"""
|
160
|
+
"""
|
161
|
+
Return all organization memberships in the given organization.
|
161
162
|
|
162
163
|
See https://benchling.com/api/reference#/Organizations/listOrganizationMemberships
|
163
164
|
"""
|
@@ -169,7 +170,8 @@ class OrganizationService(BaseService):
|
|
169
170
|
|
170
171
|
@api_method
|
171
172
|
def get_membership(self, organization_id: str, user_id: str) -> Membership:
|
172
|
-
"""
|
173
|
+
"""
|
174
|
+
Get organization membership.
|
173
175
|
|
174
176
|
See https://benchling.com/api/reference#/Organizations/getOrganizationMembership
|
175
177
|
"""
|
@@ -180,7 +182,8 @@ class OrganizationService(BaseService):
|
|
180
182
|
|
181
183
|
@api_method
|
182
184
|
def create_membership(self, organization_id: str, membership: MembershipCreate) -> Membership:
|
183
|
-
"""
|
185
|
+
"""
|
186
|
+
Create organization membership.
|
184
187
|
|
185
188
|
See https://benchling.com/api/reference#/Organizations/createOrganizationMembership
|
186
189
|
"""
|
@@ -195,7 +198,8 @@ class OrganizationService(BaseService):
|
|
195
198
|
def update_membership(
|
196
199
|
self, organization_id: str, user_id: str, membership: MembershipUpdate
|
197
200
|
) -> Membership:
|
198
|
-
"""
|
201
|
+
"""
|
202
|
+
Update organization membership by user ID and organization ID.
|
199
203
|
|
200
204
|
See https://benchling.com/api/reference#/Organizations/updateOrganizationMembership
|
201
205
|
"""
|
@@ -209,7 +213,8 @@ class OrganizationService(BaseService):
|
|
209
213
|
|
210
214
|
@api_method
|
211
215
|
def delete_membership(self, organization_id: str, user_id: str) -> None:
|
212
|
-
"""
|
216
|
+
"""
|
217
|
+
Delete a single team membership.
|
213
218
|
|
214
219
|
See https://benchling.com/api/reference#/Organizations/deleteOrganizationMembership
|
215
220
|
"""
|
@@ -78,6 +78,7 @@ class PlateService(BaseService):
|
|
78
78
|
sort: Optional[ListPlatesSort] = None,
|
79
79
|
schema_id: Optional[str] = None,
|
80
80
|
modified_at: Optional[str] = None,
|
81
|
+
created_at: Optional[str] = None,
|
81
82
|
name: Optional[str] = None,
|
82
83
|
name_includes: Optional[str] = None,
|
83
84
|
ancestor_storage_id: Optional[str] = None,
|
@@ -109,6 +110,7 @@ class PlateService(BaseService):
|
|
109
110
|
sort=none_as_unset(sort),
|
110
111
|
schema_id=none_as_unset(schema_id),
|
111
112
|
modified_at=none_as_unset(modified_at),
|
113
|
+
created_at=none_as_unset(created_at),
|
112
114
|
name=none_as_unset(name),
|
113
115
|
name_includes=none_as_unset(name_includes),
|
114
116
|
ancestor_storage_id=none_as_unset(ancestor_storage_id),
|
@@ -144,6 +146,7 @@ class PlateService(BaseService):
|
|
144
146
|
sort: Optional[Union[str, ListPlatesSort]] = None,
|
145
147
|
schema_id: Optional[str] = None,
|
146
148
|
modified_at: Optional[str] = None,
|
149
|
+
created_at: Optional[str] = None,
|
147
150
|
name: Optional[str] = None,
|
148
151
|
name_includes: Optional[str] = None,
|
149
152
|
ancestor_storage_id: Optional[str] = None,
|
@@ -188,6 +191,7 @@ class PlateService(BaseService):
|
|
188
191
|
sort=_translate_to_string_enum(ListPlatesSort, sort),
|
189
192
|
schema_id=schema_id,
|
190
193
|
modified_at=modified_at,
|
194
|
+
created_at=created_at,
|
191
195
|
name=name,
|
192
196
|
name_includes=name_includes,
|
193
197
|
ancestor_storage_id=ancestor_storage_id,
|
@@ -80,6 +80,7 @@ class RnaOligoService(BaseService):
|
|
80
80
|
def _rna_oligos_page(
|
81
81
|
self,
|
82
82
|
modified_at: Optional[str] = None,
|
83
|
+
created_at: Optional[str] = None,
|
83
84
|
name: Optional[str] = None,
|
84
85
|
bases: Optional[str] = None,
|
85
86
|
folder_id: Optional[str] = None,
|
@@ -106,6 +107,7 @@ class RnaOligoService(BaseService):
|
|
106
107
|
response = list_rna_oligos.sync_detailed(
|
107
108
|
client=self.client,
|
108
109
|
modified_at=none_as_unset(modified_at),
|
110
|
+
created_at=none_as_unset(created_at),
|
109
111
|
name=none_as_unset(name),
|
110
112
|
bases=none_as_unset(bases),
|
111
113
|
folder_id=none_as_unset(folder_id),
|
@@ -135,6 +137,7 @@ class RnaOligoService(BaseService):
|
|
135
137
|
def list(
|
136
138
|
self,
|
137
139
|
modified_at: Optional[str] = None,
|
140
|
+
created_at: Optional[str] = None,
|
138
141
|
name: Optional[str] = None,
|
139
142
|
bases: Optional[str] = None,
|
140
143
|
folder_id: Optional[str] = None,
|
@@ -166,6 +169,7 @@ class RnaOligoService(BaseService):
|
|
166
169
|
def api_call(next_token: NextToken) -> Response[RnaOligosPaginatedList]:
|
167
170
|
return self._rna_oligos_page(
|
168
171
|
modified_at=modified_at,
|
172
|
+
created_at=created_at,
|
169
173
|
name=name,
|
170
174
|
bases=bases,
|
171
175
|
folder_id=folder_id,
|
@@ -86,6 +86,7 @@ class RnaSequenceService(BaseService):
|
|
86
86
|
def _rna_sequences_page(
|
87
87
|
self,
|
88
88
|
modified_at: Optional[str] = None,
|
89
|
+
created_at: Optional[str] = None,
|
89
90
|
name: Optional[str] = None,
|
90
91
|
bases: Optional[str] = None,
|
91
92
|
folder_id: Optional[str] = None,
|
@@ -112,6 +113,7 @@ class RnaSequenceService(BaseService):
|
|
112
113
|
response = list_rna_sequences.sync_detailed(
|
113
114
|
client=self.client,
|
114
115
|
modified_at=none_as_unset(modified_at),
|
116
|
+
created_at=none_as_unset(created_at),
|
115
117
|
name=none_as_unset(name),
|
116
118
|
bases=none_as_unset(bases),
|
117
119
|
folder_id=none_as_unset(folder_id),
|
@@ -141,6 +143,7 @@ class RnaSequenceService(BaseService):
|
|
141
143
|
def list(
|
142
144
|
self,
|
143
145
|
modified_at: Optional[str] = None,
|
146
|
+
created_at: Optional[str] = None,
|
144
147
|
name: Optional[str] = None,
|
145
148
|
bases: Optional[str] = None,
|
146
149
|
folder_id: Optional[str] = None,
|
@@ -174,6 +177,7 @@ class RnaSequenceService(BaseService):
|
|
174
177
|
def api_call(next_token: NextToken) -> Response[RnaSequencesPaginatedList]:
|
175
178
|
return self._rna_sequences_page(
|
176
179
|
modified_at=modified_at,
|
180
|
+
created_at=created_at,
|
177
181
|
name=name,
|
178
182
|
bases=bases,
|
179
183
|
folder_id=folder_id,
|
@@ -103,13 +103,7 @@ def _deserialize_task_from_instance(task_instance) -> AsyncTask:
|
|
103
103
|
return AsyncTask.from_dict(serialized)
|
104
104
|
except (NotPresentErrorAlpha, NotPresentErrorBeta, NotPresentError):
|
105
105
|
pass
|
106
|
+
|
106
107
|
serialized = task_instance.to_dict()
|
107
|
-
# AsyncErrors data is always in additional_properties,
|
108
|
-
# It has no modeled properties of its own. They don't copy over properly so manually move them
|
109
|
-
try:
|
110
|
-
if hasattr(task_instance, "errors") and task_instance.errors is not None:
|
111
|
-
serialized["errors"] = task_instance.errors.additional_properties
|
112
|
-
except (NotPresentErrorAlpha, NotPresentErrorBeta, NotPresentError):
|
113
|
-
pass
|
114
108
|
serialized["response"] = UNSET
|
115
109
|
return AsyncTask.from_dict(serialized)
|