benchling-sdk 1.14.0a0__py3-none-any.whl → 1.15.0a0__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.
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional, TYPE_CHECKING
3
+ from functools import cached_property
4
+ from typing import TYPE_CHECKING
4
5
 
5
6
  from benchling_api_client.v2.stable.client import Client
6
7
 
@@ -49,6 +50,10 @@ if TYPE_CHECKING:
49
50
  from benchling_sdk.services.v2.stable.team_service import TeamService
50
51
  from benchling_sdk.services.v2.stable.user_service import UserService
51
52
  from benchling_sdk.services.v2.stable.warehouse_service import WarehouseService
53
+ from benchling_sdk.services.v2.stable.workflow_flowchart_config_version_service import (
54
+ WorkflowFlowchartConfigVersionService,
55
+ )
56
+ from benchling_sdk.services.v2.stable.workflow_flowchart_service import WorkflowFlowchartService
52
57
  from benchling_sdk.services.v2.stable.workflow_output_service import WorkflowOutputService
53
58
  from benchling_sdk.services.v2.stable.workflow_task_group_service import WorkflowTaskGroupService
54
59
  from benchling_sdk.services.v2.stable.workflow_task_service import WorkflowTaskService
@@ -61,51 +66,6 @@ class V2StableService(BaseService):
61
66
  Namespace containing support for the V2 stable endpoints of the Benchling API.
62
67
  """
63
68
 
64
- _aa_sequence_service: Optional[AaSequenceService]
65
- _api_service: Optional[ApiService]
66
- _app_service: Optional[AppService]
67
- _assay_result_service: Optional[AssayResultService]
68
- _assay_run_service: Optional[AssayRunService]
69
- _blob_service: Optional[BlobService]
70
- _box_service: Optional[BoxService]
71
- _container_service: Optional[ContainerService]
72
- _custom_entity_service: Optional[CustomEntityService]
73
- _custom_notation_service: Optional[CustomNotationService]
74
- _dropdown_service: Optional[DropdownService]
75
- _dna_alignments_service: Optional[DnaAlignmentsService]
76
- _dna_oligo_service: Optional[DnaOligoService]
77
- _dna_sequence_service: Optional[DnaSequenceService]
78
- _entities_service: Optional[EntityService]
79
- _entries_service: Optional[EntryService]
80
- _event_service: Optional[EventService]
81
- _export_service: Optional[ExportService]
82
- _feature_library_service: Optional[FeatureLibraryService]
83
- _folder_service: Optional[FolderService]
84
- _inventory_service: Optional[InventoryService]
85
- _lab_automation_service: Optional[LabAutomationService]
86
- _label_templates_service: Optional[LabelTemplateService]
87
- _location_service: Optional[LocationService]
88
- _mixture_service: Optional[MixtureService]
89
- _molecule_service: Optional[MoleculeService]
90
- _nucleotide_alignments: Optional[NucleotideAlignmentsService]
91
- _oligo_service: Optional[OligoService]
92
- _organization_service: Optional[OrganizationService]
93
- _plate_service: Optional[PlateService]
94
- _printer_service: Optional[PrinterService]
95
- _project_service: Optional[ProjectService]
96
- _registry_service: Optional[RegistryService]
97
- _request_service: Optional[RequestService]
98
- _rna_oligo_service: Optional[RnaOligoService]
99
- _rna_sequence_service: Optional[RnaSequenceService]
100
- _schema_service: Optional[SchemaService]
101
- _task_service: Optional[TaskService]
102
- _team_service: Optional[TeamService]
103
- _user_service: Optional[UserService]
104
- _warehouse_service: Optional[WarehouseService]
105
- _workflow_output_service: Optional[WorkflowOutputService]
106
- _workflow_task_group_service: Optional[WorkflowTaskGroupService]
107
- _workflow_task_service: Optional[WorkflowTaskService]
108
-
109
69
  def __init__(self, client: Client, retry_strategy: RetryStrategy = RetryStrategy()):
110
70
  """
111
71
  Initialize a service.
@@ -114,52 +74,8 @@ class V2StableService(BaseService):
114
74
  :param retry_strategy: Retry strategy for failed HTTP calls
