benchling-sdk 1.21.2__py3-none-any.whl → 1.22.0a1__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 (32) hide show
  1. benchling_sdk/apps/canvas/types.py +8 -0
  2. benchling_sdk/benchling.py +88 -12
  3. benchling_sdk/helpers/task_helpers.py +5 -5
  4. benchling_sdk/models/__init__.py +1335 -329
  5. benchling_sdk/models/webhooks/v0/__init__.py +24 -4
  6. benchling_sdk/services/v2/stable/aa_sequence_service.py +4 -0
  7. benchling_sdk/services/v2/{beta/v2_beta_audit_service.py → stable/audit_service.py} +6 -6
  8. benchling_sdk/services/v2/stable/box_service.py +4 -0
  9. benchling_sdk/services/v2/stable/connect_service.py +79 -0
  10. benchling_sdk/services/v2/stable/container_service.py +4 -0
  11. benchling_sdk/services/v2/stable/custom_entity_service.py +4 -0
  12. benchling_sdk/services/v2/stable/data_frame_service.py +323 -0
  13. benchling_sdk/services/v2/stable/dataset_service.py +192 -0
  14. benchling_sdk/services/v2/stable/dna_oligo_service.py +4 -0
  15. benchling_sdk/services/v2/stable/dna_sequence_service.py +4 -0
  16. benchling_sdk/services/v2/stable/file_service.py +191 -0
  17. benchling_sdk/services/v2/stable/{request_service.py → legacy_request_service.py} +25 -25
  18. benchling_sdk/services/v2/stable/location_service.py +4 -0
  19. benchling_sdk/services/v2/stable/mixture_service.py +4 -0
  20. benchling_sdk/services/v2/stable/molecule_service.py +4 -0
  21. benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +4 -0
  22. benchling_sdk/services/v2/stable/plate_service.py +4 -0
  23. benchling_sdk/services/v2/stable/rna_oligo_service.py +4 -0
  24. benchling_sdk/services/v2/stable/rna_sequence_service.py +4 -0
  25. benchling_sdk/services/v2/stable/task_service.py +1 -7
  26. benchling_sdk/services/v2/stable/test_order_service.py +145 -0
  27. benchling_sdk/services/v2/v2_beta_service.py +0 -14
  28. benchling_sdk/services/v2/v2_stable_service.py +101 -14
  29. {benchling_sdk-1.21.2.dist-info → benchling_sdk-1.22.0a1.dist-info}/METADATA +3 -2
  30. {benchling_sdk-1.21.2.dist-info → benchling_sdk-1.22.0a1.dist-info}/RECORD +32 -27
  31. {benchling_sdk-1.21.2.dist-info → benchling_sdk-1.22.0a1.dist-info}/LICENSE +0 -0
  32. {benchling_sdk-1.21.2.dist-info → benchling_sdk-1.22.0a1.dist-info}/WHEEL +0 -0
