benchling-sdk 1.18.1__py3-none-any.whl → 1.20__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.
Files changed (29) hide show
  1. benchling_sdk/apps/canvas/errors.py +6 -0
  2. benchling_sdk/apps/canvas/framework.py +30 -10
  3. benchling_sdk/helpers/client_helpers.py +5 -0
  4. benchling_sdk/helpers/task_helpers.py +145 -0
  5. benchling_sdk/services/v2/alpha/v2_alpha_assembly_service.py +6 -4
  6. benchling_sdk/services/v2/base_service.py +11 -0
  7. benchling_sdk/services/v2/beta/v2_beta_audit_service.py +18 -13
  8. benchling_sdk/services/v2/beta/v2_beta_data_frame_service.py +9 -9
  9. benchling_sdk/services/v2/stable/aa_sequence_service.py +23 -13
  10. benchling_sdk/services/v2/stable/app_service.py +4 -2
  11. benchling_sdk/services/v2/stable/assay_result_service.py +3 -3
  12. benchling_sdk/services/v2/stable/container_service.py +14 -7
  13. benchling_sdk/services/v2/stable/custom_entity_service.py +15 -7
  14. benchling_sdk/services/v2/stable/dna_alignments_service.py +9 -5
  15. benchling_sdk/services/v2/stable/dna_oligo_service.py +13 -7
  16. benchling_sdk/services/v2/stable/dna_sequence_service.py +28 -19
  17. benchling_sdk/services/v2/stable/export_service.py +4 -4
  18. benchling_sdk/services/v2/stable/feature_library_service.py +6 -3
  19. benchling_sdk/services/v2/stable/lab_automation_service.py +5 -5
  20. benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +5 -5
  21. benchling_sdk/services/v2/stable/oligo_service.py +4 -3
  22. benchling_sdk/services/v2/stable/registry_service.py +3 -3
  23. benchling_sdk/services/v2/stable/rna_oligo_service.py +13 -7
  24. benchling_sdk/services/v2/stable/rna_sequence_service.py +17 -11
  25. benchling_sdk/services/v2/stable/task_service.py +4 -0
  26. {benchling_sdk-1.18.1.dist-info → benchling_sdk-1.20.dist-info}/METADATA +2 -2
  27. {benchling_sdk-1.18.1.dist-info → benchling_sdk-1.20.dist-info}/RECORD +29 -28
  28. {benchling_sdk-1.18.1.dist-info → benchling_sdk-1.20.dist-info}/LICENSE +0 -0
  29. {benchling_sdk-1.18.1.dist-info → benchling_sdk-1.20.dist-info}/WHEEL +0 -0
@@ -34,8 +34,10 @@ from benchling_sdk.helpers.serialization_helpers import (
34
34
  optional_array_query_param,
35
35
  schema_fields_query_param,
36
36
  )
37
+ from benchling_sdk.helpers.task_helpers import TaskHelper
37
38
  from benchling_sdk.models import (
38
- AsyncTaskLink,
39
+ BulkCreateContainersAsyncTaskResponse,
40
+ BulkUpdateContainersAsyncTaskResponse,
39
41
  Container,
40
42
  ContainerBulkUpdateItem,
41
43
  ContainerContent,
@@ -59,6 +61,7 @@ from benchling_sdk.models import (
59
61
  MultipleContainersTransfersList,
60
62
  PrintLabels,
61
63
  SampleRestrictionStatus,
64
+ TransfersAsyncTaskResponse,
62
65
  )
63
66
  from benchling_sdk.services.v2.base_service import BaseService
64
67
 
@@ -264,7 +267,9 @@ class ContainerService(BaseService):
264
267
  return containers_list.containers
265
268
 
266
269
  @api_method
267
- def bulk_create(self, containers: Iterable[ContainerCreate]) -> AsyncTaskLink:
270
+ def bulk_create(
271
+ self, containers: Iterable[ContainerCreate]
272
+ ) -> TaskHelper[BulkCreateContainersAsyncTaskResponse]:
268
273
  """
269
274
  Bulk create containers.
270
275
 
@@ -272,10 +277,12 @@ class ContainerService(BaseService):
272
277
  """
273
278
  body = ContainersBulkCreateRequest(list(containers))
274
279
  response = bulk_create_containers.sync_detailed(client=self.client, json_body=body)
275
- return model_from_detailed(response)
280
+ return self._task_helper_from_response(response, BulkCreateContainersAsyncTaskResponse)
276
281
 
277
282
  @api_method
278
- def bulk_update(self, containers: Iterable[ContainerBulkUpdateItem]) -> AsyncTaskLink:
283
+ def bulk_update(
284
+ self, containers: Iterable[ContainerBulkUpdateItem]
285
+ ) -> TaskHelper[BulkUpdateContainersAsyncTaskResponse]:
279
286
  """
280
287
  Bulk update containers.
281
288
 
@@ -283,7 +290,7 @@ class ContainerService(BaseService):
283
290
  """
284
291
  body = ContainersBulkUpdateRequest(list(containers))
285
292
  response = bulk_update_containers.sync_detailed(client=self.client, json_body=body)
286
- return model_from_detailed(response)
293
+ return self._task_helper_from_response(response, BulkUpdateContainersAsyncTaskResponse)
287
294
 
288
295
  @api_method
289
296
  def create(self, container: ContainerCreate) -> Container:
@@ -440,7 +447,7 @@ class ContainerService(BaseService):
440
447
  @api_method
441
448
  def transfer_into_containers(
442
449
  self, transfer_requests: Iterable[MultipleContainersTransfer]
443
- ) -> AsyncTaskLink:
450
+ ) -> TaskHelper[TransfersAsyncTaskResponse]:
444
451
  """
445
452
  Transfer into containers.
446
453
 
@@ -448,4 +455,4 @@ class ContainerService(BaseService):
448
455
  """