115
75
  """
116
76
  super().__init__(client, retry_strategy)
117
- self._aa_sequence_service = None
118
- self._api_service = None
119
- self._app_service = None
120
- self._assay_result_service = None
121
- self._assay_run_service = None
122
- self._blob_service = None
123
- self._box_service = None
124
- self._container_service = None
125
- self._custom_entity_service = None
126
- self._custom_notation_service = None
127
- self._dropdown_service = None
128
- self._dna_alignments_service = None
129
- self._dna_oligo_service = None
130
- self._dna_sequence_service = None
131
- self._entities_service = None
132
- self._entries_service = None
133
- self._event_service = None
134
- self._export_service = None
135
- self._feature_library_service = None
136
- self._folder_service = None
137
- self._inventory_service = None
138
- self._lab_automation_service = None
139
- self._label_templates_service = None
140
- self._location_service = None
141
- self._mixture_service = None
142
- self._molecule_service = None
143
- self._nucleotide_alignments = None
144
- self._oligo_service = None
145
- self._organization_service = None
146
- self._plate_service = None
147
- self._printer_service = None
148
- self._project_service = None
149
- self._registry_service = None
150
- self._request_service = None
151
- self._rna_oligo_service = None
152
- self._rna_sequence_service = None
153
- self._schema_service = None
154
- self._task_service = None
155
- self._team_service = None
156
- self._user_service = None
157
- self._warehouse_service = None
158
- self._workflow_output_service = None
159
- self._workflow_task_group_service = None
160
- self._workflow_task_service = None
161
-
162
- @property
77
+
78
+ @cached_property
163
79
  def aa_sequences(self) -> AaSequenceService:
164
80
  """
165
81
  AA Sequences.
@@ -170,13 +86,11 @@ class V2StableService(BaseService):
170
86
 
171
87
  See https://benchling.com/api/reference#/AA%20Sequences
172
88
  """
173
- if self._aa_sequence_service is None:
174
- from benchling_sdk.services.v2.stable.aa_sequence_service import AaSequenceService
89
+ from .stable.aa_sequence_service import AaSequenceService
175
90
 
176
- self._aa_sequence_service = AaSequenceService(self._client, retry_strategy=self._retry_strategy)
177
- return self._aa_sequence_service
91
+ return self._create_service(AaSequenceService)
178
92
 
179
- @property
93
+ @cached_property
180
94
  def api(self) -> ApiService:
181
95
  """
182
96
  Make custom API calls with the underlying BenchlingApiClient.
@@ -185,13 +99,11 @@ class V2StableService(BaseService):
185
99
  release. It's capable of making more "generic" calls utilizing our authorization scheme, as well as supporting
186
100
  some simple serialization and deserialization for custom models.
187
101
  """
188
- if self._api_service is None:
189
- from benchling_sdk.services.v2.stable.api_service import ApiService
102
+ from .stable.api_service import ApiService
190
103
 
191
- self._api_service = ApiService(self._client, retry_strategy=self._retry_strategy)
192
- return self._api_service
104
+ return self._create_service(ApiService)
193
105
 
194
- @property
106
+ @cached_property
195
107
  def apps(self) -> AppService:
196
108
  """
197
109
  Apps.
@@ -202,13 +114,11 @@ class V2StableService(BaseService):
202
114
  See https://benchling.com/api/reference#/Apps
203
115
  and https://docs.benchling.com/docs/getting-started-benchling-apps
204
116
  """
205
- if self._app_service is None:
206
- from benchling_sdk.services.v2.stable.app_service import AppService
117
+ from .stable.app_service import AppService
207
118
 
208
- self._app_service = AppService(self._client, retry_strategy=self._retry_strategy)
209
- return self._app_service
119
+ return self._create_service(AppService)
210
120
 
211
- @property
121
+ @cached_property
212
122
  def assay_results(self) -> AssayResultService:
213
123
  """
214
124
  Assay Results.
@@ -218,13 +128,11 @@ class V2StableService(BaseService):
218
128
 
219
129
  See https://benchling.com/api/reference#/Assay%20Results
220
130
  """
221
- if self._assay_result_service is None:
222
- from benchling_sdk.services.v2.stable.assay_result_service import AssayResultService
131
+ from .stable.assay_result_service import AssayResultService
223
132
 
224
- self._assay_result_service = AssayResultService(self._client, retry_strategy=self._retry_strategy)
225
- return self._assay_result_service
133
+ return self._create_service(AssayResultService)
226
134
 
227
- @property
135
+ @cached_property
228
136
  def assay_runs(self) -> AssayRunService:
229
137
  """
230
138
  Assay Runs.
@@ -233,13 +141,11 @@ class V2StableService(BaseService):
233
141
 
234
142
  See https://benchling.com/api/reference#/Assay%20Runs
235
143
  """
236
- if self._assay_run_service is None:
237
- from benchling_sdk.services.v2.stable.assay_run_service import AssayRunService
144
+ from .stable.assay_run_service import AssayRunService
238
145
 
239
- self._assay_run_service = AssayRunService(self._client, retry_strategy=self._retry_strategy)
240
- return self._assay_run_service
146
+ return self._create_service(AssayRunService)
241
147
 
242
- @property
148
+ @cached_property
243
149
  def blobs(self) -> BlobService:
244
150
  """
245
151
  Blobs.