@@ -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,
@@ -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)
@@ -0,0 +1,145 @@
1
+ from typing import Iterable, List, Optional
2
+
3
+ from benchling_api_client.v2.stable.api.test_orders import (
4
+ bulk_update_test_orders,
5
+ list_test_orders,
6
+ update_test_order,
7
+ )
8
+ from benchling_api_client.v2.stable.models.async_task_link import AsyncTaskLink
9
+ from benchling_api_client.v2.stable.models.list_test_orders_sort import ListTestOrdersSort
10
+ from benchling_api_client.v2.stable.models.test_order import TestOrder
11
+ from benchling_api_client.v2.stable.models.test_order_bulk_update import TestOrderBulkUpdate
12
+ from benchling_api_client.v2.stable.models.test_order_status import TestOrderStatus
13
+ from benchling_api_client.v2.stable.models.test_order_update import TestOrderUpdate
14
+ from benchling_api_client.v2.stable.models.test_orders_bulk_update_request import TestOrdersBulkUpdateRequest
15
+ from benchling_api_client.v2.stable.models.test_orders_paginated_list import TestOrdersPaginatedList
16
+ from benchling_api_client.v2.types import Response
17
+
18
+ from benchling_sdk.errors import raise_for_status
19
+ from benchling_sdk.helpers.decorators import api_method
20
+ from benchling_sdk.helpers.pagination_helpers import NextToken, PageIterator
21
+ from benchling_sdk.helpers.response_helpers import model_from_detailed
22
+ from benchling_sdk.helpers.serialization_helpers import none_as_unset
23
+ from benchling_sdk.services.v2.base_service import BaseService
24
+
25
+
26
+ class TestOrderService(BaseService):
27
+ """
28
+ Test Orders.
29
+
30
+ Test orders enable users to order tests for specific sample/container combinations that will be fulfilled in assays.
31
+
32
+ See https://benchling.com/api/reference?availability=la#/Test%20Orders/
33
+ """
34
+
35
+ @api_method
36
+ def bulk_update(self, test_orders: Iterable[TestOrderBulkUpdate]) -> AsyncTaskLink:
37
+ """
38
+ Bulk update Test Orders.
39
+
40
+ See https://benchling.com/api/reference?availability=la#/Test%20Orders/bulkUpdateTestOrders
41
+ """
42
+ body = TestOrdersBulkUpdateRequest(list(test_orders))
43
+ response = bulk_update_test_orders.sync_detailed(client=self.client, json_body=body)
44
+ return model_from_detailed(response)
45
+
46
+ @api_method
47
+ def _test_orders_page(
48
+ self,
49
+ page_size: Optional[int] = 50,
50
+ next_token: Optional[str] = None,
51
+ sort: Optional[ListTestOrdersSort] = ListTestOrdersSort.MODIFIEDATDESC,
52
+ created_atlt: Optional[str] = None,
53
+ created_atgt: Optional[str] = None,
54
+ created_atlte: Optional[str] = None,
55
+ created_atgte: Optional[str] = None,
56
+ modified_atlt: Optional[str] = None,
57
+ modified_atgt: Optional[str] = None,
58
+ modified_atlte: Optional[str] = None,
59
+ modified_atgte: Optional[str] = None,
60
+ ids: Optional[str] = None,
61
+ container_idsany_of: Optional[str] = None,
62
+ sample_idsany_of: Optional[str] = None,
63
+ status: Optional[TestOrderStatus] = None,
64
+ ) -> Response[TestOrdersPaginatedList]:
65
+ response = list_test_orders.sync_detailed(
66
+ client=self.client,
67
+ page_size=none_as_unset(page_size),
68
+ next_token=none_as_unset(next_token),
69
+ sort=none_as_unset(sort),
70
+ created_atlt=none_as_unset(created_atlt),
71
+ created_atgt=none_as_unset(created_atgt),
72
+ created_atlte=none_as_unset(created_atlte),
73
+ created_atgte=none_as_unset(created_atgte),
74
+ modified_atlt=none_as_unset(modified_atlt),
75
+ modified_atgt=none_as_unset(modified_atgt),
76
+ modified_atlte=none_as_unset(modified_atlte),
77
+ modified_atgte=none_as_unset(modified_atgte),
78
+ ids=none_as_unset(ids),
79
+ container_idsany_of=none_as_unset(container_idsany_of),
80
+ sample_idsany_of=none_as_unset(sample_idsany_of),
81
+ status=none_as_unset(status),
82
+ )
83
+ raise_for_status(response)
84
+ return response # type: ignore
85
+
86
+ def list(
87
+ self,
88
+ *,
89
+ page_size: Optional[int] = 50,
90
+ next_token: Optional[str] = None,
91
+ sort: Optional[ListTestOrdersSort] = ListTestOrdersSort.MODIFIEDATDESC,
92
+ created_atlt: Optional[str] = None,
93
+ created_atgt: Optional[str] = None,
94
+ created_atlte: Optional[str] = None,
95
+ created_atgte: Optional[str] = None,
96
+ modified_atlt: Optional[str] = None,
97
+ modified_atgt: Optional[str] = None,
98
+ modified_atlte: Optional[str] = None,
99
+ modified_atgte: Optional[str] = None,
100
+ ids: Optional[str] = None,
101
+ container_idsany_of: Optional[str] = None,
102
+ sample_idsany_of: Optional[str] = None,
103
+ status: Optional[TestOrderStatus] = None,
104
+ ) -> PageIterator[TestOrder]:
105
+ """
106
+ List Test Orders.
107
+
108
+ See https://benchling.com/api/reference?availability=la#/Test%20Orders/listTestOrders
109
+ """
110
+
111
+ def api_call(next_token: NextToken) -> Response[TestOrdersPaginatedList]:
112
+ return self._test_orders_page(
113
+ page_size=page_size,
114
+ next_token=next_token,
115
+ sort=sort,
116
+ created_atlt=created_atlt,
117
+ created_atgt=created_atgt,
118
+ created_atlte=created_atlte,
119
+ created_atgte=created_atgte,
120
+ modified_atlt=modified_atlt,
121
+ modified_atgt=modified_atgt,
122
+ modified_atlte=modified_atlte,
123
+ modified_atgte=modified_atgte,
124
+ ids=ids,
125
+ container_idsany_of=container_idsany_of,
126
+ sample_idsany_of=sample_idsany_of,
127
+ status=status,
128
+ )
129
+
130
+ def results_extractor(body: TestOrdersPaginatedList) -> Optional[List[TestOrder]]:
131
+ return body.test_orders
132
+
133
+ return PageIterator(api_call, results_extractor)
134
+
135
+ @api_method
136
+ def update(self, test_order_id: str, test_order: TestOrderUpdate) -> TestOrder:
137
+ """
138
+ Update a TestOrder.
139
+
140
+ See https://benchling.com/api/reference?availability=la#/Test%20Orders/updateTestOrder
141
+ """
142
+ response = update_test_order.sync_detailed(
143
+ client=self.client, test_order_id=test_order_id, json_body=test_order
144
+ )
145
+ return model_from_detailed(response)
@@ -14,7 +14,6 @@ if TYPE_CHECKING:
14
14
  from benchling_sdk.services.v2.beta.v2_beta_analysis_service import V2BetaAnalysisService