449
456
  multiple_requests = MultipleContainersTransfersList(transfers=list(transfer_requests))
450
457
  response = transfer_into_containers.sync_detailed(client=self.client, json_body=multiple_requests)
451
- return model_from_detailed(response)
458
+ return self._task_helper_from_response(response, TransfersAsyncTaskResponse)
@@ -26,8 +26,10 @@ from benchling_sdk.helpers.serialization_helpers import (
26
26
  optional_array_query_param,
27
27
  schema_fields_query_param,
28
28
  )
29
+ from benchling_sdk.helpers.task_helpers import TaskHelper
29
30
  from benchling_sdk.models import (
30
- AsyncTaskLink,
31
+ BulkCreateCustomEntitiesAsyncTaskResponse,
32
+ BulkUpdateCustomEntitiesAsyncTaskResponse,
31
33
  CustomEntitiesArchivalChange,
32
34
  CustomEntitiesArchive,
33
35
  CustomEntitiesBulkCreateRequest,
@@ -250,7 +252,9 @@ class CustomEntityService(BaseService):
250
252
  return custom_entities.custom_entities
251
253
 
252
254
  @api_method
253
- def bulk_create(self, entities: Iterable[CustomEntityBulkCreate]) -> AsyncTaskLink:
255
+ def bulk_create(
256
+ self, entities: Iterable[CustomEntityBulkCreate]
257
+ ) -> TaskHelper[BulkCreateCustomEntitiesAsyncTaskResponse]:
254
258
  """
255
259
  Bulk create custom entities.
256
260
 
@@ -258,10 +262,12 @@ class CustomEntityService(BaseService):
258
262
  """
259
263
  body = CustomEntitiesBulkCreateRequest(list(entities))
260
264
  response = bulk_create_custom_entities.sync_detailed(client=self.client, json_body=body)
261
- return model_from_detailed(response)
265
+ return self._task_helper_from_response(response, BulkCreateCustomEntitiesAsyncTaskResponse)
262
266
 
263
267
  @api_method
264
- def bulk_update(self, entities: Iterable[CustomEntityBulkUpdate]) -> AsyncTaskLink:
268
+ def bulk_update(
269
+ self, entities: Iterable[CustomEntityBulkUpdate]
270
+ ) -> TaskHelper[BulkUpdateCustomEntitiesAsyncTaskResponse]:
265
271
  """
266
272
  Bulk update custom entities.
267
273
 
@@ -269,7 +275,7 @@ class CustomEntityService(BaseService):
269
275
  """
270
276
  body = CustomEntitiesBulkUpdateRequest(list(entities))
271
277
  response = bulk_update_custom_entities.sync_detailed(client=self.client, json_body=body)
272
- return model_from_detailed(response)
278
+ return self._task_helper_from_response(response, BulkUpdateCustomEntitiesAsyncTaskResponse)
273
279
 
274
280
  @api_method
275
281
  def upsert(self, entity_registry_id: str, entity: CustomEntityUpsertRequest) -> CustomEntity:
@@ -284,11 +290,13 @@ class CustomEntityService(BaseService):
284
290
  return model_from_detailed(response)
285
291
 
286
292
  @api_method
287
- def bulk_upsert(self, body: CustomEntitiesBulkUpsertRequest) -> AsyncTaskLink:
293
+ def bulk_upsert(
294
+ self, body: CustomEntitiesBulkUpsertRequest
295
+ ) -> TaskHelper[BulkUpdateCustomEntitiesAsyncTaskResponse]:
288
296
  """
289
297
  Bulk update custom entities.
290
298
 
291
299
  See https://benchling.com/api/reference#/Custom%20Entities/bulkUpsertCustomEntities
292
300
  """
293
301
  response = bulk_upsert_custom_entities.sync_detailed(client=self.client, json_body=body)
294
- return model_from_detailed(response)
302
+ return self._task_helper_from_response(response, BulkUpdateCustomEntitiesAsyncTaskResponse)
@@ -16,8 +16,8 @@ from benchling_sdk.helpers.logging_helpers import log_deprecation
16
16
  from benchling_sdk.helpers.pagination_helpers import NextToken, PageIterator
17
17
  from benchling_sdk.helpers.response_helpers import model_from_detailed
18
18
  from benchling_sdk.helpers.serialization_helpers import none_as_unset, optional_array_query_param
19
+ from benchling_sdk.helpers.task_helpers import TaskHelper
19
20
  from benchling_sdk.models import (
20
- AsyncTaskLink,
21
21
  DnaAlignment,
22
22
  DnaAlignmentsPaginatedList,
23
23
  DnaAlignmentSummary,
@@ -126,7 +126,9 @@ class DnaAlignmentsService(BaseService):
126
126
  return PageIterator(api_call, results_extractor)
127
127
 
128
128
  @api_method
129
- def create_template_alignment(self, template_alignment: DnaTemplateAlignmentCreate) -> AsyncTaskLink:
129
+ def create_template_alignment(
130
+ self, template_alignment: DnaTemplateAlignmentCreate
131
+ ) -> TaskHelper[DnaAlignment]:
130
132
  """
131
133
  Create a template DNA alignment (Deprecated).
132
134
 
@@ -141,10 +143,12 @@ class DnaAlignmentsService(BaseService):
141
143
  response = create_dna_template_alignment.sync_detailed(
142
144
  client=self.client, json_body=template_alignment
143
145
  )
144
- return model_from_detailed(response)
146
+ return self._task_helper_from_response(response, DnaAlignment)
145
147
 
146
148
  @api_method
147
- def create_consensus_alignment(self, consensus_alignment: DnaConsensusAlignmentCreate) -> AsyncTaskLink:
149
+ def create_consensus_alignment(
150
+ self, consensus_alignment: DnaConsensusAlignmentCreate
151
+ ) -> TaskHelper[DnaAlignment]:
148
152
  """
149
153
  Create a consensus DNA alignment (Deprecated).
150
154
 
@@ -159,7 +163,7 @@ class DnaAlignmentsService(BaseService):
159
163
  response = create_dna_consensus_alignment.sync_detailed(
160
164
  client=self.client, json_body=consensus_alignment
161
165
  )
162
- return model_from_detailed(response)
166
+ return self._task_helper_from_response(response, DnaAlignment)
163
167
 
164
168
  @api_method
165
169
  def delete_alignment(self, dna_alignment_id: str) -> None:
@@ -24,8 +24,10 @@ from benchling_sdk.helpers.serialization_helpers import (
24
24
  optional_array_query_param,
25
25
  schema_fields_query_param,
26
26
  )
27
+ from benchling_sdk.helpers.task_helpers import TaskHelper
27
28
  from benchling_sdk.models import (
28
- AsyncTaskLink,
29
+ BulkCreateDnaOligosAsyncTaskResponse,
30
+ BulkUpdateDnaOligosAsyncTaskResponse,
29
31
  DnaOligo,
30
32
  DnaOligoBulkUpdate,
31
33
  DnaOligoCreate,
@@ -227,7 +229,9 @@ class DnaOligoService(BaseService):
227
229
  return model_from_detailed(response)
228
230
 
229
231
  @api_method
230
- def bulk_create(self, dna_oligos: Iterable[DnaOligoCreate]) -> AsyncTaskLink:
232
+ def bulk_create(
233
+ self, dna_oligos: Iterable[DnaOligoCreate]
234
+ ) -> TaskHelper[BulkCreateDnaOligosAsyncTaskResponse]:
231
235
  """
232
236
  Bulk create DNA Oligos.
233
237
 
@@ -235,10 +239,12 @@ class DnaOligoService(BaseService):
235
239
  """
236
240
  body = DnaOligosBulkCreateRequest(list(dna_oligos))
237
241
  response = bulk_create_dna_oligos.sync_detailed(client=self.client, json_body=body)
238
- return model_from_detailed(response)
242
+ return self._task_helper_from_response(response, BulkCreateDnaOligosAsyncTaskResponse)
239
243
 
240
244
  @api_method
241
- def bulk_update(self, dna_oligos: Iterable[DnaOligoBulkUpdate]) -> AsyncTaskLink:
245
+ def bulk_update(
246
+ self, dna_oligos: Iterable[DnaOligoBulkUpdate]
247
+ ) -> TaskHelper[BulkUpdateDnaOligosAsyncTaskResponse]:
242
248
  """
243
249
  Bulk update DNA oligos.
244
250
 
@@ -246,7 +252,7 @@ class DnaOligoService(BaseService):
246
252
  """
247
253
  body = DnaOligosBulkUpdateRequest(list(dna_oligos))
248
254
  response = bulk_update_dna_oligos.sync_detailed(client=self.client, json_body=body)
249
- return model_from_detailed(response)
255
+ return self._task_helper_from_response(response, BulkUpdateDnaOligosAsyncTaskResponse)
250
256
 
251
257
  @api_method
252
258
  def upsert(self, entity_registry_id: str, dna_oligo: OligoUpsertRequest) -> DnaOligo:
@@ -263,7 +269,7 @@ class DnaOligoService(BaseService):
263
269
  @api_method
264
270
  def bulk_upsert(
265
271
  self, body: DnaOligosBulkUpsertRequest, returning: Optional[Iterable[str]] = None
266
- ) -> AsyncTaskLink:
272
+ ) -> TaskHelper[BulkUpdateDnaOligosAsyncTaskResponse]:
267
273
  """
268
274
  Bulk create or update DNA Oligos.
269
275
 
@@ -273,4 +279,4 @@ class DnaOligoService(BaseService):
273
279
  response = bulk_upsert_dna_oligos.sync_detailed(
274
280
  client=self.client, json_body=body, returning=none_as_unset(returning_string)
275
281
  )
276
- return model_from_detailed(response)
282
+ return self._task_helper_from_response(response, BulkUpdateDnaOligosAsyncTaskResponse)
@@ -34,10 +34,12 @@ from benchling_sdk.helpers.serialization_helpers import (
34
34
  optional_array_query_param,
35
35
  schema_fields_query_param,
36
36
  )
37
+ from benchling_sdk.helpers.task_helpers import EmptyTaskResponse, TaskHelper
37
38
  from benchling_sdk.models import (
38
- AsyncTaskLink,
39
39
  AutoAnnotateDnaSequences,
40
40
  AutofillSequences,
41
+ BulkCreateDnaSequencesAsyncTaskResponse,
42
+ BulkUpdateDnaSequencesAsyncTaskResponse,
41
43
  DnaSequence,
42
44
  DnaSequenceBulkCreate,
43
45
  DnaSequenceBulkUpdate,
@@ -53,6 +55,7 @@ from benchling_sdk.models import (
53
55
  DnaSequenceUpdate,
54
56
  DnaSequenceUpsertRequest,
55
57
  EntityArchiveReason,
58
+ FindMatchingRegionsDnaAsyncTaskResponse,
56
59
  ListDNASequencesSort,
57
60
  MatchBasesRequest,
58
61
  OptimizeCodons,
@@ -267,7 +270,9 @@ class DnaSequenceService(BaseService):
267
270
  return dna_sequences_results.dna_sequences
268
271
 
269
272
  @api_method
270
- def bulk_create(self, dna_sequences: Iterable[DnaSequenceBulkCreate]) -> AsyncTaskLink:
273
+ def bulk_create(
274
+ self, dna_sequences: Iterable[DnaSequenceBulkCreate]
275
+ ) -> TaskHelper[BulkCreateDnaSequencesAsyncTaskResponse]:
271
276
  """
272
277
  Bulk create DNA sequences.
273
278
 
@@ -275,10 +280,12 @@ class DnaSequenceService(BaseService):
275
280
  """
276
281
  body = DnaSequencesBulkCreateRequest(list(dna_sequences))
277
282
  response = bulk_create_dna_sequences.sync_detailed(client=self.client, json_body=body)
278
- return model_from_detailed(response)
283
+ return self._task_helper_from_response(response, BulkCreateDnaSequencesAsyncTaskResponse)
279
284
 
280
285
  @api_method
281
- def bulk_update(self, dna_sequences: Iterable[DnaSequenceBulkUpdate]) -> AsyncTaskLink:
286
+ def bulk_update(
287
+ self, dna_sequences: Iterable[DnaSequenceBulkUpdate]
288
+ ) -> TaskHelper[BulkUpdateDnaSequencesAsyncTaskResponse]:
282
289
  """
283
290
  Bulk update DNA sequences.
284
291
 
@@ -286,10 +293,10 @@ class DnaSequenceService(BaseService):
286
293
  """
287
294
  body = DnaSequencesBulkUpdateRequest(list(dna_sequences))
288
295
  response = bulk_update_dna_sequences.sync_detailed(client=self.client, json_body=body)
289
- return model_from_detailed(response)
296
+ return self._task_helper_from_response(response, BulkUpdateDnaSequencesAsyncTaskResponse)
290
297
 
291
298
  @api_method
292
- def autofill_parts(self, dna_sequence_ids: Iterable[str]) -> AsyncTaskLink:
299
+ def autofill_parts(self, dna_sequence_ids: Iterable[str]) -> TaskHelper[EmptyTaskResponse]:
293
300
  """
294
301
  Autofill DNA sequence parts.
295
302
 
@@ -297,10 +304,10 @@ class DnaSequenceService(BaseService):
297
304
  """
298
305
  body = AutofillSequences(dna_sequence_ids=list(dna_sequence_ids))
299
306
  response = autofill_dna_sequence_parts.sync_detailed(client=self.client, json_body=body)
300
- return model_from_detailed(response)
307
+ return self._task_helper_from_response(response, EmptyTaskResponse)
301
308
 
302
309
  @api_method
303
- def autofill_transcriptions(self, dna_sequence_ids: Iterable[str]) -> AsyncTaskLink:
310
+ def autofill_transcriptions(self, dna_sequence_ids: Iterable[str]) -> TaskHelper[EmptyTaskResponse]:
304
311
  """
305
312
  Autofill DNA sequence transcriptions.
306
313
 
@@ -308,10 +315,10 @@ class DnaSequenceService(BaseService):
308
315
  """
309
316
  body = AutofillSequences(dna_sequence_ids=list(dna_sequence_ids))
310
317
  response = autofill_dna_sequence_transcriptions.sync_detailed(client=self.client, json_body=body)
311
- return model_from_detailed(response)
318
+ return self._task_helper_from_response(response, EmptyTaskResponse)
312
319
 
313
320
  @api_method
314
- def autofill_translations(self, dna_sequence_ids: Iterable[str]) -> AsyncTaskLink:
321
+ def autofill_translations(self, dna_sequence_ids: Iterable[str]) -> TaskHelper[EmptyTaskResponse]:
315
322
  """
316
323
  Autofill DNA sequence translations.
317
324
 
@@ -319,17 +326,17 @@ class DnaSequenceService(BaseService):
319
326
  """
320
327
  body = AutofillSequences(dna_sequence_ids=list(dna_sequence_ids))
321
328
  response = autofill_dna_sequence_translations.sync_detailed(client=self.client, json_body=body)
322
- return model_from_detailed(response)
329
+ return self._task_helper_from_response(response, EmptyTaskResponse)
323
330
 
324
331
  @api_method
325
- def auto_annotate(self, auto_annotate: AutoAnnotateDnaSequences) -> AsyncTaskLink:
332
+ def auto_annotate(self, auto_annotate: AutoAnnotateDnaSequences) -> TaskHelper[EmptyTaskResponse]:
326
333
  """
327
334
  Auto-annotate DNA sequences with matching features from specified Feature Libraries.
328
335
 
329
336
  See https://benchling.com/api/reference#/DNA%20Sequences/autoAnnotateDnaSequences
330
337
  """
331
338
  response = auto_annotate_dna_sequences.sync_detailed(client=self.client, json_body=auto_annotate)
332
- return model_from_detailed(response)
339
+ return self._task_helper_from_response(response, EmptyTaskResponse)
333
340
 
334
341
  @api_method
335
342
  def upsert(self, entity_registry_id: str, dna_sequence: DnaSequenceUpsertRequest) -> DnaSequence:
@@ -346,7 +353,7 @@ class DnaSequenceService(BaseService):
346
353
  @api_method
347
354
  def bulk_upsert(
348
355
  self, body: DnaSequencesBulkUpsertRequest, returning: Optional[Iterable[str]] = None
349
- ) -> AsyncTaskLink:
356
+ ) -> TaskHelper[BulkUpdateDnaSequencesAsyncTaskResponse]:
350
357
  """
351
358
  Bulk create or update DNA sequences.
352
359
 
@@ -356,7 +363,7 @@ class DnaSequenceService(BaseService):
356
363
  response = bulk_upsert_dna_sequences.sync_detailed(
357
364
  client=self.client, json_body=body, returning=none_as_unset(returning_string)
358
365
  )
359
- return model_from_detailed(response)
366
+ return self._task_helper_from_response(response, BulkUpdateDnaSequencesAsyncTaskResponse)
360
367
 
361
368
  @api_method
362
369
  def match_bases(self, match_bases_request: MatchBasesRequest) -> DnaSequencesPaginatedList:
@@ -390,7 +397,9 @@ class DnaSequenceService(BaseService):
390
397
  return model_from_detailed(response)
391
398
 
392
399
  @api_method
393
- def find_matching_regions(self, find_matching_region: DnaSequencesFindMatchingRegion) -> AsyncTaskLink:
400
+ def find_matching_regions(
401
+ self, find_matching_region: DnaSequencesFindMatchingRegion
402
+ ) -> TaskHelper[FindMatchingRegionsDnaAsyncTaskResponse]:
394
403
  """
395
404
  Find matching regions for DNA sequences.
396
405
 
@@ -399,14 +408,14 @@ class DnaSequenceService(BaseService):
399
408
  response = find_matching_regions_dna_sequences.sync_detailed(
400
409
  client=self.client, json_body=find_matching_region
401
410
  )
402
- return model_from_detailed(response)
411
+ return self._task_helper_from_response(response, FindMatchingRegionsDnaAsyncTaskResponse)
403
412
 
404
413
  @api_method
405
- def optimize_codons(self, optimize_request: OptimizeCodons) -> AsyncTaskLink:
414
+ def optimize_codons(self, optimize_request: OptimizeCodons) -> TaskHelper[EmptyTaskResponse]:
406
415
  """
407
416
  Create codon-optimized DNA sequences.
408
417
 
409
418
  See https://benchling.com/api/reference#/DNA%20Sequences/optimizeCodons
410
419
  """
411
420
  response = optimize_codons.sync_detailed(client=self.client, json_body=optimize_request)
412
- return model_from_detailed(response)
421
+ return self._task_helper_from_response(response, EmptyTaskResponse)
@@ -1,8 +1,8 @@
1
1
  from benchling_api_client.v2.stable.api.exports import export_item
2
2
 
3
3
  from benchling_sdk.helpers.decorators import api_method
4
- from benchling_sdk.helpers.response_helpers import model_from_detailed
5
- from benchling_sdk.models import AsyncTaskLink, ExportItemRequest
4
+ from benchling_sdk.helpers.task_helpers import TaskHelper
5
+ from benchling_sdk.models import ExportItemRequest, ExportsAsyncTaskResponse
6
6
  from benchling_sdk.services.v2.base_service import BaseService
7
7
 
8
8
 
@@ -16,7 +16,7 @@ class ExportService(BaseService):
16
16
  """
17
17
 
18
18
  @api_method
19
- def export(self, export_request: ExportItemRequest) -> AsyncTaskLink:
19
+ def export(self, export_request: ExportItemRequest) -> TaskHelper[ExportsAsyncTaskResponse]:
20
20
  """
21
21
  Export a Notebook Entry.
22
22
 
@@ -27,4 +27,4 @@ class ExportService(BaseService):
27
27
  See https://benchling.com/api/reference#/Exports/exportItem
28
28
  """
29
29
  response = export_item.sync_detailed(client=self.client, json_body=export_request)
30
- return model_from_detailed(response)
30
+ return self._task_helper_from_response(response, ExportsAsyncTaskResponse)
@@ -19,8 +19,9 @@ from benchling_sdk.helpers.decorators import api_method
19
19
  from benchling_sdk.helpers.pagination_helpers import NextToken, PageIterator
20
20
  from benchling_sdk.helpers.response_helpers import model_from_detailed
21
21
  from benchling_sdk.helpers.serialization_helpers import none_as_unset, optional_array_query_param
22
+ from benchling_sdk.helpers.task_helpers import TaskHelper
22
23
  from benchling_sdk.models import (
23
- AsyncTaskLink,
24
+ BulkCreateFeaturesAsyncTaskResponse,
24
25
  Feature,
25
26
  FeatureBulkCreate,
26
27
  FeatureCreate,
@@ -244,7 +245,9 @@ class FeatureLibraryService(BaseService):
244
245
  return model_from_detailed(response)
245
246
 
246
247
  @api_method
247
- def bulk_create_features(self, features: Iterable[FeatureBulkCreate]) -> AsyncTaskLink:
248
+ def bulk_create_features(
249
+ self, features: Iterable[FeatureBulkCreate]
250
+ ) -> TaskHelper[BulkCreateFeaturesAsyncTaskResponse]:
248
251
  """
249
252
  Bulk create features.
250
253
 
@@ -252,4 +255,4 @@ class FeatureLibraryService(BaseService):
252
255
  """
253
256
  body = FeaturesBulkCreateRequest(list(features))
254
257
  response = bulk_create_features.sync_detailed(client=self.client, json_body=body)
255
- return model_from_detailed(response)
258
+ return self._task_helper_from_response(response, BulkCreateFeaturesAsyncTaskResponse)
@@ -21,8 +21,8 @@ from benchling_sdk.helpers.decorators import api_method
21
21
  from benchling_sdk.helpers.pagination_helpers import NextToken, PageIterator
22
22
  from benchling_sdk.helpers.response_helpers import model_from_detailed
23
23
  from benchling_sdk.helpers.serialization_helpers import none_as_unset
24
+ from benchling_sdk.helpers.task_helpers import TaskHelper
24
25
  from benchling_sdk.models import (
25
- AsyncTaskLink,
26
26
  AutomationInputGenerator,
27
27
  AutomationInputGeneratorUpdate,
28
28
  AutomationOutputProcessor,
@@ -101,7 +101,7 @@ class LabAutomationService(BaseService):
101
101
  return model_from_detailed(response)
102
102
 
103
103
  @api_method
104
- def generate_input(self, input_generator_id: str) -> AsyncTaskLink:
104
+ def generate_input(self, input_generator_id: str) -> TaskHelper[AutomationInputGenerator]:
105
105
  """
106
106
  Generate input with an Automation Input Generator.
107
107
 
@@ -110,10 +110,10 @@ class LabAutomationService(BaseService):
110
110
  response = generate_input_with_automation_input_generator.sync_detailed(
111
111
  client=self.client, input_generator_id=input_generator_id
112
112
  )
113
- return model_from_detailed(response)
113
+ return self._task_helper_from_response(response, AutomationInputGenerator)
114
114
 
115
115
  @api_method
116
- def process_output(self, output_processor_id: str) -> AsyncTaskLink:
116
+ def process_output(self, output_processor_id: str) -> TaskHelper[AutomationOutputProcessor]:
117
117
  """
118
118
  Process output with an Automation Output Processor.
119
119
 
@@ -122,7 +122,7 @@ class LabAutomationService(BaseService):
122
122
  response = process_output_with_automation_output_processor.sync_detailed(
123
123
  client=self.client, output_processor_id=output_processor_id
124
124
  )
125
- return model_from_detailed(response)
125
+ return self._task_helper_from_response(response, AutomationOutputProcessor)
126
126
 
127
127
  @api_method
128
128
  def _automation_output_processors_page(
@@ -15,8 +15,8 @@ from benchling_sdk.helpers.decorators import api_method
15
15
  from benchling_sdk.helpers.pagination_helpers import NextToken, PageIterator
16
16
  from benchling_sdk.helpers.response_helpers import model_from_detailed
17
17
  from benchling_sdk.helpers.serialization_helpers import none_as_unset, optional_array_query_param
18
+ from benchling_sdk.helpers.task_helpers import TaskHelper
18
19
  from benchling_sdk.models import (
19
- AsyncTaskLink,
20
20
  ListNucleotideAlignmentsSort,
21
21
  NucleotideAlignment,
22
22
  NucleotideAlignmentsPaginatedList,
@@ -118,7 +118,7 @@ class NucleotideAlignmentsService(BaseService):
118
118
  @api_method
119
119
  def create_template_alignment(
120
120
  self, template_alignment: NucleotideTemplateAlignmentCreate
121
- ) -> AsyncTaskLink:
121
+ ) -> TaskHelper[NucleotideAlignment]:
122
122
  """
123
123
  Create a template Nucleotide alignment.
124
124
 
@@ -127,12 +127,12 @@ class NucleotideAlignmentsService(BaseService):
127
127
  response = create_template_nucleotide_alignment.sync_detailed(
128
128
  client=self.client, json_body=template_alignment
129
129
  )
130
- return model_from_detailed(response)
130
+ return self._task_helper_from_response(response, NucleotideAlignment)
131
131
 
132
132
  @api_method
133
133
  def create_consensus_alignment(
134
134
  self, consensus_alignment: NucleotideConsensusAlignmentCreate
135
- ) -> AsyncTaskLink:
135
+ ) -> TaskHelper[NucleotideAlignment]:
136
136
  """
137
137
  Create a consensus Nucleotide alignment.
138
138
 
@@ -141,7 +141,7 @@ class NucleotideAlignmentsService(BaseService):
141
141
  response = create_consensus_nucleotide_alignment.sync_detailed(
142
142
  client=self.client, json_body=consensus_alignment
143
143
  )
144
- return model_from_detailed(response)
144
+ return self._task_helper_from_response(response, NucleotideAlignment)
145
145
 
146
146
  @api_method
147
147
  def delete_alignment(self, alignment_id: str) -> None:
@@ -23,8 +23,9 @@ from benchling_sdk.helpers.serialization_helpers import (
23
23
  optional_array_query_param,
24
24
  schema_fields_query_param,
25
25
  )
26
+ from benchling_sdk.helpers.task_helpers import TaskHelper
26
27
  from benchling_sdk.models import (
27
- AsyncTaskLink,
28
+ BulkCreateDnaOligosAsyncTaskResponse,
28
29
  DnaOligo,
29
30
  EntityArchiveReason,
30
31
  ListOligosSort,
@@ -269,7 +270,7 @@ class OligoService(BaseService):
269
270
  return oligos_results.oligos
270
271
 
271
272
  @api_method
272
- def bulk_create(self, oligos: Iterable[OligoCreate]) -> AsyncTaskLink:
273
+ def bulk_create(self, oligos: Iterable[OligoCreate]) -> TaskHelper[BulkCreateDnaOligosAsyncTaskResponse]:
273
274
  """
274
275
  Bulk create DNA Oligos (Deprecated).
275
276
 
@@ -282,4 +283,4 @@ class OligoService(BaseService):
282
283
  log_deprecation("oligos.bulk_create", "dna_oligos.bulk_create or rna_oligos.bulk_create")
283
284
  body = OligosBulkCreateRequest(list(oligos))
284
285
  response = bulk_create_oligos.sync_detailed(client=self.client, json_body=body)
285
- return model_from_detailed(response)
286
+ return self._task_helper_from_response(response, BulkCreateDnaOligosAsyncTaskResponse)
@@ -13,9 +13,9 @@ from benchling_sdk.helpers.decorators import api_method
13
13
  from benchling_sdk.helpers.logging_helpers import check_for_csv_bug_fix
14
14
  from benchling_sdk.helpers.response_helpers import model_from_detailed
15
15
  from benchling_sdk.helpers.serialization_helpers import array_query_param
16
+ from benchling_sdk.helpers.task_helpers import EmptyTaskResponse, TaskHelper
16
17
  from benchling_sdk.models import (
17
18
  AaSequenceWithEntityType,
18
- AsyncTaskLink,
19
19
  CustomEntityWithEntityType,
20
20
  DnaOligoWithEntityType,
21
21
  DnaSequenceWithEntityType,
@@ -54,7 +54,7 @@ class RegistryService(BaseService):
54
54
  registry_id: str,
55
55
  entity_ids: Iterable[str],
56
56
  naming_strategy: NamingStrategy = NamingStrategy.NEW_IDS,
57
- ) -> AsyncTaskLink:
57
+ ) -> TaskHelper[EmptyTaskResponse]:
58
58
  """
59
59
  Register entities.
60
60
 
@@ -70,7 +70,7 @@ class RegistryService(BaseService):
70
70
  response = register_entities.sync_detailed(
71
71
  client=self.client, registry_id=registry_id, json_body=registration_body
72
72
  )
73
- return model_from_detailed(response)
73
+ return self._task_helper_from_response(response, EmptyTaskResponse)
74
74
 
75
75
  @api_method
76
76
  def unregister(
@@ -24,8 +24,10 @@ from benchling_sdk.helpers.serialization_helpers import (
24
24
  optional_array_query_param,
25
25
  schema_fields_query_param,
26
26
  )
27
+ from benchling_sdk.helpers.task_helpers import TaskHelper
27
28
  from benchling_sdk.models import (
28
- AsyncTaskLink,
29
+ BulkCreateRnaOligosAsyncTaskResponse,
30
+ BulkUpdateRnaOligosAsyncTaskResponse,
29
31
  EntityArchiveReason,
30
32
  ListRNAOligosSort,
31
33
  OligoUpsertRequest,
@@ -236,7 +238,9 @@ class RnaOligoService(BaseService):
236
238
  return model_from_detailed(response)
237
239
 
238
240
  @api_method
239
- def bulk_create(self, rna_oligos: Iterable[RnaOligoCreate]) -> AsyncTaskLink:
241
+ def bulk_create(
242
+ self, rna_oligos: Iterable[RnaOligoCreate]
243
+ ) -> TaskHelper[BulkCreateRnaOligosAsyncTaskResponse]:
240
244
  """
241
245
  Bulk create RNA Oligos.
242
246
 
@@ -244,10 +248,12 @@ class RnaOligoService(BaseService):
244
248
  """
245
249
  body = RnaOligosBulkCreateRequest(list(rna_oligos))
246
250
  response = bulk_create_rna_oligos.sync_detailed(client=self.client, json_body=body)
247
- return model_from_detailed(response)
251
+ return self._task_helper_from_response(response, BulkCreateRnaOligosAsyncTaskResponse)
248
252
 
249
253
  @api_method
250
- def bulk_update(self, rna_oligos: Iterable[RnaOligoBulkUpdate]) -> AsyncTaskLink:
254
+ def bulk_update(
255
+ self, rna_oligos: Iterable[RnaOligoBulkUpdate]
256
+ ) -> TaskHelper[BulkUpdateRnaOligosAsyncTaskResponse]:
251
257
  """
252
258
  Bulk update RNA oligos.
253
259
 
@@ -255,7 +261,7 @@ class RnaOligoService(BaseService):
255
261
  """
256
262
  body = RnaOligosBulkUpdateRequest(list(rna_oligos))
257
263
  response = bulk_update_rna_oligos.sync_detailed(client=self.client, json_body=body)
258
- return model_from_detailed(response)
264
+ return self._task_helper_from_response(response, BulkUpdateRnaOligosAsyncTaskResponse)
259
265
 
260
266
  @api_method
261
267
  def upsert(self, entity_registry_id: str, rna_oligo: OligoUpsertRequest) -> RnaOligo:
@@ -272,7 +278,7 @@ class RnaOligoService(BaseService):
272
278
  @api_method
273
279
  def bulk_upsert(
274
280
  self, body: RnaOligosBulkUpsertRequest, returning: Optional[Iterable[str]] = None
275
- ) -> AsyncTaskLink:
281
+ ) -> TaskHelper[BulkUpdateRnaOligosAsyncTaskResponse]:
276
282
  """
277
283
  Bulk create or update RNA Oligos.
278
284
 
@@ -282,4 +288,4 @@ class RnaOligoService(BaseService):
282
288
  response = bulk_upsert_rna_oligos.sync_detailed(
283
289
  client=self.client, json_body=body, returning=none_as_unset(returning_string)
284
290
  )
285
- return model_from_detailed(response)
291
+ return self._task_helper_from_response(response, BulkUpdateRnaOligosAsyncTaskResponse)