@@ -250,13 +156,11 @@ class V2StableService(BaseService):
250
156
 
251
157
  See https://benchling.com/api/reference#/Blobs
252
158
  """
253
- if self._blob_service is None:
254
- from benchling_sdk.services.v2.stable.blob_service import BlobService
159
+ from .stable.blob_service import BlobService
255
160
 
256
- self._blob_service = BlobService(self._client, retry_strategy=self._retry_strategy)
257
- return self._blob_service
161
+ return self._create_service(BlobService)
258
162
 
259
- @property
163
+ @cached_property
260
164
  def boxes(self) -> BoxService:
261
165
  """
262
166
  Boxes.
@@ -271,13 +175,11 @@ class V2StableService(BaseService):
271
175
 
272
176
  See https://benchling.com/api/reference#/Boxes
273
177
  """
274
- if self._box_service is None:
275
- from benchling_sdk.services.v2.stable.box_service import BoxService
178
+ from .stable.box_service import BoxService
276
179
 
277
- self._box_service = BoxService(self._client, retry_strategy=self._retry_strategy)
278
- return self._box_service
180
+ return self._create_service(BoxService)
279
181
 
280
- @property
182
+ @cached_property
281
183
  def containers(self) -> ContainerService:
282
184
  """
283
185
  Containers.
@@ -293,13 +195,11 @@ class V2StableService(BaseService):
293
195
 
294
196
  See https://benchling.com/api/reference#/Containers
295
197
  """
296
- if self._container_service is None:
297
- from benchling_sdk.services.v2.stable.container_service import ContainerService
198
+ from .stable.container_service import ContainerService
298
199
 
299
- self._container_service = ContainerService(self._client, retry_strategy=self._retry_strategy)
300
- return self._container_service
200
+ return self._create_service(ContainerService)
301
201
 
302
- @property
202
+ @cached_property
303
203
  def custom_entities(self) -> CustomEntityService:
304
204
  """
305
205
  Custom Entities.
@@ -309,15 +209,11 @@ class V2StableService(BaseService):
309
209
 
310
210
  See https://benchling.com/api/reference#/Custom%20Entities
311
211
  """
312
- if self._custom_entity_service is None:
313
- from benchling_sdk.services.v2.stable.custom_entity_service import CustomEntityService
212
+ from .stable.custom_entity_service import CustomEntityService
314
213
 
315
- self._custom_entity_service = CustomEntityService(
316
- self._client, retry_strategy=self._retry_strategy
317
- )
318
- return self._custom_entity_service
214
+ return self._create_service(CustomEntityService)
319
215
 
320
- @property
216
+ @cached_property
321
217
  def custom_notations(self) -> CustomNotationService:
322
218
  """
323
219
  Custom Notations.
@@ -327,15 +223,11 @@ class V2StableService(BaseService):
327
223
 
328
224
  See https://benchling.com/api/reference#/Custom%20Notations
329
225
  """
330
- if self._custom_notation_service is None:
331
- from benchling_sdk.services.v2.stable.custom_notation_service import CustomNotationService
226
+ from .stable.custom_notation_service import CustomNotationService
332
227
 
333
- self._custom_notation_service = CustomNotationService(
334
- self._client, retry_strategy=self._retry_strategy
335
- )
336
- return self._custom_notation_service
228
+ return self._create_service(CustomNotationService)
337
229
 
338
- @property
230
+ @cached_property
339
231
  def dna_alignments(self) -> DnaAlignmentsService:
340
232
  """
341
233
  DNA Alignments.
@@ -344,15 +236,11 @@ class V2StableService(BaseService):
344
236
 
345
237
  See https://benchling.com/api/reference#/DNA%20Alignments
346
238
  """
347
- if self._dna_alignments_service is None:
348
- from benchling_sdk.services.v2.stable.dna_alignments_service import DnaAlignmentsService
239
+ from .stable.dna_alignments_service import DnaAlignmentsService
349
240
 
350
- self._dna_alignments_service = DnaAlignmentsService(
351
- self._client, retry_strategy=self._retry_strategy
352
- )
353
- return self._dna_alignments_service
241
+ return self._create_service(DnaAlignmentsService)
354
242
 
355
- @property
243
+ @cached_property
356
244
  def dna_oligos(self) -> DnaOligoService:
357
245
  """
358
246
  DNA Oligos.
@@ -362,13 +250,11 @@ class V2StableService(BaseService):
362
250
 
363
251
  See https://benchling.com/api/reference#/DNA%20Oligos