15
15
  from benchling_sdk.services.v2.beta.v2_beta_app_definition_service import V2BetaAppDefinitionService
16
16
  from benchling_sdk.services.v2.beta.v2_beta_app_service import V2BetaAppService
17
- from benchling_sdk.services.v2.beta.v2_beta_audit_service import V2BetaAuditService
18
17
  from benchling_sdk.services.v2.beta.v2_beta_collaboration_service import V2BetaCollaborationService
19
18
  from benchling_sdk.services.v2.beta.v2_beta_entry_service import V2BetaEntryService
20
19
  from benchling_sdk.services.v2.beta.v2_beta_folder_service import V2BetaFolderService
@@ -82,19 +81,6 @@ class V2BetaService(BaseService):
82
81
 
83
82
  return self._create_service(V2BetaAppDefinitionService)
84
83
 
85
- @cached_property
86
- def audit(self) -> V2BetaAuditService:
87
- """
88
- V2-Beta Audit.
89
-
90
- Export audit log data for Benchling objects.
91
-
92
- https://benchling.com/api/v2-beta/reference#/Audit
93
- """
94
- from .beta.v2_beta_audit_service import V2BetaAuditService
95
-
96
- return self._create_service(V2BetaAuditService)
97
-
98
84
  @cached_property
99
85
  def collaborations(self) -> V2BetaCollaborationService:
