benchling-sdk 1.20__py3-none-any.whl → 1.21.1__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 (33) hide show
  1. benchling_sdk/apps/helpers/webhook_helpers.py +34 -11
  2. benchling_sdk/apps/status/framework.py +1 -1
  3. benchling_sdk/auth/client_credentials_oauth2.py +1 -1
  4. benchling_sdk/helpers/serialization_helpers.py +1 -1
  5. benchling_sdk/services/v2/stable/aa_sequence_service.py +1 -1
  6. benchling_sdk/services/v2/stable/app_service.py +2 -2
  7. benchling_sdk/services/v2/stable/assay_result_service.py +1 -1
  8. benchling_sdk/services/v2/stable/assay_run_service.py +3 -3
  9. benchling_sdk/services/v2/stable/codon_usage_table_service.py +1 -1
  10. benchling_sdk/services/v2/stable/custom_entity_service.py +1 -1
  11. benchling_sdk/services/v2/stable/dna_alignments_service.py +1 -1
  12. benchling_sdk/services/v2/stable/dna_oligo_service.py +1 -1
  13. benchling_sdk/services/v2/stable/dna_sequence_service.py +1 -1
  14. benchling_sdk/services/v2/stable/enzyme_service.py +1 -1
  15. benchling_sdk/services/v2/stable/event_service.py +1 -1
  16. benchling_sdk/services/v2/stable/feature_library_service.py +2 -2
  17. benchling_sdk/services/v2/stable/lab_automation_service.py +3 -3
  18. benchling_sdk/services/v2/stable/mixture_service.py +1 -1
  19. benchling_sdk/services/v2/stable/molecule_service.py +1 -1
  20. benchling_sdk/services/v2/stable/monomer_service.py +1 -1
  21. benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +1 -1
  22. benchling_sdk/services/v2/stable/oligo_service.py +1 -1
  23. benchling_sdk/services/v2/stable/request_service.py +2 -2
  24. benchling_sdk/services/v2/stable/rna_oligo_service.py +1 -1
  25. benchling_sdk/services/v2/stable/rna_sequence_service.py +1 -1
  26. benchling_sdk/services/v2/stable/workflow_flowchart_service.py +1 -1
  27. benchling_sdk/services/v2/stable/workflow_output_service.py +1 -1
  28. benchling_sdk/services/v2/stable/workflow_task_group_service.py +1 -1
  29. benchling_sdk/services/v2/stable/workflow_task_service.py +1 -1
  30. {benchling_sdk-1.20.dist-info → benchling_sdk-1.21.1.dist-info}/METADATA +3 -4
  31. {benchling_sdk-1.20.dist-info → benchling_sdk-1.21.1.dist-info}/RECORD +33 -33
  32. {benchling_sdk-1.20.dist-info → benchling_sdk-1.21.1.dist-info}/LICENSE +0 -0
  33. {benchling_sdk-1.20.dist-info → benchling_sdk-1.21.1.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
1
1
  import base64
2
2
  from datetime import datetime, timedelta, timezone
3
- from typing import cast, List, Protocol, Union
3
+ from typing import cast, List, Optional, Protocol, Union
4
4
 
5
5
  from benchling_api_client.v2.benchling_client import BenchlingApiClient
6
6
  import httpx
@@ -12,6 +12,21 @@ from benchling_sdk.helpers.package_helpers import _required_packages_context, Ex
12
12
  from benchling_sdk.services.v2.stable.api_service import build_json_response
13
13
 
14
14
 
15
+ class HeadersMapping(Protocol):
16
+ """
17
+ A general type for objects that represent request headers.
18
+
19
+ This can be a dict, or any `Mapping[str, str]`, or an instance of a class like
20
+ Flask's Headers class which is dict-like to a limited degree.
21
+ """
22
+
23
+ def __contains__(self, key: str) -> bool:
24
+ pass
25
+
26
+ def __getitem__(self, key: str) -> str:
27
+ pass
28
+
29
+
15
30
  class WebhookVerificationError(Exception):
16
31
  """
17
32
  Webhook Verification Error.
@@ -93,7 +108,7 @@ def _production_webhook_jwks(app_definition_id: str) -> str:
93
108
  def _retrieve_jwks(
94
109
  app_installation_or_definition_id: str,
95
110
  jwk_url_provider: Union[JwkUrlProvider, LegacyJwkUrlProvider],
96
- httpx_client: httpx.Client = None,
111
+ httpx_client: Optional[httpx.Client] = None,
97
112
  ):
98
113
  if httpx_client is None:
99
114
  httpx_client = _default_httpx_webhook_client()
@@ -106,8 +121,8 @@ def _retrieve_jwks(
106
121
 
107
122
  def jwks_by_app(
108
123
  app_id: str,
109
- httpx_client: httpx.Client = None,
110
- jwk_url_provider: LegacyJwkUrlProvider = None,
124
+ httpx_client: Optional[httpx.Client] = None,
125
+ jwk_url_provider: Optional[LegacyJwkUrlProvider] = None,
111
126
  ) -> jwk.JWKSet:
112
127
  """
113
128
  Get JWKs by App (Deprecated).
@@ -128,8 +143,8 @@ def jwks_by_app(
128
143
 
129
144
  def jwks_by_app_definition(
130
145
  app_definition_id: str,
131
- httpx_client: httpx.Client = None,
132
- jwk_url_provider: JwkUrlProvider = None,
146
+ httpx_client: Optional[httpx.Client] = None,
147
+ jwk_url_provider: Optional[JwkUrlProvider] = None,
133
148
  ) -> jwk.JWKSet:
134
149
  """
135
150
  Get JWKs for a Benchling App from its global app_definition_id.
@@ -146,7 +161,7 @@ def jwks_by_app_definition(
146
161
 
147
162
 
148
163
  def verify_app_installation(
149
- app_id: str, data: str, headers: dict, jwk_function: LegacyGetJwksFunction = None
164
+ app_id: str, data: str, headers: HeadersMapping, jwk_function: Optional[LegacyGetJwksFunction] = None
150
165
  ) -> None:
151
166
  """
152
167
  Verify a webhook for an app installation (Deprecated).
@@ -162,13 +177,21 @@ def verify_app_installation(
162
177
  _verify(app_id, data, headers, jwk_function)
163
178
 
164
179
 
165
- def verify(app_definition_id: str, data: str, headers: dict, jwk_function: GetJwksFunction = None) -> None:
180
+ def verify(
181
+ app_definition_id: str,
182
+ data: str,
183
+ headers: HeadersMapping,
184
+ jwk_function: Optional[GetJwksFunction] = None,
185
+ ) -> None:
166
186
  """
167
187
  Verify a webhook for a Benchling App from its global app_definition_id.
168
188
 
169
189
  Verifies that a webhook was a valid webhook from Benchling.
170
190
  Raises WebhookVerificationError if the webhook could not be verified.
171
191
  Resolves JWKs from Benchling with default settings. Pass jwk_function for customization.
192
+
193
+ The headers parameter can be a dict, or a dict-like object such as the Headers type
194
+ from Flask.
172
195
  """
173
196
  default_jwk_function: GetJwksFunction = jwks_by_app_definition
174
197
  _jwk_function: GetJwksFunction = default_jwk_function if jwk_function is None else jwk_function
@@ -196,7 +219,7 @@ def _has_valid_signature(to_verify: str, jwks: jwk.JWKSet, encoded_signatures: L
196
219
  def _verify(
197
220
  app_installation_or_definition_id: str,
198
221
  data: str,
199
- headers: dict,
222
+ headers: HeadersMapping,
200
223
  jwk_function: Union[GetJwksFunction, LegacyGetJwksFunction],
201
224
  ) -> None:
202
225
  _verify_headers_present(headers)
@@ -210,7 +233,7 @@ def _verify(
210
233
  raise WebhookVerificationError("No matching signature found")
211
234
 
212
235
 
213
- def _der_signatures_from_versioned_signatures(versioned_signatures: str) -> List[str]:
236
+ def _der_signatures_from_versioned_signatures(versioned_signatures: List[str]) -> List[str]:
214
237
  """
215
238
  Parse and return a list of ders signatures from a single string.
216
239
 
@@ -226,7 +249,7 @@ def _der_signatures_from_versioned_signatures(versioned_signatures: str) -> List
226
249
  return der_signatures
227
250
 
228
251
 
229
- def _verify_headers_present(headers: dict) -> None:
252
+ def _verify_headers_present(headers: HeadersMapping) -> None:
230
253
  """
231
254
  Verify Headers Present.
232
255
 
@@ -5,7 +5,7 @@ from contextlib import AbstractContextManager
5
5
  from types import TracebackType
6
6
  from typing import cast, Iterable, List, Optional, Protocol, Type, TYPE_CHECKING, Union
7
7
 
8
- from benchling_api_client.v2.stable.types import Unset, UNSET
8
+ from benchling_api_client.v2.stable.types import UNSET, Unset
9
9
 
10
10
  from benchling_sdk.apps.status.errors import (
11
11
  AppUserFacingError,
@@ -70,7 +70,7 @@ class ClientCredentialsOAuth2(AuthorizationMethod):
70
70
  self,
71
71
  client_id: str,
72
72
  client_secret: str,
73
- token_url: str = None,
73
+ token_url: Optional[str] = None,
74
74
  httpx_client: Optional[httpx.Client] = None,
75
75
  ):
76
76
  """
@@ -1,7 +1,7 @@
1
1
  from dataclasses import dataclass
2
2
  from typing import Any, Dict, Iterable, Optional, Type, TypeVar, Union
3
3
 
4
- from benchling_api_client.v2.types import Unset, UNSET
4
+ from benchling_api_client.v2.types import UNSET, Unset
5
5
  from dataclasses_json import DataClassJsonMixin
6
6
 
7
7
  from benchling_sdk.models import CustomFields, Field, Fields, SchemaFieldsQueryParam
@@ -111,7 +111,7 @@ class AaSequenceService(BaseService):
111
111
  creator_ids: Optional[Iterable[str]] = None,
112
112
  sort: Optional[ListAASequencesSort] = None,
113
113
  page_size: Optional[int] = None,
114
- next_token: NextToken = None,
114
+ next_token: Optional[NextToken] = None,
115
115
  author_idsany_of: Optional[Iterable[str]] = None,
116
116
  returning: Optional[Iterable[str]] = None,
117
117
  ) -> Response[AaSequencesPaginatedList]:
@@ -389,7 +389,7 @@ class AppService(BaseService):
389
389
  enabled: Optional[ListAppCanvasesEnabled] = None,
390
390
  archive_reason: Optional[str] = None,
391
391
  sort: Optional[Union[str, ListAppCanvasesSort]] = None,
392
- next_token: NextToken = None,
392
+ next_token: Optional[NextToken] = None,
393
393
  page_size: Optional[int] = None,
394
394
  ) -> Response[AppCanvasesPaginatedList]:
395
395
  response = list_app_canvases.sync_detailed(
@@ -555,7 +555,7 @@ class AppService(BaseService):
555
555
  modified_at_gte: Optional[datetime] = None,
556
556
  sort: Optional[ListAppSessionsSort] = None,
557
557
  returning: Optional[Iterable[str]] = None,
558
- next_token: NextToken = None,
558
+ next_token: Optional[NextToken] = None,
559
559
  page_size: Optional[int] = None,
560
560
  ) -> Response[AppSessionsPaginatedList]:
561
561
  response = list_app_sessions.sync_detailed(
@@ -71,7 +71,7 @@ class AssayResultService(BaseService):
71
71
  max_created_time: Optional[int] = None,
72
72
  entity_ids: Optional[Iterable[str]] = None,
73
73
  assay_run_ids: Optional[Iterable[str]] = None,
74
- next_token: NextToken = None,
74
+ next_token: Optional[NextToken] = None,
75
75
  page_size: Optional[int] = None,
76
76
  ids: Optional[Iterable[str]] = None,
77
77
  storage_ids: Optional[Iterable[str]] = None,
@@ -67,7 +67,7 @@ class AssayRunService(BaseService):
67
67
  schema_id: str,
68
68
  min_created_time: Optional[int] = None,
69
69
  max_created_time: Optional[int] = None,
70
- next_token: NextToken = None,
70
+ next_token: Optional[NextToken] = None,
71
71
  page_size: Optional[int] = None,
72
72
  ids: Optional[Iterable[str]] = None,
73
73
  ) -> Response[AssayRunsPaginatedList]:
@@ -152,7 +152,7 @@ class AssayRunService(BaseService):
152
152
  self,
153
153
  assay_run_id: str,
154
154
  modified_at: Optional[str] = None,
155
- next_token: NextToken = None,
155
+ next_token: Optional[NextToken] = None,
156
156
  ) -> Response[AutomationFileInputsPaginatedList]:
157
157
  response = list_automation_input_generators.sync_detailed(
158
158
  client=self.client,
@@ -186,7 +186,7 @@ class AssayRunService(BaseService):
186
186
  def _automation_output_processors_page(
187
187
  self,
188
188
  assay_run_id: str,
189
- next_token: NextToken = None,
189
+ next_token: Optional[NextToken] = None,
190
190
  ) -> Response[AutomationOutputProcessorsPaginatedList]:
191
191
  """Deprecated in favor of lab_automation.automation_output_processors."""
192
192
  log_deprecation(
@@ -30,7 +30,7 @@ class CodonUsageTableService(BaseService):
30
30
  name_includes: Optional[str] = None,
31
31
  names_any_of: Optional[Iterable[str]] = [],
32
32
  page_size: Optional[int] = None,
33
- next_token: NextToken = None,
33
+ next_token: Optional[NextToken] = None,
34
34
  ) -> Response[CodonUsageTablesPaginatedList]:
35
35
  response = list_codon_usage_tables.sync_detailed(
36
36
  client=self.client,
@@ -93,7 +93,7 @@ class CustomEntityService(BaseService):
93
93
  creator_ids: Optional[Iterable[str]] = None,
94
94
  schema_fields: Optional[Dict[str, Any]] = None,
95
95
  page_size: Optional[int] = None,
96
- next_token: NextToken = None,
96
+ next_token: Optional[NextToken] = None,
97
97
  author_idsany_of: Optional[Iterable[str]] = None,
98
98
  returning: Optional[Iterable[str]] = None,
99
99
  ) -> Response[CustomEntitiesPaginatedList]:
@@ -66,7 +66,7 @@ class DnaAlignmentsService(BaseService):
66
66
  sequence_ids: Optional[List[str]] = None,
67
67
  sort: Optional[ListDNAAlignmentsSort] = None,
68
68
  page_size: Optional[int] = None,
69
- next_token: NextToken = None,
69
+ next_token: Optional[NextToken] = None,
70
70
  ) -> Response[DnaAlignmentsPaginatedList]:
71
71
  response = list_dna_alignments.sync_detailed(
72
72
  client=self.client,
@@ -89,7 +89,7 @@ class DnaOligoService(BaseService):
89
89
  schema_fields: Optional[Dict[str, Any]] = None,
90
90
  creator_ids: Optional[Iterable[str]] = None,
91
91
  page_size: Optional[int] = None,
92
- next_token: NextToken = None,
92
+ next_token: Optional[NextToken] = None,
93
93
  author_idsany_of: Optional[Iterable[str]] = None,
94
94
  returning: Optional[Iterable[str]] = None,
95
95
  custom_notation_id: Optional[str] = None,
@@ -109,7 +109,7 @@ class DnaSequenceService(BaseService):
109
109
  creator_ids: Optional[Iterable[str]] = None,
110
110
  schema_fields: Optional[Dict[str, Any]] = None,
111
111
  page_size: Optional[int] = None,
112
- next_token: NextToken = None,
112
+ next_token: Optional[NextToken] = None,
113
113
  author_idsany_of: Optional[Iterable[str]] = None,
114
114
  returning: Optional[Iterable[str]] = None,
115
115
  ) -> Response[DnaSequencesPaginatedList]:
@@ -29,7 +29,7 @@ class EnzymeService(BaseService):
29
29
  name_includes: Optional[str] = None,
30
30
  names_any_of: Optional[Iterable[str]] = [],
31
31
  page_size: Optional[int] = None,
32
- next_token: NextToken = None,
32
+ next_token: Optional[NextToken] = None,
33
33
  ) -> Response[EnzymesPaginatedList]:
34
34
  response = list_enzymes.sync_detailed(
35
35
  client=self.client,
@@ -29,7 +29,7 @@ class EventService(BaseService):
29
29
  event_types: Optional[str] = None,
30
30
  poll: Optional[bool] = None,
31
31
  page_size: Optional[int] = None,
32
- next_token: NextToken = None,
32
+ next_token: Optional[NextToken] = None,
33
33
  ) -> Response[EventsPaginatedList]:
34
34
  response = list_events.sync_detailed(
35
35
  client=self.client,
@@ -73,7 +73,7 @@ class FeatureLibraryService(BaseService):
73
73
  sort: Optional[ListFeatureLibrariesSort] = None,
74
74
  page_size: Optional[int] = None,
75
75
  returning: Optional[Iterable[str]] = None,
76
- next_token: NextToken = None,
76
+ next_token: Optional[NextToken] = None,
77
77
  ) -> Response[FeatureLibrariesPaginatedList]:
78
78
  response = list_feature_libraries.sync_detailed(
79
79
  client=self.client,
@@ -166,7 +166,7 @@ class FeatureLibraryService(BaseService):
166
166
  def _features_page(
167
167
  self,
168
168
  page_size: Optional[int] = None,
169
- next_token: NextToken = None,
169
+ next_token: Optional[NextToken] = None,
170
170
  name: Optional[str] = None,
171
171
  ids: Optional[Iterable[str]] = None,
172
172
  namesany_ofcase_sensitive: Optional[Iterable[str]] = None,
@@ -131,7 +131,7 @@ class LabAutomationService(BaseService):
131
131
  automation_file_config_name: Optional[str],
132
132
  archive_reason: Optional[str],
133
133
  modified_at: Optional[str],
134
- next_token: NextToken = None,
134
+ next_token: Optional[NextToken] = None,
135
135
  ) -> Response[AutomationOutputProcessorsPaginatedList]:
136
136
  response = list_automation_output_processors.sync_detailed(
137
137
  client=self.client,
@@ -147,8 +147,8 @@ class LabAutomationService(BaseService):
147
147
  def automation_output_processors(
148
148
  self,
149
149
  assay_run_id: str,
150
- automation_file_config_name: str = None,
151
- archive_reason: str = None,
150
+ automation_file_config_name: Optional[str] = None,
151
+ archive_reason: Optional[str] = None,
152
152
  modified_at: Optional[str] = None,
153
153
  ) -> PageIterator[AutomationOutputProcessor]:
154
154
  """
@@ -83,7 +83,7 @@ class MixtureService(BaseService):
83
83
  names_any_of_case_sensitive: Optional[Iterable[str]] = None,
84
84
  schema_fields: Optional[Dict[str, Any]] = None,
85
85
  page_size: Optional[int] = None,
86
- next_token: NextToken = None,
86
+ next_token: Optional[NextToken] = None,
87
87
  author_idsany_of: Optional[Iterable[str]] = None,
88
88
  ) -> Response[MixturesPaginatedList]:
89
89
  response = list_mixtures.sync_detailed(
@@ -84,7 +84,7 @@ class MoleculeService(BaseService):
84
84
  names_any_of: Optional[Iterable[str]] = None,
85
85
  schema_fields: Optional[Dict[str, Any]] = None,
86
86
  page_size: Optional[int] = None,
87
- next_token: NextToken = None,
87
+ next_token: Optional[NextToken] = None,
88
88
  author_idsany_of: Optional[Iterable[str]] = None,
89
89
  chemical_substructuremol: Optional[str] = None,
90
90
  chemical_substructuresmiles: Optional[str] = None,
@@ -41,7 +41,7 @@ class MonomerService(BaseService):
41
41
  def _list_page(
42
42
  self,
43
43
  page_size: Optional[int] = None,
44
- next_token: NextToken = None,
44
+ next_token: Optional[NextToken] = None,
45
45
  returning: Optional[Iterable[str]] = None,
46
46
  ) -> Response[MonomersPaginatedList]:
47
47
  response = list_monomers.sync_detailed(
@@ -58,7 +58,7 @@ class NucleotideAlignmentsService(BaseService):
58
58
  sequence_ids: Optional[List[str]] = None,
59
59
  sort: Optional[ListNucleotideAlignmentsSort] = None,
60
60
  page_size: Optional[int] = None,
61
- next_token: NextToken = None,
61
+ next_token: Optional[NextToken] = None,
62
62
  ) -> Response[NucleotideAlignmentsPaginatedList]:
63
63
  response = list_nucleotide_alignments.sync_detailed(
64
64
  client=self.client,
@@ -95,7 +95,7 @@ class OligoService(BaseService):
95
95
  schema_fields: Optional[Dict[str, Any]] = None,
96
96
  creator_ids: Optional[Iterable[str]] = None,
97
97
  page_size: Optional[int] = None,
98
- next_token: NextToken = None,
98
+ next_token: Optional[NextToken] = None,
99
99
  returning: Optional[Iterable[str]] = None,
100
100
  ) -> Response[OligosPaginatedList]:
101
101
  """Deprecate in favor of dna_oligos._dna_oligos_page or rna_oligos._rna_oligos_page."""
@@ -69,7 +69,7 @@ class RequestService(BaseService):
69
69
  request_status: Optional[RequestStatus] = None,
70
70
  min_created_time: Optional[int] = None,
71
71
  max_created_time: Optional[int] = None,
72
- next_token: NextToken = None,
72
+ next_token: Optional[NextToken] = None,
73
73
  page_size: Optional[int] = None,
74
74
  returning: Optional[Iterable[str]] = None,
75
75
  ) -> Response[RequestsPaginatedList]:
@@ -201,7 +201,7 @@ class RequestService(BaseService):
201
201
  self,
202
202
  entry_id: str,
203
203
  modified_at: Optional[str] = None,
204
- next_token: NextToken = None,
204
+ next_token: Optional[NextToken] = None,
205
205
  page_size: Optional[int] = None,
206
206
  ) -> Response[RequestFulfillmentsPaginatedList]:
207
207
  response = list_request_fulfillments.sync_detailed(
@@ -98,7 +98,7 @@ class RnaOligoService(BaseService):
98
98
  schema_fields: Optional[Dict[str, Any]] = None,
99
99
  creator_ids: Optional[Iterable[str]] = None,
100
100
  page_size: Optional[int] = None,
101
- next_token: NextToken = None,
101
+ next_token: Optional[NextToken] = None,
102
102
  author_idsany_of: Optional[Iterable[str]] = None,
103
103
  returning: Optional[Iterable[str]] = None,
104
104
  custom_notation_id: Optional[str] = None,
@@ -104,7 +104,7 @@ class RnaSequenceService(BaseService):
104
104
  creator_ids: Optional[Iterable[str]] = None,
105
105
  schema_fields: Optional[Dict[str, Any]] = None,
106
106
  page_size: Optional[int] = None,
107
- next_token: NextToken = None,
107
+ next_token: Optional[NextToken] = None,
108
108
  author_idsany_of: Optional[Iterable[str]] = None,
109
109
  returning: Optional[Iterable[str]] = None,
110
110
  custom_notation_id: Optional[str] = None,
@@ -44,7 +44,7 @@ class WorkflowFlowchartService(BaseService):
44
44
  ids: Optional[Iterable[str]] = None,
45
45
  created_at: Optional[datetime.date] = None,
46
46
  page_size: Optional[int] = None,
47
- next_token: NextToken = None,
47
+ next_token: Optional[NextToken] = None,
48
48
  ) -> Response[WorkflowFlowchartPaginatedList]:
49
49
  response = list_workflow_flowcharts.sync_detailed(
50
50
  client=self.client,
@@ -81,7 +81,7 @@ class WorkflowOutputService(BaseService):
81
81
  linked_item_ids_none_of: Optional[Iterable[str]] = None,
82
82
  archive_reason: Optional[str] = None,
83
83
  page_size: Optional[int] = None,
84
- next_token: NextToken = None,
84
+ next_token: Optional[NextToken] = None,
85
85
  ) -> Response[WorkflowOutputsPaginatedList]:
86
86
  response = list_workflow_outputs.sync_detailed(
87
87
  client=self.client,
@@ -70,7 +70,7 @@ class WorkflowTaskGroupService(BaseService):
70
70
  display_ids: Optional[Iterable[str]] = None,
71
71
  archive_reason: Optional[str] = None,
72
72
  page_size: Optional[int] = None,
73
- next_token: NextToken = None,
73
+ next_token: Optional[NextToken] = None,
74
74
  ) -> Response[WorkflowTaskGroupsPaginatedList]:
75
75
  response = list_workflow_task_groups.sync_detailed(
76
76
  client=self.client,
@@ -92,7 +92,7 @@ class WorkflowTaskService(BaseService):
92
92
  linked_item_ids_none_of: Optional[Iterable[str]] = None,
93
93
  archive_reason: Optional[str] = None,
94
94
  page_size: Optional[int] = None,
95
- next_token: NextToken = None,
95
+ next_token: Optional[NextToken] = None,
96
96
  ) -> Response[WorkflowTasksPaginatedList]:
97
97
  response = list_workflow_tasks.sync_detailed(
98
98
  client=self.client,
@@ -1,14 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: benchling-sdk
3
- Version: 1.20
3
+ Version: 1.21.1
4
4
  Summary: SDK for interacting with the Benchling Platform.
5
5
  License: Apache-2.0
6
6
  Author: Benchling Support
7
7
  Author-email: support@benchling.com
8
- Requires-Python: >=3.8,<4.0
8
+ Requires-Python: >=3.9,<4.0
9
9
  Classifier: License :: OSI Approved :: Apache Software License
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.8
12
11
  Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
@@ -17,7 +16,7 @@ Provides-Extra: python-jose
17
16
  Requires-Dist: PyYAML (>=6.0,<7.0)
18
17
  Requires-Dist: attrs (>=20.1.0)
19
18
  Requires-Dist: backoff (>=1.10.0,<3)
20
- Requires-Dist: benchling-api-client (==2.0.338)
19
+ Requires-Dist: benchling-api-client (==2.0.342)
21
20
  Requires-Dist: certifi (>=2022.12.7)
22
21
  Requires-Dist: cryptography (>=42.0.0) ; extra == "cryptography"
23
22
  Requires-Dist: dataclasses-json (>=0.5.2,<0.6.0)
@@ -16,17 +16,17 @@ benchling_sdk/apps/config/types.py,sha256=XKfSGv-75CU-j1XwfXBGq8zbtnkF-PQnuY6Z2U
16
16
  benchling_sdk/apps/framework.py,sha256=G15mv20FH7FLHJrnXMPcuFdUsP3Va-grvb5A4eq0Qlk,3175
17
17
  benchling_sdk/apps/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  benchling_sdk/apps/helpers/manifest_helpers.py,sha256=yidiKA5mwWdAFR1ZSUu40QoG0Us-bc6V8tYHYqheEtM,945
19
- benchling_sdk/apps/helpers/webhook_helpers.py,sha256=MluhJYe4yQvam_i88bc4M4AfoaD9nZiR0_LHu82ev3s,9900
19
+ benchling_sdk/apps/helpers/webhook_helpers.py,sha256=CLotJQYm6QfXjnzzkO193m_qHbS-TBEniCkICnLH2_w,10535
20
20
  benchling_sdk/apps/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  benchling_sdk/apps/status/errors.py,sha256=BezqnaHkCG1QBscD4301NjSYBHu7BzdYEUKF90psuz0,2377
22
- benchling_sdk/apps/status/framework.py,sha256=go0pyU5qgMCvsrTDXWk3V9FZwbaRHgfhEWtjIZ-JLEE,27418
22
+ benchling_sdk/apps/status/framework.py,sha256=xbZ5jJxI62Wf0EehUhPDysv-Utag4sZoisGzqiMm-CM,27418
23
23
  benchling_sdk/apps/status/helpers.py,sha256=MSa2soRIK7TiA9TWAEg-EoqZ7ZYyjTmtJ28JIe6LUds,1316
24
24
  benchling_sdk/apps/status/types.py,sha256=vE7-_7ns3mvPRJoVv-GQxc3389dIIH4mcG0VDNWpVhQ,746
25
25
  benchling_sdk/apps/types.py,sha256=TBTfAB3IOoZjZqzTOK25kN3b6RTU9Z7tOMdBbq6u8lA,110
26
26
  benchling_sdk/auth/__init__.py,sha256=N4pJYVUnTLzg5HO9ZldHaI-Am97i6AOCdQS0M5QcVpA,120
27
27
  benchling_sdk/auth/api_key_auth.py,sha256=Ui-cnvGMjcwVPV_b2GdBaoTjEyHJIu9CjtZScVBEUvU,641
28
28
  benchling_sdk/auth/bearer_token_auth.py,sha256=nymI8V91evcnK-TWKkBXZwck8U1qSh4WaseyQbvF-Cg,1268
29
- benchling_sdk/auth/client_credentials_oauth2.py,sha256=auHj8FAJxUrDf1HJp9wfmcC_pJ-3rj4tdQbsUIvSUQs,5801
29
+ benchling_sdk/auth/client_credentials_oauth2.py,sha256=R_Fi7XxRxufj_UNewJ0XWMT7KqVc49H5XZm1YcQ9Nn0,5811
30
30
  benchling_sdk/benchling.py,sha256=b6LGyX5j_Itp4WPJnaDCqgUcqtUrC1yWXs2rF1BlFys,29154
31
31
  benchling_sdk/docs/__init__.py,sha256=ySHo76PzLndmXOVWrF80VjB5Pi48G82CCQNdzUEzbCY,38
32
32
  benchling_sdk/docs/__main__.py,sha256=1ZlGXdn2gHGC0fAuan5i54mh35VkDf5mhY9VeKNyCRA,244
@@ -41,7 +41,7 @@ benchling_sdk/helpers/package_helpers.py,sha256=JLDDdlOwz6_BgP5j157u0qX-Mtb7ZkzX
41
41
  benchling_sdk/helpers/pagination_helpers.py,sha256=Dewy1OxAO0ZdJOGuEPyJGkjU8Hu8iFNWob-z0riMNOs,7745
42
42
  benchling_sdk/helpers/response_helpers.py,sha256=vtmb9lEEKy3dRFre3Q0R4XaLBEaS_rruxtwPvpepPUw,613
43
43
  benchling_sdk/helpers/retry_helpers.py,sha256=Sd7F8HMGPs31svYW-1z-SujbWUBn3qlZUk52hZ5G7xw,2814
44
- benchling_sdk/helpers/serialization_helpers.py,sha256=IUS0uGU_EiZvb8O-bTViUaROmxKcvdX3JeR9iKsWAG8,3662
44
+ benchling_sdk/helpers/serialization_helpers.py,sha256=jpW7ydipBB1q4Ek1t9tWkTOul_E1QwtlzwTnBZp7LB4,3662
45
45
  benchling_sdk/helpers/task_helpers.py,sha256=4AgAR7JSlP3jb4egGTesxixzgsTbod6uJvdS0VIOppI,7349
46
46
  benchling_sdk/helpers/transaction_manager.py,sha256=HcSDsgGK7Rb93bgv6fpb4HvQUT-tqP0lXgVa_bWCDh4,3663
47
47
  benchling_sdk/models/__init__.py,sha256=4m3QBFbghDfeU3hAf3h-DELjhcH1MUtvc0kJyGRG-q0,372428
@@ -66,61 +66,61 @@ benchling_sdk/services/v2/beta/v2_beta_folder_service.py,sha256=b6-D_eDTF1e2l2YL
66
66
  benchling_sdk/services/v2/beta/v2_beta_project_service.py,sha256=8Wk0u6dtiewytfuJ2RaybMOfqih7YF74cJF_wsetJpM,4926
67
67
  benchling_sdk/services/v2/beta/v2_beta_worklist_service.py,sha256=tFMe-7Wbw3qISe-T5EsnYVsmcd1P8Aw1NoWmNA5MroU,5544
68
68
  benchling_sdk/services/v2/stable/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- benchling_sdk/services/v2/stable/aa_sequence_service.py,sha256=gWjdv37vxHiFzDxgYq6KfO9DqRqQ4e9dn3swXDBhrqA,16467
69
+ benchling_sdk/services/v2/stable/aa_sequence_service.py,sha256=izSTMGbLcj5Z1yJDu8Qep8Z0KiVV0hAHOL-mcDC3VVU,16477
70
70
  benchling_sdk/services/v2/stable/api_service.py,sha256=e0RNp4Jne9UTaHOYMOxxXJpsyUO3WMSFPzN7hB8iliU,12371
71
- benchling_sdk/services/v2/stable/app_service.py,sha256=BIAxeHZFPAVffvr978FV9wG2rZuy1gzZXBT9Ghjr7PI,23356
72
- benchling_sdk/services/v2/stable/assay_result_service.py,sha256=OOdDTfGWGTF5FKCMyexqwD9K4XcsBY420VZ4oMDG1rQ,13466
73
- benchling_sdk/services/v2/stable/assay_run_service.py,sha256=tLpG1pAztEoaDatqlgYlRZ_LgwDly1_UeWt4G4UXvd4,9023
71
+ benchling_sdk/services/v2/stable/app_service.py,sha256=8G81xfmnb6VM22XlO19lC5rmXHuNsORsWc46tJRAais,23376
72
+ benchling_sdk/services/v2/stable/assay_result_service.py,sha256=ArDAe7kScS1KZAXGH68hQ_ngjNdMYEAJc4pT5BDHRFA,13476
73
+ benchling_sdk/services/v2/stable/assay_run_service.py,sha256=_GLp0_Kp6kcPpTt4BT19-REDRrJ2laXVfOXbFZmnp3k,9053
74
74
  benchling_sdk/services/v2/stable/blob_service.py,sha256=KwchH3FGzPLfZx85GEG3voQp_ZxyVL_dds_9awRWa0Q,17115
75
75
  benchling_sdk/services/v2/stable/box_service.py,sha256=M40smqG-jQlioyRfLBu9Cr9aQmdh06crsYbH1fiZ0BM,12359
76
- benchling_sdk/services/v2/stable/codon_usage_table_service.py,sha256=NdKSOdmVLeqQ5sa8c63VCWfzzRVGsL0krL1JROB8xSg,2820
76
+ benchling_sdk/services/v2/stable/codon_usage_table_service.py,sha256=qQdn98s9kzb-YSPdVDrizfqbbugslPdMTykrHSRHtQU,2830
77
77
  benchling_sdk/services/v2/stable/container_service.py,sha256=BdR616ah6hqhhQJePaNw2WHLp6fJ8et9V_a-f2CSsak,19063
78
- benchling_sdk/services/v2/stable/custom_entity_service.py,sha256=V100fIfzI2ekvZM_PPFo7q4lFKOTIGXJvWDSB4KFAQ8,12648
78
+ benchling_sdk/services/v2/stable/custom_entity_service.py,sha256=JISesmhT5RYP215PBj9XcYtjkvA1BtJEwjaZEetRiQM,12658
79
79
  benchling_sdk/services/v2/stable/custom_notation_service.py,sha256=LCnt8hoCkkSRbz-bXUaYbuMaE-1XdYmXB0MgeQ30POc,2141
80
- benchling_sdk/services/v2/stable/dna_alignments_service.py,sha256=PPFfXdvMBF1guTM8WMNYp8wdCVY_xbWHq_jHulkEYF4,7586
81
- benchling_sdk/services/v2/stable/dna_oligo_service.py,sha256=bQr_Ppd8AuM5GDitF-b1yNOMWtoOE6G4rt-a6PxLTdo,11534
82
- benchling_sdk/services/v2/stable/dna_sequence_service.py,sha256=0DQwBdGWdxYYYglyzV0GfZuoH_ygBgD4n7i-Aa9WZAA,17577
80
+ benchling_sdk/services/v2/stable/dna_alignments_service.py,sha256=iVwCInkkdf_7E80UxYJgFs1GlnG3TU2sSykH4yYQFi8,7596
81
+ benchling_sdk/services/v2/stable/dna_oligo_service.py,sha256=9ZQt2F5iikoi7TmlQDV9SJgYAw_bgqfNfI9FayfStGQ,11544
82
+ benchling_sdk/services/v2/stable/dna_sequence_service.py,sha256=A-lW61Gfs8-mBgHp8bRcV9dr4QQPuaeY9jlZsKMXS-Y,17587
83
83
  benchling_sdk/services/v2/stable/dropdown_service.py,sha256=AcnATXU_TChhSm9NX8dx9wnbxeBwACzThw5zM3yPYmk,4919
84
84
  benchling_sdk/services/v2/stable/entity_service.py,sha256=NGDjng4rwiL6EeDCEs5oy9ciKV6CPv71S1l7A8zM0Uk,2190
85
85
  benchling_sdk/services/v2/stable/entry_service.py,sha256=7HypcoX0vWDi5hFMtqFO6RpKc6IclO3HMQaWdvKNXyQ,13706
86
- benchling_sdk/services/v2/stable/enzyme_service.py,sha256=f6CwpvjBDqgVLmAPuXjTAPcej_BuE8isZh7JqdPhI0E,2597
87
- benchling_sdk/services/v2/stable/event_service.py,sha256=--j-oqKR-Ld5d4QiJ6aofOr9LTBCM7maqwRvo2goSPA,2538
86
+ benchling_sdk/services/v2/stable/enzyme_service.py,sha256=NikFuJPUj_v03xhbFbfg-59z0_u2xlm56USN4_X501o,2607
87
+ benchling_sdk/services/v2/stable/event_service.py,sha256=jDLsL3x2qxxTzNcPzVFOCR-h7dZyrkcUuWvX2l-poEQ,2548
88
88
  benchling_sdk/services/v2/stable/export_service.py,sha256=t3Nf1QXGdeo9o7SBdDxwPEMsHogf_a-BqK6sIR8Hgq4,1139
89
- benchling_sdk/services/v2/stable/feature_library_service.py,sha256=DcC_2xF1G-LzIUPuOEd0ebsPxSiE_g7dP9YPxtt8CuM,9944
89
+ benchling_sdk/services/v2/stable/feature_library_service.py,sha256=OMJsgWviyLU18XIFc0mRspmxeGAteCVqM2iuPM9RFXs,9964
90
90
  benchling_sdk/services/v2/stable/folder_service.py,sha256=dgibCL02gFOJrIr5G6QUiKQoSy284RcDKk-vcOXus_I,5219
91
91
  benchling_sdk/services/v2/stable/instrument_query_service.py,sha256=wk_mtpY3uOPVY1nP3XtLNwAER-1aWQqqiBB2bABbk68,961
92
92
  benchling_sdk/services/v2/stable/inventory_service.py,sha256=kHcRrR1Zp92XwpAN5iFdWbrTjEhPnhaHS8iSRYY3X4s,1761
93
- benchling_sdk/services/v2/stable/lab_automation_service.py,sha256=NWjcpTCVlN3PYT6Vv7yi7Vk0cvrF6m5ekidaxi0aDsg,10032
93
+ benchling_sdk/services/v2/stable/lab_automation_service.py,sha256=Q_neoySC53OT-_6Hj8OXnCJFf-rO8kk9HXjw9g3LGCU,10062
94
94
  benchling_sdk/services/v2/stable/label_template_service.py,sha256=VS25LUpUsJnkU_AFTTKjwMruVgE5-izLoc-_wrqr4Pk,1300
95
95
  benchling_sdk/services/v2/stable/location_service.py,sha256=4RVFEBRQZnNOm2AXdJcBYHVVPEtDsvihlKskbtez_d0,8026
96
- benchling_sdk/services/v2/stable/mixture_service.py,sha256=nNwh67Or1BQYZxcatcg-OEEw82Jr6UnxsYVRB9Y18GY,9952
97
- benchling_sdk/services/v2/stable/molecule_service.py,sha256=7BiurkHuS1ufMeZdRQ7UDb9Z7iTpcVeUIs2i9afHIdQ,10530
98
- benchling_sdk/services/v2/stable/monomer_service.py,sha256=-52xKiNHYYX_XE5yaC4t8ZGsUkg7j-TdZqAvqd5TnYA,4354
99
- benchling_sdk/services/v2/stable/nucleotide_alignments_service.py,sha256=D2NKCf_C2RvYomk6Li6ZTo4vtHSzUvMjS4BvwUu3pV8,6241
100
- benchling_sdk/services/v2/stable/oligo_service.py,sha256=9j2NGF_QB2YiG5ksW4jO3T9R1jar5MNSJTvuqVee4l8,12339
96
+ benchling_sdk/services/v2/stable/mixture_service.py,sha256=lJWUFMfAC6ldfbXrqYsExlYZpku647KqBCHRnSSOXOg,9962
97
+ benchling_sdk/services/v2/stable/molecule_service.py,sha256=R9zqupwBCl2VeJkKi-ARA366GSFbOd2Y13cnu3amzNw,10540
98
+ benchling_sdk/services/v2/stable/monomer_service.py,sha256=4BjIz3he2l73scDHGjEzeI7-iyaw2xfiAO2z-6xwV2I,4364
99
+ benchling_sdk/services/v2/stable/nucleotide_alignments_service.py,sha256=A-wxktIfr2sEveIBKsqQdBDNN87_RUIEz6V-DypCaxo,6251
100
+ benchling_sdk/services/v2/stable/oligo_service.py,sha256=8lupHABhAZ6Jk6-1z0i8w8dklt9AXP-Ns0fIBBbUMLk,12349
101
101
  benchling_sdk/services/v2/stable/organization_service.py,sha256=RGo4QHdzaTLhKcHPZvvS3AJ-8sE5dDPBQ4DNQCtxPuE,8375
102
102
  benchling_sdk/services/v2/stable/plate_service.py,sha256=2KU9sZ7x3niQQQHlhQ_yFKy4GoddJQ5v-kxG808T1mE,13226
103
103
  benchling_sdk/services/v2/stable/printer_service.py,sha256=XhXCwbNAamndWLuHn9UE2ehkkl6vCN5hhxBUvr93Uzk,1181
104
104
  benchling_sdk/services/v2/stable/project_service.py,sha256=Mb3ibiOQJ3uRnJLoDLYgPgrFE80N1bdYQz9LwpbrMtg,4140
105
105
  benchling_sdk/services/v2/stable/registry_service.py,sha256=nwTK4T3qnTS9g613qGYwN_TQPtGUmrha-whWnyQh5m0,4732
106
- benchling_sdk/services/v2/stable/request_service.py,sha256=EzXuIXE4mnGtEXiLYKqUApDbXp8ODq35FP-egVEXZC8,9500
107
- benchling_sdk/services/v2/stable/rna_oligo_service.py,sha256=_pMCJARnQWi27RRBJsCYgP3Sb_OrYkLZMrkN3hUIg8A,11764
108
- benchling_sdk/services/v2/stable/rna_sequence_service.py,sha256=7qVWNJZbcujnbob4K_mn8JStxuJMLahd86tdOx7YI_4,14662
106
+ benchling_sdk/services/v2/stable/request_service.py,sha256=0It4stdqNFy5SMaRLTLJaXhKWDMJh0W0uisFFpQeKDs,9520
107
+ benchling_sdk/services/v2/stable/rna_oligo_service.py,sha256=yRAIgN4KguFhLtUHWDIeJT2dn6lFCRo31YaU_4kvov8,11774
108
+ benchling_sdk/services/v2/stable/rna_sequence_service.py,sha256=Vx-sLKmAanHGXuuKN3oJEwGaW_0-lNV1FY7OYO_wnHI,14672
109
109
  benchling_sdk/services/v2/stable/schema_service.py,sha256=W64obUUqBcDbMbBOtDVb_bl-VUQGARoeb2u4I96k9Tk,23509
110
110
  benchling_sdk/services/v2/stable/task_service.py,sha256=VFVqV7_LHQ0zjVmjhtyTGKw5JMwpfTzIWcBQzyKZct4,5241
111
111
  benchling_sdk/services/v2/stable/team_service.py,sha256=nLOuT8fvQOkElfbCunBgcaRDdRw-353S_4sWRT-Ixro,8467
112
112
  benchling_sdk/services/v2/stable/user_service.py,sha256=NkMPz2rPaF6iXNWTBAOWSiXVif2rHYGbYAzaHg4Fhig,7528
113
113
  benchling_sdk/services/v2/stable/warehouse_service.py,sha256=_gVTwJZ5BcaNBG0k8I0a4MRahajkV7TNtREfuQGwR74,1286
114
114
  benchling_sdk/services/v2/stable/workflow_flowchart_config_version_service.py,sha256=HqSFSD9EDWaYAkCdHWjqpIPRuQbbNaJKkDHvQaK1Ggk,1323
115
- benchling_sdk/services/v2/stable/workflow_flowchart_service.py,sha256=wkqk9fwIbOzq7JCAtZDAlc9dV7pw0bk1nhrFEkUd-ls,3158
116
- benchling_sdk/services/v2/stable/workflow_output_service.py,sha256=VD0RvOBCkgX_YwUoQYQPR_PyGJXuIau5beq9bK75VXM,9993
117
- benchling_sdk/services/v2/stable/workflow_task_group_service.py,sha256=SSfHDH-Eniz09HG_qSPSfSVHU3BpvTbgGhOQS4iWcAw,8848
118
- benchling_sdk/services/v2/stable/workflow_task_service.py,sha256=pOhwFmWVk1jh3A9C70LpLhYjlgk2DcGCfjO8Uup9ScQ,12819
115
+ benchling_sdk/services/v2/stable/workflow_flowchart_service.py,sha256=FWHghL_DMfp4D7yW-euiNAfAFKsr8PRzSNar2QJSo-Q,3168
116
+ benchling_sdk/services/v2/stable/workflow_output_service.py,sha256=Cqku8VIzEJgswcBOIifi5ff9GBTv5Klocl8k8l8BHFI,10003
117
+ benchling_sdk/services/v2/stable/workflow_task_group_service.py,sha256=jg3-z5ygqkTi5jF-kDNnzwsqGKAnUWl0wEK4I4vJOkw,8858
118
+ benchling_sdk/services/v2/stable/workflow_task_service.py,sha256=PwjunmWyZdvVQVWToBR5SpP9iX8nQD0b2C11IycatkM,12829
119
119
  benchling_sdk/services/v2/v2_alpha_service.py,sha256=rl4niKxjU-Rvdx5W6cjyXd4rUMod-QcWdfZdVHSnMb4,2190
120
120
  benchling_sdk/services/v2/v2_beta_service.py,sha256=SEv2AsZG0phf_B4ORqjRO-3VBkYehu1hlUhRFHrpX3c,6093
121
121
  benchling_sdk/services/v2/v2_stable_service.py,sha256=21TzqEFHygMUFv0z0z8_MtXpSHLgwYC7YbIIsHrljaw,28232
122
122
  benchling_sdk/services/v2_service.py,sha256=cGX-Ps0hu7Oh1M7a0tu2zDN8-QG63dNDoK7w4eYo_OQ,3093
123
- benchling_sdk-1.20.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
124
- benchling_sdk-1.20.dist-info/METADATA,sha256=8NB_d9cy_bu-INFJtTeM9rj6WASGkxolkG8ZFYVhBj8,2106
125
- benchling_sdk-1.20.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
126
- benchling_sdk-1.20.dist-info/RECORD,,
123
+ benchling_sdk-1.21.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
124
+ benchling_sdk-1.21.1.dist-info/METADATA,sha256=JGAaM4hofzaehnL0qmWd3_dZA3dHjKjS79reu0pZKRI,2058
125
+ benchling_sdk-1.21.1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
126
+ benchling_sdk-1.21.1.dist-info/RECORD,,