364
252
  """
365
- if self._dna_oligo_service is None:
366
- from benchling_sdk.services.v2.stable.dna_oligo_service import DnaOligoService
253
+ from .stable.dna_oligo_service import DnaOligoService
367
254
 
368
- self._dna_oligo_service = DnaOligoService(self._client, retry_strategy=self._retry_strategy)
369
- return self._dna_oligo_service
255
+ return self._create_service(DnaOligoService)
370
256
 
371
- @property
257
+ @cached_property
372
258
  def dna_sequences(self) -> DnaSequenceService:
373
259
  """
374
260
  DNA Sequences.
@@ -378,13 +264,11 @@ class V2StableService(BaseService):
378
264
 
379
265
  See https://benchling.com/api/reference#/DNA%20Sequences
380
266
  """
381
- if self._dna_sequence_service is None:
382
- from benchling_sdk.services.v2.stable.dna_sequence_service import DnaSequenceService
267
+ from .stable.dna_sequence_service import DnaSequenceService
383
268
 
384
- self._dna_sequence_service = DnaSequenceService(self._client, retry_strategy=self._retry_strategy)
385
- return self._dna_sequence_service
269
+ return self._create_service(DnaSequenceService)
386
270
 
387
- @property
271
+ @cached_property
388
272
  def rna_sequences(self) -> RnaSequenceService:
389
273
  """
390
274
  RNA Sequences.
@@ -393,13 +277,11 @@ class V2StableService(BaseService):
393
277
 
394
278
  See https://benchling.com/api/reference#/RNA%20Sequences
395
279
  """
396
- if self._rna_sequence_service is None:
397
- from benchling_sdk.services.v2.stable.rna_sequence_service import RnaSequenceService
280
+ from .stable.rna_sequence_service import RnaSequenceService
398
281
 
399
- self._rna_sequence_service = RnaSequenceService(self._client, retry_strategy=self._retry_strategy)
400
- return self._rna_sequence_service
282
+ return self._create_service(RnaSequenceService)
401
283
 
402
- @property
284
+ @cached_property
403
285
  def dropdowns(self) -> DropdownService:
404
286
  """
405
287
  Dropdowns.
@@ -409,13 +291,11 @@ class V2StableService(BaseService):
409
291
 
410
292
  See https://benchling.com/api/reference#/Dropdowns
411
293
  """
412
- if self._dropdown_service is None:
413
- from benchling_sdk.services.v2.stable.dropdown_service import DropdownService
294
+ from .stable.dropdown_service import DropdownService
414
295
 
415
- self._dropdown_service = DropdownService(self._client, retry_strategy=self._retry_strategy)
416
- return self._dropdown_service
296
+ return self._create_service(DropdownService)
417
297
 
418
- @property
298
+ @cached_property
419
299
  def entities(self) -> EntityService:
420
300
  """
421
301
  Entities.
@@ -426,13 +306,11 @@ class V2StableService(BaseService):
426
306
 
427
307
  See https://benchling.com/api/reference#/Entities
428
308
  """
429
- if self._entities_service is None:
430
- from benchling_sdk.services.v2.stable.entity_service import EntityService
309
+ from .stable.entity_service import EntityService
431
310
 
432
- self._entities_service = EntityService(self._client, retry_strategy=self._retry_strategy)
433
- return self._entities_service
311
+ return self._create_service(EntityService)
434
312
 
435
- @property
313
+ @cached_property
436
314
  def entries(self) -> EntryService:
437
315
  """
438
316
  Entries.
@@ -441,13 +319,11 @@ class V2StableService(BaseService):
441
319
 
442
320
  See https://benchling.com/api/reference#/Entries
443
321
  """
444
- if self._entries_service is None:
445
- from benchling_sdk.services.v2.stable.entry_service import EntryService
322
+ from .stable.entry_service import EntryService
446
323
 
447
- self._entries_service = EntryService(self._client, retry_strategy=self._retry_strategy)
448
- return self._entries_service
324
+ return self._create_service(EntryService)
449
325
 
450
- @property
326
+ @cached_property
451
327
  def events(self) -> EventService:
452
328
  """
453
329
  Events.
@@ -457,13 +333,11 @@ class V2StableService(BaseService):
457
333
 
458
334
  See https://benchling.com/api/reference#/Events
459
335
  """
460
- if self._event_service is None:
461
- from benchling_sdk.services.v2.stable.event_service import EventService
336
+ from .stable.event_service import EventService
462
337
 
463
- self._event_service = EventService(self._client, retry_strategy=self._retry_strategy)
464
- return self._event_service
338
+ return self._create_service(EventService)
465
339
 
466
- @property
340
+ @cached_property
467
341
  def exports(self) -> ExportService:
468
342
  """
469
343
  Exports.
@@ -472,13 +346,11 @@ class V2StableService(BaseService):
472
346
 
473
347
  See https://benchling.com/api/reference#/Exports