100
86
  """
@@ -14,12 +14,16 @@ if TYPE_CHECKING:
14
14
  from benchling_sdk.services.v2.stable.app_service import AppService
15
15
  from benchling_sdk.services.v2.stable.assay_result_service import AssayResultService
16
16
  from benchling_sdk.services.v2.stable.assay_run_service import AssayRunService
17
+ from benchling_sdk.services.v2.stable.audit_service import AuditService
17
18
  from benchling_sdk.services.v2.stable.blob_service import BlobService
18
19
  from benchling_sdk.services.v2.stable.box_service import BoxService
19
20
  from benchling_sdk.services.v2.stable.codon_usage_table_service import CodonUsageTableService
21
+ from benchling_sdk.services.v2.stable.connect_service import ConnectService
20
22
  from benchling_sdk.services.v2.stable.container_service import ContainerService
21
23
  from benchling_sdk.services.v2.stable.custom_entity_service import CustomEntityService
22
24
  from benchling_sdk.services.v2.stable.custom_notation_service import CustomNotationService
25
+ from benchling_sdk.services.v2.stable.data_frame_service import DataFrameService
26
+ from benchling_sdk.services.v2.stable.dataset_service import DatasetService
23
27
  from benchling_sdk.services.v2.stable.dna_alignments_service import DnaAlignmentsService
24
28
  from benchling_sdk.services.v2.stable.dna_oligo_service import DnaOligoService
25
29
  from benchling_sdk.services.v2.stable.dna_sequence_service import DnaSequenceService
@@ -30,11 +34,13 @@ if TYPE_CHECKING:
30
34
  from benchling_sdk.services.v2.stable.event_service import EventService
31
35
  from benchling_sdk.services.v2.stable.export_service import ExportService
32
36
  from benchling_sdk.services.v2.stable.feature_library_service import FeatureLibraryService
37
+ from benchling_sdk.services.v2.stable.file_service import FileService
33
38
  from benchling_sdk.services.v2.stable.folder_service import FolderService
34
39
  from benchling_sdk.services.v2.stable.instrument_query_service import InstrumentQueryService
35
40
  from benchling_sdk.services.v2.stable.inventory_service import InventoryService
36
41
  from benchling_sdk.services.v2.stable.lab_automation_service import LabAutomationService
37
42
  from benchling_sdk.services.v2.stable.label_template_service import LabelTemplateService
43
+ from benchling_sdk.services.v2.stable.legacy_request_service import LegacyRequestService
38
44
  from benchling_sdk.services.v2.stable.location_service import LocationService
39
45
  from benchling_sdk.services.v2.stable.mixture_service import MixtureService
40
46
  from benchling_sdk.services.v2.stable.molecule_service import MoleculeService
@@ -46,12 +52,12 @@ if TYPE_CHECKING:
46
52
  from benchling_sdk.services.v2.stable.printer_service import PrinterService
47
53
  from benchling_sdk.services.v2.stable.project_service import ProjectService
48
54
  from benchling_sdk.services.v2.stable.registry_service import RegistryService
49
- from benchling_sdk.services.v2.stable.request_service import RequestService
50
55
  from benchling_sdk.services.v2.stable.rna_oligo_service import RnaOligoService
51
56
  from benchling_sdk.services.v2.stable.rna_sequence_service import RnaSequenceService
52
57
  from benchling_sdk.services.v2.stable.schema_service import SchemaService
53
58
  from benchling_sdk.services.v2.stable.task_service import TaskService
54
59
  from benchling_sdk.services.v2.stable.team_service import TeamService
60
+ from benchling_sdk.services.v2.stable.test_order_service import TestOrderService
55
61
  from benchling_sdk.services.v2.stable.user_service import UserService
56
62
  from benchling_sdk.services.v2.stable.warehouse_service import WarehouseService
57
63
  from benchling_sdk.services.v2.stable.workflow_flowchart_config_version_service import (
@@ -149,6 +155,19 @@ class V2StableService(BaseService):
149
155
 
150
156
  return self._create_service(AssayRunService)
151
157
 
158
+ @cached_property
159
+ def audit(self) -> AuditService:
160
+ """
161
+ Audits.
162
+
163
+ Export audit log data for Benchling objects.
164
+
165
+ https://benchling.com/api/reference#/Audit
166
+ """
167
+ from .stable.audit_service import AuditService
168
+
169
+ return self._create_service(AuditService)
170
+
152
171
  @cached_property
153
172
  def blobs(self) -> BlobService:
154
173
  """
@@ -197,6 +216,19 @@ class V2StableService(BaseService):
197
216
 
198
217
  return self._create_service(CodonUsageTableService)
199
218
 
219
+ @cached_property
220
+ def connect(self) -> ConnectService:
221
+ """
222
+ Connect.
223
+
224
+ Connect endpoints support Benchling Connect actions, like instrument data conversion.
225
+
226
+ See https://benchling.com/api/reference#/Connect
227
+ """
228
+ from .stable.connect_service import ConnectService
229
+
230
+ return self._create_service(ConnectService)
231
+
200
232
  @cached_property
201
233
  def containers(self) -> ContainerService:
202
234
  """
@@ -245,6 +277,33 @@ class V2StableService(BaseService):
245
277
 
246
278
  return self._create_service(CustomNotationService)
247
279
 
280
+ @cached_property
281
+ def data_frames(self) -> DataFrameService:
282
+ """
283
+ DataFrames.
284
+
285
+ DataFrames are Benchling objects that represent tabular data with typed columns and rows of data.
286
+
287
+ See https://benchling.com/api/v2/reference#/Data%20Frames
288
+ """
289
+ from .stable.data_frame_service import DataFrameService
290
+
291
+ return self._create_service(DataFrameService)
292
+
293
+ @cached_property
294
+ def datasets(self) -> DatasetService:
295
+ """
296
+ Datasets.
297
+
298
+ Datasets are Benchling objects that represent tabular data with typed columns and rows of data. Unlike
299
+ Data Frames, Datasets are located in folders and can be searched in the UI.
300
+
301
+ See https://benchling.com/api/v2/reference#/Datasets
302
+ """
303
+ from .stable.dataset_service import DatasetService
304
+
305
+ return self._create_service(DatasetService)
306
+
248
307
  @cached_property
249
308
  def dna_alignments(self) -> DnaAlignmentsService:
250
309
  """