474
348
  """
475
- if self._export_service is None:
476
- from benchling_sdk.services.v2.stable.export_service import ExportService
349
+ from .stable.export_service import ExportService
477
350
 
478
- self._export_service = ExportService(self._client, retry_strategy=self._retry_strategy)
479
- return self._export_service
351
+ return self._create_service(ExportService)
480
352
 
481
- @property
353
+ @cached_property
482
354
  def feature_libraries(self) -> FeatureLibraryService:
483
355
  """
484
356
  Feature Libraries.
@@ -488,15 +360,11 @@ class V2StableService(BaseService):
488
360
 
489
361
  See https://benchling.com/api/reference#/Feature%20Libraries
490
362
  """
491
- if self._feature_library_service is None:
492
- from benchling_sdk.services.v2.stable.feature_library_service import FeatureLibraryService
363
+ from .stable.feature_library_service import FeatureLibraryService
493
364
 
494
- self._feature_library_service = FeatureLibraryService(
495
- self._client, retry_strategy=self._retry_strategy
496
- )
497
- return self._feature_library_service
365
+ return self._create_service(FeatureLibraryService)
498
366
 
499
- @property
367
+ @cached_property
500
368
  def folders(self) -> FolderService:
501
369
  """
502
370
  Folders.
@@ -505,13 +373,11 @@ class V2StableService(BaseService):
505
373
 
506
374
  See https://benchling.com/api/reference#/Folders
507
375
  """
508
- if self._folder_service is None:
509
- from benchling_sdk.services.v2.stable.folder_service import FolderService
376
+ from .stable.folder_service import FolderService
510
377
 
511
- self._folder_service = FolderService(self._client, retry_strategy=self._retry_strategy)
512
- return self._folder_service
378
+ return self._create_service(FolderService)
513
379
 
514
- @property
380
+ @cached_property
515
381
  def inventory(self) -> InventoryService:
516
382
  """
517
383
  Inventory.
@@ -520,13 +386,11 @@ class V2StableService(BaseService):
520
386
 
521
387
  See https://benchling.com/api/reference#/Inventory
522
388
  """
523
- if self._inventory_service is None:
524
- from benchling_sdk.services.v2.stable.inventory_service import InventoryService
389
+ from .stable.inventory_service import InventoryService
525
390
 
526
- self._inventory_service = InventoryService(self._client, retry_strategy=self._retry_strategy)
527
- return self._inventory_service
391
+ return self._create_service(InventoryService)
528
392
 
529
- @property
393
+ @cached_property
530
394
  def lab_automation(self) -> LabAutomationService:
531
395
  """
532
396
  Lab Automation.
@@ -536,15 +400,11 @@ class V2StableService(BaseService):
536
400
 
537
401
  See https://benchling.com/api/reference#/Lab%20Automation
538
402
  """
539
- if self._lab_automation_service is None:
540
- from benchling_sdk.services.v2.stable.lab_automation_service import LabAutomationService
403
+ from .stable.lab_automation_service import LabAutomationService
541
404
 
542
- self._lab_automation_service = LabAutomationService(
543
- self._client, retry_strategy=self._retry_strategy
544
- )
545
- return self._lab_automation_service
405
+ return self._create_service(LabAutomationService)
546
406
 
547
- @property
407
+ @cached_property
548
408
  def label_templates(self) -> LabelTemplateService:
549
409
  """
550
410
  Label Templates.
@@ -553,15 +413,11 @@ class V2StableService(BaseService):
553
413
 
554
414
  See https://benchling.com/api/reference#/Label%20Templates
555
415
  """
556
- if self._label_templates_service is None:
557
- from benchling_sdk.services.v2.stable.label_template_service import LabelTemplateService
416
+ from .stable.label_template_service import LabelTemplateService
558
417
 
559
- self._label_templates_service = LabelTemplateService(
560
- self._client, retry_strategy=self._retry_strategy
561
- )
562
- return self._label_templates_service
418
+ return self._create_service(LabelTemplateService)
563
419
 
564
- @property
420
+ @cached_property
565
421
  def locations(self) -> LocationService:
566
422
  """
567
423
  Locations.
@@ -570,13 +426,11 @@ class V2StableService(BaseService):
570
426
 
571
427
  See https://benchling.com/api/reference#/Locations
572
428
  """
573
- if self._location_service is None:
574
- from benchling_sdk.services.v2.stable.location_service import LocationService
429
+ from .stable.location_service import LocationService
575
430
 
576
- self._location_service = LocationService(self._client, retry_strategy=self._retry_strategy)
577
- return self._location_service
431
+ return self._create_service(LocationService)
578
432
 
579
- @property
433
+ @cached_property
580
434
  def mixtures(self) -> MixtureService:
581
435
  """
582
436
  Mixtures.
@@ -586,13 +440,11 @@ class V2StableService(BaseService):
586
440
 
587
441
  See https://benchling.com/api/reference#/Mixtures
588
442
  """
589
- if self._mixture_service is None:
590
- from benchling_sdk.services.v2.stable.mixture_service import MixtureService
443
+ from .stable.mixture_service import MixtureService
591
444
 
592
- self._mixture_service = MixtureService(self._client, retry_strategy=self._retry_strategy)
593
- return self._mixture_service
445
+ return self._create_service(MixtureService)
594
446
 
595
- @property
447
+ @cached_property
596
448
  def molecules(self) -> MoleculeService:
597
449
  """
598
450
  Molecules.
@@ -602,13 +454,11 @@ class V2StableService(BaseService):
602
454
 
603
455
  See https://benchling.com/api/reference#/Molecules
604
456
  """
605
- if self._molecule_service is None:
606
- from benchling_sdk.services.v2.stable.molecule_service import MoleculeService
457
+ from .stable.molecule_service import MoleculeService
607
458
 
608
- self._molecule_service = MoleculeService(self._client, retry_strategy=self._retry_strategy)
609
- return self._molecule_service
459
+ return self._create_service(MoleculeService)
610
460
 
611
- @property
461
+ @cached_property
612
462
  def nucleotide_alignments(self) -> NucleotideAlignmentsService:
613
463
  """
614
464
  Nucleotide Alignments.
@@ -617,17 +467,11 @@ class V2StableService(BaseService):
617
467
 
618
468
  See https://benchling.com/api/reference#/Nucleotide%20Alignments
619
469
  """
620
- if self._nucleotide_alignments is None:
621
- from benchling_sdk.services.v2.stable.nucleotide_alignments_service import (
622
- NucleotideAlignmentsService,
623
- )
470
+ from .stable.nucleotide_alignments_service import NucleotideAlignmentsService
624
471
 
625
- self._nucleotide_alignments = NucleotideAlignmentsService(
626
- self._client, retry_strategy=self._retry_strategy
627
- )
628
- return self._nucleotide_alignments
472
+ return self._create_service(NucleotideAlignmentsService)
629
473
 
630
- @property
474
+ @cached_property
631
475
  def oligos(self) -> OligoService:
632
476
  """
633
477
  Oligos.
@@ -639,13 +483,11 @@ class V2StableService(BaseService):
639
483
 
640
484
  See https://benchling.com/api/reference#/Oligos
641
485
  """
642
- if self._oligo_service is None:
643
- from benchling_sdk.services.v2.stable.oligo_service import OligoService
486
+ from .stable.oligo_service import OligoService
644
487
 
645
- self._oligo_service = OligoService(self._client, retry_strategy=self._retry_strategy)
646
- return self._oligo_service
488
+ return self._create_service(OligoService)
647
489
 
648
- @property
490
+ @cached_property
649
491
  def organizations(self) -> OrganizationService:
650
492
  """
651
493
  Organizations.
@@ -654,15 +496,11 @@ class V2StableService(BaseService):
654
496
 
655
497
  See https://benchling.com/api/reference#/Organizations
656
498
  """
657
- if self._organization_service is None:
658
- from benchling_sdk.services.v2.stable.organization_service import OrganizationService
499
+ from .stable.organization_service import OrganizationService
659
500
 
660
- self._organization_service = OrganizationService(
661
- self._client, retry_strategy=self._retry_strategy
662
- )
663
- return self._organization_service
501
+ return self._create_service(OrganizationService)
664
502
 
665
- @property
503
+ @cached_property
666
504
  def plates(self) -> PlateService:
667
505
  """
668
506
  Plates.
@@ -679,13 +517,11 @@ class V2StableService(BaseService):
679
517
 
680
518
  See https://benchling.com/api/reference#/Plates
681
519
  """
682
- if self._plate_service is None:
683
- from benchling_sdk.services.v2.stable.plate_service import PlateService
520
+ from .stable.plate_service import PlateService
684
521
 
685
- self._plate_service = PlateService(self._client, retry_strategy=self._retry_strategy)
686
- return self._plate_service
522
+ return self._create_service(PlateService)
687
523
 
688
- @property
524
+ @cached_property
689
525
  def printers(self) -> PrinterService:
690
526
  """
691
527
  Printers.
@@ -694,13 +530,11 @@ class V2StableService(BaseService):
694
530
 
695
531
  See https://benchling.com/api/reference#/Printers
696
532
  """
697
- if self._printer_service is None:
698
- from benchling_sdk.services.v2.stable.printer_service import PrinterService
533
+ from .stable.printer_service import PrinterService
699
534
 
700
- self._printer_service = PrinterService(self._client, retry_strategy=self._retry_strategy)
701
- return self._printer_service
535
+ return self._create_service(PrinterService)
702
536
 
703
- @property
537
+ @cached_property
704
538
  def projects(self) -> ProjectService:
705
539
  """