@@ -395,6 +454,21 @@ class V2StableService(BaseService):
395
454
 
396
455
  return self._create_service(FeatureLibraryService)
397
456
 
457
+ @cached_property
458
+ def files(self) -> FileService:
459
+ """
460
+ Files.
461
+
462
+ Files are Benchling objects that represent files and their metadata. Compared to Blobs, which are used
463
+ by most Benchling products for attachments, Files are primarily used in the Analysis and Connect
464
+ product.
465
+
466
+ See https://benchling.com/api/v2/reference#/Files
467
+ """
468
+ from .stable.file_service import FileService
469
+
470
+ return self._create_service(FileService)
471
+
398
472
  @cached_property
399
473
  def folders(self) -> FolderService:
400
474
  """
@@ -461,6 +535,19 @@ class V2StableService(BaseService):
461
535
 
462
536
  return self._create_service(LabelTemplateService)
463
537
 
538
+ @cached_property
539
+ def legacy_requests(self) -> LegacyRequestService:
540
+ """
541
+ Legacy Requests.
542
+
543
+ Legacy Requests allow scientists and teams to collaborate around experimental assays and workflows.
544
+
545
+ See https://benchling.com/api/reference#/Legacy%20Requests
546
+ """
547
+ from .stable.legacy_request_service import LegacyRequestService
548
+
549
+ return self._create_service(LegacyRequestService)
550
+
464
551
  @cached_property
465
552
  def locations(self) -> LocationService:
466
553
  """
@@ -618,19 +705,6 @@ class V2StableService(BaseService):
618
705
 
619
706
  return self._create_service(RegistryService)
620
707
 
621
- @cached_property
622
- def requests(self) -> RequestService:
623
- """
624
- Requests.
625
-
626
- Requests allow scientists and teams to collaborate around experimental assays and workflows.
627
-
628
- See https://benchling.com/api/reference#/Requests
629
- """
630
- from .stable.request_service import RequestService
631
-
632
- return self._create_service(RequestService)
633
-
634
708
  @cached_property
635
709
  def rna_oligos(self) -> RnaOligoService:
636
710
  """
@@ -692,6 +766,19 @@ class V2StableService(BaseService):
692
766
 
693
767
  return self._create_service(TeamService)
694
768
 
769
+ @cached_property
770
+ def test_orders(self) -> TestOrderService:
771
+ """
772
+ Test Orders.
773
+
774
+ Test orders enable users to order tests for specific sample/container combinations that will be fulfilled in assays.
775
+
776
+ See https://benchling.com/api/reference?availability=la#/Test%20Orders/
777
+ """
778
+ from .stable.test_order_service import TestOrderService
779
+
780
+ return self._create_service(TestOrderService)
781
+
695
782
  @cached_property
696
783
  def users(self) -> UserService:
697
784
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: benchling-sdk
3
- Version: 1.21.2
3
+ Version: 1.22.0a1
4
4
  Summary: SDK for interacting with the Benchling Platform.
5
5
  License: Apache-2.0
6
6
  Author: Benchling Support
@@ -16,7 +16,7 @@ Provides-Extra: python-jose
16
16
  Requires-Dist: PyYAML (>=6.0,<7.0)
17
17
  Requires-Dist: attrs (>=20.1.0)
18
18
  Requires-Dist: backoff (>=1.10.0,<3)
19
- Requires-Dist: benchling-api-client (==2.0.342)
19
+ Requires-Dist: benchling-api-client (==2.0.390)
20
20
  Requires-Dist: certifi (>=2022.12.7)
21
21
  Requires-Dist: cryptography (>=42.0.0) ; extra == "cryptography"
22
22
  Requires-Dist: dataclasses-json (>=0.5.2,<0.6.0)
@@ -26,6 +26,7 @@ Requires-Dist: ordered-set (>=4.1.0,<5.0.0)
26
26
  Requires-Dist: psutil (>=5.9.4,<6.0.0) ; python_version >= "3.11" and python_version < "4.0"
27
27
  Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
28
28
  Requires-Dist: python-jose[cryptography] (>=3.3.0,<4.0.0) ; extra == "python-jose"
29
+ Requires-Dist: setuptools (==68.0.0)
29
30
  Description-Content-Type: text/markdown
30
31
 
31
32
  # Benchling SDK