706
540
  Projects.
@@ -709,13 +543,11 @@ class V2StableService(BaseService):
709
543
 
710
544
  See https://benchling.com/api/reference#/Projects
711
545
  """
712
- if self._project_service is None:
713
- from benchling_sdk.services.v2.stable.project_service import ProjectService
546
+ from .stable.project_service import ProjectService
714
547
 
715
- self._project_service = ProjectService(self._client, retry_strategy=self._retry_strategy)
716
- return self._project_service
548
+ return self._create_service(ProjectService)
717
549
 
718
- @property
550
+ @cached_property
719
551
  def registry(self) -> RegistryService:
720
552
  """
721
553
  Registry.
@@ -724,13 +556,11 @@ class V2StableService(BaseService):
724
556
 
725
557
  See https://benchling.com/api/reference#/Registry
726
558
  """
727
- if self._registry_service is None:
728
- from benchling_sdk.services.v2.stable.registry_service import RegistryService
559
+ from .stable.registry_service import RegistryService
729
560
 
730
- self._registry_service = RegistryService(self._client, retry_strategy=self._retry_strategy)
731
- return self._registry_service
561
+ return self._create_service(RegistryService)
732
562
 
733
- @property
563
+ @cached_property
734
564
  def requests(self) -> RequestService:
735
565
  """
736
566
  Requests.
@@ -739,13 +569,11 @@ class V2StableService(BaseService):
739
569
 
740
570
  See https://benchling.com/api/reference#/Requests
741
571
  """
742
- if self._request_service is None:
743
- from benchling_sdk.services.v2.stable.request_service import RequestService
572
+ from .stable.request_service import RequestService
744
573
 
745
- self._request_service = RequestService(self._client, retry_strategy=self._retry_strategy)
746
- return self._request_service
574
+ return self._create_service(RequestService)
747
575
 
748
- @property
576
+ @cached_property
749
577
  def rna_oligos(self) -> RnaOligoService:
750
578
  """
751
579
  RNA Oligos.
@@ -755,13 +583,11 @@ class V2StableService(BaseService):
755
583
 
756
584
  See https://benchling.com/api/reference#/RNA%20Oligos
757
585
  """
758
- if self._rna_oligo_service is None:
759
- from benchling_sdk.services.v2.stable.rna_oligo_service import RnaOligoService
586
+ from .stable.rna_oligo_service import RnaOligoService
760
587
 
761
- self._rna_oligo_service = RnaOligoService(self._client, retry_strategy=self._retry_strategy)
762
- return self._rna_oligo_service
588
+ return self._create_service(RnaOligoService)
763
589
 
764
- @property
590
+ @cached_property
765
591
  def schemas(self) -> SchemaService:
766
592
  """
767
593
  Schemas.
@@ -771,13 +597,11 @@ class V2StableService(BaseService):
771
597
 
772
598
  See https://benchling.com/api/reference#/Schemas
773
599
  """
774
- if self._schema_service is None:
775
- from benchling_sdk.services.v2.stable.schema_service import SchemaService
600
+ from .stable.schema_service import SchemaService
776
601
 
777
- self._schema_service = SchemaService(self._client, retry_strategy=self._retry_strategy)
778
- return self._schema_service
602
+ return self._create_service(SchemaService)
779
603
 
780
- @property
604
+ @cached_property
781
605
  def tasks(self) -> TaskService:
782
606
  """
783
607
  Tasks.
@@ -793,13 +617,11 @@ class V2StableService(BaseService):
793
617
 
794
618
  See https://benchling.com/api/reference#/Tasks
795
619
  """
796
- if self._task_service is None:
797
- from benchling_sdk.services.v2.stable.task_service import TaskService
620
+ from .stable.task_service import TaskService
798
621
 
799
- self._task_service = TaskService(self._client, retry_strategy=self._retry_strategy)
800
- return self._task_service
622
+ return self._create_service(TaskService)
801
623
 
802
- @property
624
+ @cached_property
803
625
  def teams(self) -> TeamService:
804
626
  """
805
627
  Teams.
@@ -808,26 +630,22 @@ class V2StableService(BaseService):
808
630
 
809
631
  See https://benchling.com/api/reference#/Teams
810
632
  """
811
- if self._team_service is None:
812
- from benchling_sdk.services.v2.stable.team_service import TeamService
633
+ from .stable.team_service import TeamService
813
634
 
814
- self._team_service = TeamService(self._client, retry_strategy=self._retry_strategy)
815
- return self._team_service
635
+ return self._create_service(TeamService)
816
636
 
817
- @property
637
+ @cached_property
818
638
  def users(self) -> UserService:
819
639
  """
820
640
  Benchling users.
821
641
 
822
642
  See https://benchling.com/api/reference#/Users
823
643
  """
824
- if self._user_service is None:
825
- from benchling_sdk.services.v2.stable.user_service import UserService
644
+ from .stable.user_service import UserService
826
645
 
827
- self._user_service = UserService(self._client, retry_strategy=self._retry_strategy)
828
- return self._user_service
646
+ return self._create_service(UserService)
829
647
 
830
- @property
648
+ @cached_property
831
649
  def warehouse(self) -> WarehouseService:
832
650
  """
833
651
  Warehouse.
@@ -836,13 +654,37 @@ class V2StableService(BaseService):
836
654
 
837
655
  See https://benchling.com/api/reference#/Warehouse
838
656
  """
839
- if self._warehouse_service is None:
840
- from benchling_sdk.services.v2.stable.warehouse_service import WarehouseService
657
+ from .stable.warehouse_service import WarehouseService
658
+
659
+ return self._create_service(WarehouseService)
660
+
661
+ @cached_property
662
+ def workflow_flowcharts(self) -> WorkflowFlowchartService:
663
+ """
664
+ Workflow Flowcharts.
665
+
666
+ Workflow flowcharts represent the nodes and edges that a flowchart is comprised of.
667
+
668
+ See https://benchling.com/api/reference#/Workflow%20Flowcharts
669
+ """
670
+ from .stable.workflow_flowchart_service import WorkflowFlowchartService
671
+
672
+ return self._create_service(WorkflowFlowchartService)
673
+
674
+ @cached_property
675
+ def workflow_flowchart_config_versions(self) -> WorkflowFlowchartConfigVersionService:
676
+ """
677
+ Workflow Flowchart Config Versions.
678
+
679
+ Workflow flowchart config versions are versioned graphs of flowchart configurations.
680
+
681
+ See https://benchling.com/api/reference#/Workflow%20Flowchart%20Config%20Versions
682
+ """
683
+ from .stable.workflow_flowchart_config_version_service import WorkflowFlowchartConfigVersionService
841
684
 
842
- self._warehouse_service = WarehouseService(self._client, retry_strategy=self._retry_strategy)
843
- return self._warehouse_service
685
+ return self._create_service(WorkflowFlowchartConfigVersionService)
844
686
 
845
- @property
687
+ @cached_property
846
688
  def workflow_outputs(self) -> WorkflowOutputService:
847
689
  """
848
690
  Workflow Outputs.
@@ -851,15 +693,11 @@ class V2StableService(BaseService):
851
693
 
852
694
  See https://benchling.com/api/reference#/Workflow%20Outputs
853
695
  """
854
- if self._workflow_output_service is None:
855
- from benchling_sdk.services.v2.stable.workflow_output_service import WorkflowOutputService
696
+ from .stable.workflow_output_service import WorkflowOutputService
856
697
 
857
- self._workflow_output_service = WorkflowOutputService(
858
- self._client, retry_strategy=self._retry_strategy
859
- )
860
- return self._workflow_output_service
698
+ return self._create_service(WorkflowOutputService)
861
699
 
862
- @property
700
+ @cached_property
863
701
  def workflow_task_groups(self) -> WorkflowTaskGroupService:
864
702
  """
865
703
  Workflow Tasks Groups.
@@ -868,15 +706,11 @@ class V2StableService(BaseService):
868
706
 
869
707
  See https://benchling.com/api/reference#/Workflow%20Task%20Groups
870
708
  """
871
- if self._workflow_task_group_service is None:
872
- from benchling_sdk.services.v2.stable.workflow_task_group_service import WorkflowTaskGroupService
709
+ from .stable.workflow_task_group_service import WorkflowTaskGroupService
873
710
 
874
- self._workflow_task_group_service = WorkflowTaskGroupService(
875
- self._client, retry_strategy=self._retry_strategy
876
- )
877
- return self._workflow_task_group_service
711
+ return self._create_service(WorkflowTaskGroupService)
878
712
 
879
- @property
713
+ @cached_property
880
714
  def workflow_tasks(self) -> WorkflowTaskService:
881
715
  """
882
716
  Workflow Tasks.
@@ -885,10 +719,6 @@ class V2StableService(BaseService):
885
719
 
886
720
  See https://benchling.com/api/reference#/Workflow%20Tasks
887
721
  """
888
- if self._workflow_task_service is None:
889
- from benchling_sdk.services.v2.stable.workflow_task_service import WorkflowTaskService
722
+ from .stable.workflow_task_service import WorkflowTaskService
890
723
 
891
- self._workflow_task_service = WorkflowTaskService(
892
- self._client, retry_strategy=self._retry_strategy
893
- )
894
- return self._workflow_task_service
724
+ return self._create_service(WorkflowTaskService)