UncountablePythonSDK 0.0.126__py3-none-any.whl → 0.0.142.dev0__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.

Potentially problematic release.


This version of UncountablePythonSDK might be problematic. Click here for more details.

Files changed (84) hide show
  1. docs/requirements.txt +1 -1
  2. examples/integration-server/jobs/materials_auto/example_cron.py +1 -1
  3. examples/integration-server/jobs/materials_auto/example_instrument.py +68 -38
  4. examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
  5. examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
  6. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +57 -16
  7. examples/integration-server/jobs/materials_auto/profile.yaml +18 -0
  8. examples/integration-server/pyproject.toml +4 -4
  9. pkgs/argument_parser/argument_parser.py +20 -1
  10. pkgs/serialization_util/serialization_helpers.py +3 -1
  11. pkgs/type_spec/builder.py +43 -13
  12. pkgs/type_spec/builder_types.py +9 -0
  13. pkgs/type_spec/cross_output_links.py +2 -10
  14. pkgs/type_spec/emit_open_api.py +0 -12
  15. pkgs/type_spec/emit_python.py +72 -11
  16. pkgs/type_spec/emit_typescript.py +2 -2
  17. pkgs/type_spec/emit_typescript_util.py +28 -6
  18. pkgs/type_spec/load_types.py +1 -1
  19. pkgs/type_spec/parts/base.ts.prepart +3 -0
  20. pkgs/type_spec/type_info/emit_type_info.py +27 -3
  21. pkgs/type_spec/value_spec/__main__.py +2 -2
  22. uncountable/core/client.py +10 -3
  23. uncountable/integration/cli.py +89 -2
  24. uncountable/integration/executors/executors.py +1 -2
  25. uncountable/integration/executors/generic_upload_executor.py +1 -1
  26. uncountable/integration/job.py +3 -3
  27. uncountable/integration/queue_runner/command_server/__init__.py +4 -0
  28. uncountable/integration/queue_runner/command_server/command_client.py +63 -0
  29. uncountable/integration/queue_runner/command_server/command_server.py +77 -5
  30. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +33 -0
  31. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +27 -13
  32. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +53 -1
  33. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +135 -0
  34. uncountable/integration/queue_runner/command_server/types.py +44 -1
  35. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +132 -8
  36. uncountable/integration/queue_runner/datastore/interface.py +3 -0
  37. uncountable/integration/queue_runner/datastore/model.py +8 -1
  38. uncountable/integration/queue_runner/job_scheduler.py +78 -3
  39. uncountable/integration/queue_runner/types.py +2 -0
  40. uncountable/integration/queue_runner/worker.py +28 -26
  41. uncountable/integration/scheduler.py +64 -13
  42. uncountable/integration/server.py +36 -6
  43. uncountable/integration/telemetry.py +120 -7
  44. uncountable/integration/webhook_server/entrypoint.py +2 -0
  45. uncountable/types/__init__.py +18 -0
  46. uncountable/types/api/entity/list_aggregate.py +79 -0
  47. uncountable/types/api/entity/list_entities.py +25 -0
  48. uncountable/types/api/entity/set_barcode.py +43 -0
  49. uncountable/types/api/entity/transition_entity_phase.py +2 -1
  50. uncountable/types/api/files/download_file.py +15 -1
  51. uncountable/types/api/integrations/push_notification.py +2 -0
  52. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  53. uncountable/types/api/listing/__init__.py +1 -0
  54. uncountable/types/api/listing/fetch_listing.py +57 -0
  55. uncountable/types/api/notebooks/__init__.py +1 -0
  56. uncountable/types/api/notebooks/add_notebook_content.py +119 -0
  57. uncountable/types/api/outputs/get_output_organization.py +1 -1
  58. uncountable/types/api/recipes/edit_recipe_inputs.py +1 -1
  59. uncountable/types/api/recipes/get_recipes_data.py +29 -0
  60. uncountable/types/api/recipes/lock_recipes.py +2 -1
  61. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  62. uncountable/types/api/recipes/unlock_recipes.py +2 -1
  63. uncountable/types/api/runsheet/export_default_runsheet.py +44 -0
  64. uncountable/types/api/uploader/complete_async_parse.py +4 -0
  65. uncountable/types/async_batch_processor.py +222 -0
  66. uncountable/types/async_batch_t.py +4 -0
  67. uncountable/types/client_base.py +367 -2
  68. uncountable/types/client_config.py +1 -0
  69. uncountable/types/client_config_t.py +10 -0
  70. uncountable/types/entity_t.py +3 -1
  71. uncountable/types/integration_server_t.py +2 -0
  72. uncountable/types/listing.py +46 -0
  73. uncountable/types/listing_t.py +533 -0
  74. uncountable/types/notices.py +8 -0
  75. uncountable/types/notices_t.py +37 -0
  76. uncountable/types/queued_job.py +1 -0
  77. uncountable/types/queued_job_t.py +9 -0
  78. uncountable/types/sockets.py +9 -0
  79. uncountable/types/sockets_t.py +99 -0
  80. uncountable/types/uploader_t.py +3 -2
  81. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/METADATA +4 -2
  82. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/RECORD +84 -68
  83. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/WHEEL +0 -0
  84. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/top_level.txt +0 -0
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  from pkgs.serialization import OpaqueKey
11
+ import uncountable.types.api.notebooks.add_notebook_content as add_notebook_content_t
11
12
  import uncountable.types.api.recipes.add_recipe_to_project as add_recipe_to_project_t
12
13
  import uncountable.types.api.recipes.add_time_series_data as add_time_series_data_t
13
14
  import uncountable.types.api.recipes.archive_recipes as archive_recipes_t
@@ -17,6 +18,7 @@ import uncountable.types.api.recipes.associate_recipe_as_lot as associate_recipe
17
18
  from uncountable.types import async_batch_t
18
19
  from uncountable.types import base_t
19
20
  import uncountable.types.api.recipes.clear_recipe_outputs as clear_recipe_outputs_t
21
+ from uncountable.types import client_config_t
20
22
  import uncountable.types.api.uploader.complete_async_parse as complete_async_parse_t
21
23
  import uncountable.types.api.runsheet.complete_async_upload as complete_async_upload_t
22
24
  import uncountable.types.api.chemical.convert_chemical_formats as convert_chemical_formats_t
@@ -35,6 +37,7 @@ import uncountable.types.api.batch.execute_batch as execute_batch_t
35
37
  import uncountable.types.api.batch.execute_batch_load_async as execute_batch_load_async_t
36
38
  import uncountable.types.api.entity.export_entities as export_entities_t
37
39
  from uncountable.types import exports_t
40
+ import uncountable.types.api.listing.fetch_listing as fetch_listing_t
38
41
  from uncountable.types import field_values_t
39
42
  from uncountable.types import generic_upload_t
40
43
  import uncountable.types.api.recipes.get_column_calculation_values as get_column_calculation_values_t
@@ -47,6 +50,7 @@ import uncountable.types.api.inputs.get_input_names as get_input_names_t
47
50
  import uncountable.types.api.inputs.get_inputs_data as get_inputs_data_t
48
51
  import uncountable.types.api.outputs.get_output_data as get_output_data_t
49
52
  import uncountable.types.api.outputs.get_output_names as get_output_names_t
53
+ import uncountable.types.api.outputs.get_output_organization as get_output_organization_t
50
54
  import uncountable.types.api.project.get_projects as get_projects_t
51
55
  import uncountable.types.api.project.get_projects_data as get_projects_data_t
52
56
  import uncountable.types.api.recipes.get_recipe_calculations as get_recipe_calculations_t
@@ -59,12 +63,15 @@ import uncountable.types.api.entity.grant_entity_permissions as grant_entity_per
59
63
  from uncountable.types import id_source_t
60
64
  from uncountable.types import identifier_t
61
65
  import uncountable.types.api.uploader.invoke_uploader as invoke_uploader_t
66
+ import uncountable.types.api.entity.list_aggregate as list_aggregate_t
62
67
  import uncountable.types.api.entity.list_entities as list_entities_t
63
68
  import uncountable.types.api.id_source.list_id_source as list_id_source_t
69
+ from uncountable.types import listing_t
64
70
  import uncountable.types.api.entity.lock_entity as lock_entity_t
65
71
  import uncountable.types.api.recipes.lock_recipes as lock_recipes_t
66
72
  import uncountable.types.api.entity.lookup_entity as lookup_entity_t
67
73
  import uncountable.types.api.id_source.match_id_source as match_id_source_t
74
+ from uncountable.types import notices_t
68
75
  from uncountable.types import notifications_t
69
76
  from uncountable.types import permissions_t
70
77
  from uncountable.types import post_base_t
@@ -73,11 +80,13 @@ from uncountable.types import recipe_identifiers_t
73
80
  from uncountable.types import recipe_links_t
74
81
  from uncountable.types import recipe_metadata_t
75
82
  from uncountable.types import recipe_workflow_steps_t
83
+ import uncountable.types.api.integrations.register_sockets_token as register_sockets_token_t
76
84
  import uncountable.types.api.recipes.remove_recipe_from_project as remove_recipe_from_project_t
77
85
  import uncountable.types.api.recipe_links.remove_recipe_link as remove_recipe_link_t
78
86
  import uncountable.types.api.entity.resolve_entity_ids as resolve_entity_ids_t
79
87
  import uncountable.types.api.outputs.resolve_output_conditions as resolve_output_conditions_t
80
88
  import uncountable.types.api.triggers.run_trigger as run_trigger_t
89
+ import uncountable.types.api.entity.set_barcode as set_barcode_t
81
90
  import uncountable.types.api.permissions.set_core_permissions as set_core_permissions_t
82
91
  import uncountable.types.api.entity.set_entity_field_values as set_entity_field_values_t
83
92
  import uncountable.types.api.inputs.set_input_attribute_values as set_input_attribute_values_t
@@ -90,7 +99,9 @@ import uncountable.types.api.recipes.set_recipe_output_annotations as set_recipe
90
99
  import uncountable.types.api.recipes.set_recipe_output_file as set_recipe_output_file_t
91
100
  import uncountable.types.api.recipes.set_recipe_outputs as set_recipe_outputs_t
92
101
  import uncountable.types.api.recipes.set_recipe_tags as set_recipe_tags_t
102
+ import uncountable.types.api.recipes.set_recipe_total as set_recipe_total_t
93
103
  import uncountable.types.api.entity.set_values as set_values_t
104
+ from uncountable.types import sockets_t
94
105
  import uncountable.types.api.entity.transition_entity_phase as transition_entity_phase_t
95
106
  import uncountable.types.api.recipes.unarchive_recipes as unarchive_recipes_t
96
107
  import uncountable.types.api.entity.unlock_entity as unlock_entity_t
@@ -110,6 +121,7 @@ class APIRequest:
110
121
  method: str
111
122
  endpoint: str
112
123
  args: typing.Any
124
+ request_options: client_config_t.RequestOptions | None = None
113
125
 
114
126
 
115
127
  class ClientMethods(ABC):
@@ -118,11 +130,39 @@ class ClientMethods(ABC):
118
130
  def do_request(self, *, api_request: APIRequest, return_type: type[DT]) -> DT:
119
131
  ...
120
132
 
133
+ def add_notebook_content(
134
+ self,
135
+ *,
136
+ notebook_key: identifier_t.IdentifierKey,
137
+ location: add_notebook_content_t.Location,
138
+ contents: list[add_notebook_content_t.InputContent],
139
+ _request_options: client_config_t.RequestOptions | None = None,
140
+ ) -> add_notebook_content_t.Data:
141
+ """Adds content to an existing notebook
142
+
143
+ :param notebook_key: Key of the notebook to add the content to
144
+ :param location: The location to add the content to in the notebook
145
+ :param contents: List of input content to add to the notebook
146
+ """
147
+ args = add_notebook_content_t.Arguments(
148
+ notebook_key=notebook_key,
149
+ location=location,
150
+ contents=contents,
151
+ )
152
+ api_request = APIRequest(
153
+ method=add_notebook_content_t.ENDPOINT_METHOD,
154
+ endpoint=add_notebook_content_t.ENDPOINT_PATH,
155
+ args=args,
156
+ request_options=_request_options,
157
+ )
158
+ return self.do_request(api_request=api_request, return_type=add_notebook_content_t.Data)
159
+
121
160
  def add_recipe_to_project(
122
161
  self,
123
162
  *,
124
163
  recipe_key: identifier_t.IdentifierKey,
125
164
  project_key: identifier_t.IdentifierKey,
165
+ _request_options: client_config_t.RequestOptions | None = None,
126
166
  ) -> add_recipe_to_project_t.Data:
127
167
  """Adds a recipe to a project
128
168
 
@@ -137,6 +177,7 @@ class ClientMethods(ABC):
137
177
  method=add_recipe_to_project_t.ENDPOINT_METHOD,
138
178
  endpoint=add_recipe_to_project_t.ENDPOINT_PATH,
139
179
  args=args,
180
+ request_options=_request_options,
140
181
  )
141
182
  return self.do_request(api_request=api_request, return_type=add_recipe_to_project_t.Data)
142
183
 
@@ -146,6 +187,7 @@ class ClientMethods(ABC):
146
187
  time_series_segment_key: identifier_t.IdentifierKey,
147
188
  time_series_data: list[add_time_series_data_t.TimeSeriesDatum],
148
189
  on_conflict: add_time_series_data_t.OnTimepointConflict = add_time_series_data_t.OnTimepointConflict.ERROR,
190
+ _request_options: client_config_t.RequestOptions | None = None,
149
191
  ) -> add_time_series_data_t.Data:
150
192
  """Add timepoint data to a time series segment.
151
193
 
@@ -162,6 +204,7 @@ class ClientMethods(ABC):
162
204
  method=add_time_series_data_t.ENDPOINT_METHOD,
163
205
  endpoint=add_time_series_data_t.ENDPOINT_PATH,
164
206
  args=args,
207
+ request_options=_request_options,
165
208
  )
166
209
  return self.do_request(api_request=api_request, return_type=add_time_series_data_t.Data)
167
210
 
@@ -170,6 +213,7 @@ class ClientMethods(ABC):
170
213
  *,
171
214
  recipes: list[identifier_t.IdentifierKey],
172
215
  reason: str | None = None,
216
+ _request_options: client_config_t.RequestOptions | None = None,
173
217
  ) -> archive_recipes_t.Data:
174
218
  """Archive the provided recipes and their children
175
219
 
@@ -184,6 +228,7 @@ class ClientMethods(ABC):
184
228
  method=archive_recipes_t.ENDPOINT_METHOD,
185
229
  endpoint=archive_recipes_t.ENDPOINT_PATH,
186
230
  args=args,
231
+ request_options=_request_options,
187
232
  )
188
233
  return self.do_request(api_request=api_request, return_type=archive_recipes_t.Data)
189
234
 
@@ -192,6 +237,7 @@ class ClientMethods(ABC):
192
237
  *,
193
238
  equipment_key: identifier_t.IdentifierKey,
194
239
  material_family_ids: list[base_t.ObjectId],
240
+ _request_options: client_config_t.RequestOptions | None = None,
195
241
  ) -> associate_equipment_input_t.Data:
196
242
  """Create or return the input association for equipment
197
243
 
@@ -206,6 +252,7 @@ class ClientMethods(ABC):
206
252
  method=associate_equipment_input_t.ENDPOINT_METHOD,
207
253
  endpoint=associate_equipment_input_t.ENDPOINT_PATH,
208
254
  args=args,
255
+ request_options=_request_options,
209
256
  )
210
257
  return self.do_request(api_request=api_request, return_type=associate_equipment_input_t.Data)
211
258
 
@@ -215,6 +262,7 @@ class ClientMethods(ABC):
215
262
  recipe_key: identifier_t.IdentifierKey,
216
263
  input_key: identifier_t.IdentifierKey | None = None,
217
264
  show_in_listings: bool | None = None,
265
+ _request_options: client_config_t.RequestOptions | None = None,
218
266
  ) -> associate_recipe_as_input_t.Data:
219
267
  """Create or return the input association for a recipe
220
268
 
@@ -231,6 +279,7 @@ class ClientMethods(ABC):
231
279
  method=associate_recipe_as_input_t.ENDPOINT_METHOD,
232
280
  endpoint=associate_recipe_as_input_t.ENDPOINT_PATH,
233
281
  args=args,
282
+ request_options=_request_options,
234
283
  )
235
284
  return self.do_request(api_request=api_request, return_type=associate_recipe_as_input_t.Data)
236
285
 
@@ -239,6 +288,7 @@ class ClientMethods(ABC):
239
288
  *,
240
289
  recipe_key: identifier_t.IdentifierKey,
241
290
  ingredient_key: identifier_t.IdentifierKey,
291
+ _request_options: client_config_t.RequestOptions | None = None,
242
292
  ) -> associate_recipe_as_lot_t.Data:
243
293
  """Create a new lot association for the provided recipe with the provided ingredient
244
294
 
@@ -253,6 +303,7 @@ class ClientMethods(ABC):
253
303
  method=associate_recipe_as_lot_t.ENDPOINT_METHOD,
254
304
  endpoint=associate_recipe_as_lot_t.ENDPOINT_PATH,
255
305
  args=args,
306
+ request_options=_request_options,
256
307
  )
257
308
  return self.do_request(api_request=api_request, return_type=associate_recipe_as_lot_t.Data)
258
309
 
@@ -260,6 +311,7 @@ class ClientMethods(ABC):
260
311
  self,
261
312
  *,
262
313
  recipe_key: identifier_t.IdentifierKey,
314
+ _request_options: client_config_t.RequestOptions | None = None,
263
315
  ) -> clear_recipe_outputs_t.Data:
264
316
  """Clears all output values & output metadata for a given recipe
265
317
 
@@ -272,6 +324,7 @@ class ClientMethods(ABC):
272
324
  method=clear_recipe_outputs_t.ENDPOINT_METHOD,
273
325
  endpoint=clear_recipe_outputs_t.ENDPOINT_PATH,
274
326
  args=args,
327
+ request_options=_request_options,
275
328
  )
276
329
  return self.do_request(api_request=api_request, return_type=clear_recipe_outputs_t.Data)
277
330
 
@@ -279,17 +332,23 @@ class ClientMethods(ABC):
279
332
  self,
280
333
  *,
281
334
  parsed_file_data: list[uploader_t.ParsedFileData],
335
+ async_job_key: identifier_t.IdentifierKey,
336
+ upload_destination: generic_upload_t.UploadDestinationRecipe,
337
+ _request_options: client_config_t.RequestOptions | None = None,
282
338
  ) -> complete_async_parse_t.Data:
283
339
  """Parses uploaded files asynchronously
284
340
 
285
341
  """
286
342
  args = complete_async_parse_t.Arguments(
287
343
  parsed_file_data=parsed_file_data,
344
+ async_job_key=async_job_key,
345
+ upload_destination=upload_destination,
288
346
  )
289
347
  api_request = APIRequest(
290
348
  method=complete_async_parse_t.ENDPOINT_METHOD,
291
349
  endpoint=complete_async_parse_t.ENDPOINT_PATH,
292
350
  args=args,
351
+ request_options=_request_options,
293
352
  )
294
353
  return self.do_request(api_request=api_request, return_type=complete_async_parse_t.Data)
295
354
 
@@ -298,6 +357,7 @@ class ClientMethods(ABC):
298
357
  *,
299
358
  async_job_id: base_t.ObjectId,
300
359
  file_id: base_t.ObjectId,
360
+ _request_options: client_config_t.RequestOptions | None = None,
301
361
  ) -> complete_async_upload_t.Data:
302
362
  """Processes an file id with a given async job id to be uploaded asynchronously
303
363
 
@@ -310,6 +370,7 @@ class ClientMethods(ABC):
310
370
  method=complete_async_upload_t.ENDPOINT_METHOD,
311
371
  endpoint=complete_async_upload_t.ENDPOINT_PATH,
312
372
  args=args,
373
+ request_options=_request_options,
313
374
  )
314
375
  return self.do_request(api_request=api_request, return_type=complete_async_upload_t.Data)
315
376
 
@@ -317,6 +378,7 @@ class ClientMethods(ABC):
317
378
  self,
318
379
  *,
319
380
  source_chemical_structures: list[convert_chemical_formats_t.ChemicalStructureFile],
381
+ _request_options: client_config_t.RequestOptions | None = None,
320
382
  ) -> convert_chemical_formats_t.Data:
321
383
  """Converts chemical formats, into the format used by Uncountable and usable in other APIs for eg. set_input_attribute_values
322
384
 
@@ -328,6 +390,7 @@ class ClientMethods(ABC):
328
390
  method=convert_chemical_formats_t.ENDPOINT_METHOD,
329
391
  endpoint=convert_chemical_formats_t.ENDPOINT_PATH,
330
392
  args=args,
393
+ request_options=_request_options,
331
394
  )
332
395
  return self.do_request(api_request=api_request, return_type=convert_chemical_formats_t.Data)
333
396
 
@@ -338,6 +401,7 @@ class ClientMethods(ABC):
338
401
  entities_to_create: list[create_entities_t.EntityToCreate],
339
402
  definition_id: base_t.ObjectId | None = None,
340
403
  definition_key: identifier_t.IdentifierKey | None = None,
404
+ _request_options: client_config_t.RequestOptions | None = None,
341
405
  ) -> create_entities_t.Data:
342
406
  """Creates new Uncountable entities
343
407
 
@@ -356,6 +420,7 @@ class ClientMethods(ABC):
356
420
  method=create_entities_t.ENDPOINT_METHOD,
357
421
  endpoint=create_entities_t.ENDPOINT_PATH,
358
422
  args=args,
423
+ request_options=_request_options,
359
424
  )
360
425
  return self.do_request(api_request=api_request, return_type=create_entities_t.Data)
361
426
 
@@ -367,6 +432,7 @@ class ClientMethods(ABC):
367
432
  definition_key: identifier_t.IdentifierKey | None = None,
368
433
  field_values: list[field_values_t.FieldRefNameValue] | None = None,
369
434
  parent_entity: entity_t.Entity | None = None,
435
+ _request_options: client_config_t.RequestOptions | None = None,
370
436
  ) -> create_entity_t.Data:
371
437
  """Creates a new Uncountable entity
372
438
 
@@ -386,6 +452,7 @@ class ClientMethods(ABC):
386
452
  method=create_entity_t.ENDPOINT_METHOD,
387
453
  endpoint=create_entity_t.ENDPOINT_PATH,
388
454
  args=args,
455
+ request_options=_request_options,
389
456
  )
390
457
  return self.do_request(api_request=api_request, return_type=create_entity_t.Data)
391
458
 
@@ -393,6 +460,7 @@ class ClientMethods(ABC):
393
460
  self,
394
461
  *,
395
462
  inputs_to_create: list[create_inputs_t.InputToCreate],
463
+ _request_options: client_config_t.RequestOptions | None = None,
396
464
  ) -> create_inputs_t.Data:
397
465
  """Creates new inputs
398
466
 
@@ -405,6 +473,7 @@ class ClientMethods(ABC):
405
473
  method=create_inputs_t.ENDPOINT_METHOD,
406
474
  endpoint=create_inputs_t.ENDPOINT_PATH,
407
475
  args=args,
476
+ request_options=_request_options,
408
477
  )
409
478
  return self.do_request(api_request=api_request, return_type=create_inputs_t.Data)
410
479
 
@@ -413,6 +482,7 @@ class ClientMethods(ABC):
413
482
  *,
414
483
  recipe_key: identifier_t.IdentifierKey,
415
484
  recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
485
+ _request_options: client_config_t.RequestOptions | None = None,
416
486
  ) -> create_mix_order_t.Data:
417
487
  """Creates mix order on a recipe workflow step
418
488
 
@@ -425,6 +495,7 @@ class ClientMethods(ABC):
425
495
  method=create_mix_order_t.ENDPOINT_METHOD,
426
496
  endpoint=create_mix_order_t.ENDPOINT_PATH,
427
497
  args=args,
498
+ request_options=_request_options,
428
499
  )
429
500
  return self.do_request(api_request=api_request, return_type=create_mix_order_t.Data)
430
501
 
@@ -436,6 +507,7 @@ class ClientMethods(ABC):
436
507
  field_values: list[field_values_t.FieldArgumentValue],
437
508
  entity_key: identifier_t.IdentifierKey | None = None,
438
509
  on_create_init_field_values: list[field_values_t.FieldArgumentValue] | None = None,
510
+ _request_options: client_config_t.RequestOptions | None = None,
439
511
  ) -> create_or_update_entity_t.Data:
440
512
  """Creates or updates field values for an entity
441
513
 
@@ -452,6 +524,7 @@ class ClientMethods(ABC):
452
524
  method=create_or_update_entity_t.ENDPOINT_METHOD,
453
525
  endpoint=create_or_update_entity_t.ENDPOINT_PATH,
454
526
  args=args,
527
+ request_options=_request_options,
455
528
  )
456
529
  return self.do_request(api_request=api_request, return_type=create_or_update_entity_t.Data)
457
530
 
@@ -466,6 +539,7 @@ class ClientMethods(ABC):
466
539
  recipe_metadata: list[recipe_metadata_t.MetadataValue] | None = None,
467
540
  identifiers: recipe_identifiers_t.RecipeIdentifiers | None = None,
468
541
  definition_key: identifier_t.IdentifierKey | None = None,
542
+ _request_options: client_config_t.RequestOptions | None = None,
469
543
  ) -> create_recipe_t.Data:
470
544
  """Returns the id of the recipe being created.
471
545
 
@@ -492,6 +566,7 @@ class ClientMethods(ABC):
492
566
  method=create_recipe_t.ENDPOINT_METHOD,
493
567
  endpoint=create_recipe_t.ENDPOINT_PATH,
494
568
  args=args,
569
+ request_options=_request_options,
495
570
  )
496
571
  return self.do_request(api_request=api_request, return_type=create_recipe_t.Data)
497
572
 
@@ -502,6 +577,7 @@ class ClientMethods(ABC):
502
577
  recipe_to_key: identifier_t.IdentifierKey,
503
578
  link_type: typing.Literal[recipe_links_t.RecipeLinkType.CHILD] | typing.Literal[recipe_links_t.RecipeLinkType.CONTROL] | typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK] | typing.Literal[recipe_links_t.RecipeLinkType.PREVIOUS_EXPERIMENT],
504
579
  name: str | None = None,
580
+ _request_options: client_config_t.RequestOptions | None = None,
505
581
  ) -> create_recipe_link_t.Data:
506
582
  """Create a link between two recipes. Skip if the link already exists
507
583
 
@@ -520,6 +596,7 @@ class ClientMethods(ABC):
520
596
  method=create_recipe_link_t.ENDPOINT_METHOD,
521
597
  endpoint=create_recipe_link_t.ENDPOINT_PATH,
522
598
  args=args,
599
+ request_options=_request_options,
523
600
  )
524
601
  return self.do_request(api_request=api_request, return_type=create_recipe_link_t.Data)
525
602
 
@@ -529,8 +606,9 @@ class ClientMethods(ABC):
529
606
  material_family_id: base_t.ObjectId,
530
607
  recipe_definitions: list[create_recipes_t.CreateRecipeDefinition],
531
608
  project_id: base_t.ObjectId | None = None,
609
+ _request_options: client_config_t.RequestOptions | None = None,
532
610
  ) -> create_recipes_t.Data:
533
- """Sets inputs values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
611
+ """Creates recipes in Uncountable, optionally with metadata values, and returns the resulting ids in corresponding order
534
612
 
535
613
  :param material_family_id: The identifier of the material family to create the recipes in
536
614
  :param project_id: The identifier of the project to create the recipes in
@@ -544,6 +622,7 @@ class ClientMethods(ABC):
544
622
  method=create_recipes_t.ENDPOINT_METHOD,
545
623
  endpoint=create_recipes_t.ENDPOINT_PATH,
546
624
  args=args,
625
+ request_options=_request_options,
547
626
  )
548
627
  return self.do_request(api_request=api_request, return_type=create_recipes_t.Data)
549
628
 
@@ -551,6 +630,7 @@ class ClientMethods(ABC):
551
630
  self,
552
631
  *,
553
632
  recipe_key: identifier_t.IdentifierKey,
633
+ _request_options: client_config_t.RequestOptions | None = None,
554
634
  ) -> disassociate_recipe_as_input_t.Data:
555
635
  """Remove any association between a recipe and ingredients
556
636
 
@@ -563,6 +643,7 @@ class ClientMethods(ABC):
563
643
  method=disassociate_recipe_as_input_t.ENDPOINT_METHOD,
564
644
  endpoint=disassociate_recipe_as_input_t.ENDPOINT_PATH,
565
645
  args=args,
646
+ request_options=_request_options,
566
647
  )
567
648
  return self.do_request(api_request=api_request, return_type=disassociate_recipe_as_input_t.Data)
568
649
 
@@ -572,6 +653,7 @@ class ClientMethods(ABC):
572
653
  recipe_key: identifier_t.IdentifierKey,
573
654
  recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
574
655
  edits: list[edit_recipe_inputs_t.RecipeInputEdit],
656
+ _request_options: client_config_t.RequestOptions | None = None,
575
657
  ) -> edit_recipe_inputs_t.Data:
576
658
  """Clear, update, or add inputs on a recipe
577
659
 
@@ -586,6 +668,7 @@ class ClientMethods(ABC):
586
668
  method=edit_recipe_inputs_t.ENDPOINT_METHOD,
587
669
  endpoint=edit_recipe_inputs_t.ENDPOINT_PATH,
588
670
  args=args,
671
+ request_options=_request_options,
589
672
  )
590
673
  return self.do_request(api_request=api_request, return_type=edit_recipe_inputs_t.Data)
591
674
 
@@ -593,6 +676,7 @@ class ClientMethods(ABC):
593
676
  self,
594
677
  *,
595
678
  requests: list[execute_batch_t.BatchRequest],
679
+ _request_options: client_config_t.RequestOptions | None = None,
596
680
  ) -> execute_batch_t.Data:
597
681
  """Run multiple API calls via one request
598
682
 
@@ -604,6 +688,7 @@ class ClientMethods(ABC):
604
688
  method=execute_batch_t.ENDPOINT_METHOD,
605
689
  endpoint=execute_batch_t.ENDPOINT_PATH,
606
690
  args=args,
691
+ request_options=_request_options,
607
692
  )
608
693
  return self.do_request(api_request=api_request, return_type=execute_batch_t.Data)
609
694
 
@@ -611,6 +696,7 @@ class ClientMethods(ABC):
611
696
  self,
612
697
  *,
613
698
  requests: list[async_batch_t.AsyncBatchRequest],
699
+ _request_options: client_config_t.RequestOptions | None = None,
614
700
  ) -> execute_batch_load_async_t.Data:
615
701
  """Run multiple API calls via one request
616
702
 
@@ -622,6 +708,7 @@ class ClientMethods(ABC):
622
708
  method=execute_batch_load_async_t.ENDPOINT_METHOD,
623
709
  endpoint=execute_batch_load_async_t.ENDPOINT_PATH,
624
710
  args=args,
711
+ request_options=_request_options,
625
712
  )
626
713
  return self.do_request(api_request=api_request, return_type=execute_batch_load_async_t.Data)
627
714
 
@@ -633,6 +720,7 @@ class ClientMethods(ABC):
633
720
  client_timezone: exports_t.ListingExportUserTimezone | None = None,
634
721
  limit: int | None = None,
635
722
  attributes: list[export_entities_t.ListingAttribute] | None = None,
723
+ _request_options: client_config_t.RequestOptions | None = None,
636
724
  ) -> export_entities_t.Data:
637
725
  """Uses a structured loading configuration to export entities in the system. This endpoint is asynchronous, and returns the job ID that can be used to query the status of the export.
638
726
 
@@ -650,14 +738,49 @@ class ClientMethods(ABC):
650
738
  method=export_entities_t.ENDPOINT_METHOD,
651
739
  endpoint=export_entities_t.ENDPOINT_PATH,
652
740
  args=args,
741
+ request_options=_request_options,
653
742
  )
654
743
  return self.do_request(api_request=api_request, return_type=export_entities_t.Data)
655
744
 
745
+ def fetch_listing(
746
+ self,
747
+ *,
748
+ entity_type: entity_t.EntityType,
749
+ columns: list[listing_t.ColumnIdentifier],
750
+ filters: listing_t.FilterNode | None = None,
751
+ limit: int | None = None,
752
+ offset: int | None = None,
753
+ _request_options: client_config_t.RequestOptions | None = None,
754
+ ) -> fetch_listing_t.Data:
755
+ """External API for fetching a listing based on some structured columns and filters
756
+
757
+ :param entity_type: The entity type to fetch listing entries for
758
+ :param columns: The columns to include in the results
759
+ :param filters: Structured filters to apply to the listing, represented by a FilterNode object
760
+ :param limit: The number of entries to return. If not provided, defaults to 100. Note a maximum of 100 entries can be returned.
761
+ :param offset: The number of entries to skip for pagination
762
+ """
763
+ args = fetch_listing_t.Arguments(
764
+ entity_type=entity_type,
765
+ columns=columns,
766
+ filters=filters,
767
+ limit=limit,
768
+ offset=offset,
769
+ )
770
+ api_request = APIRequest(
771
+ method=fetch_listing_t.ENDPOINT_METHOD,
772
+ endpoint=fetch_listing_t.ENDPOINT_PATH,
773
+ args=args,
774
+ request_options=_request_options,
775
+ )
776
+ return self.do_request(api_request=api_request, return_type=fetch_listing_t.Data)
777
+
656
778
  def get_column_calculation_values(
657
779
  self,
658
780
  *,
659
781
  recipe_keys: list[identifier_t.IdentifierKey],
660
782
  calculation_key: identifier_t.IdentifierKey,
783
+ _request_options: client_config_t.RequestOptions | None = None,
661
784
  ) -> get_column_calculation_values_t.Data:
662
785
  """Get the values for a column calculations for recipes
663
786
 
@@ -672,17 +795,24 @@ class ClientMethods(ABC):
672
795
  method=get_column_calculation_values_t.ENDPOINT_METHOD,
673
796
  endpoint=get_column_calculation_values_t.ENDPOINT_PATH,
674
797
  args=args,
798
+ request_options=_request_options,
675
799
  )
676
800
  return self.do_request(api_request=api_request, return_type=get_column_calculation_values_t.Data)
677
801
 
678
802
  def get_current_user_info(
679
803
  self,
804
+ *,
805
+ _request_options: client_config_t.RequestOptions | None = None,
680
806
  ) -> get_current_user_info_t.Data:
807
+ """Return information about the current user
808
+
809
+ """
681
810
  args = get_current_user_info_t.Arguments()
682
811
  api_request = APIRequest(
683
812
  method=get_current_user_info_t.ENDPOINT_METHOD,
684
813
  endpoint=get_current_user_info_t.ENDPOINT_PATH,
685
814
  args=args,
815
+ request_options=_request_options,
686
816
  )
687
817
  return self.do_request(api_request=api_request, return_type=get_current_user_info_t.Data)
688
818
 
@@ -691,6 +821,7 @@ class ClientMethods(ABC):
691
821
  *,
692
822
  recipe_output_id: base_t.ObjectId | None = None,
693
823
  recipe_input_id: base_t.ObjectId | None = None,
824
+ _request_options: client_config_t.RequestOptions | None = None,
694
825
  ) -> get_curve_t.Data:
695
826
  """Returns an array of values for the specified curve id.
696
827
 
@@ -705,6 +836,7 @@ class ClientMethods(ABC):
705
836
  method=get_curve_t.ENDPOINT_METHOD,
706
837
  endpoint=get_curve_t.ENDPOINT_PATH,
707
838
  args=args,
839
+ request_options=_request_options,
708
840
  )
709
841
  return self.do_request(api_request=api_request, return_type=get_curve_t.Data)
710
842
 
@@ -713,6 +845,7 @@ class ClientMethods(ABC):
713
845
  *,
714
846
  entity_ids: list[base_t.ObjectId],
715
847
  entity_type: entity_t.EntityType,
848
+ _request_options: client_config_t.RequestOptions | None = None,
716
849
  ) -> get_entities_data_t.Data:
717
850
  """Gets the details for a passed entity
718
851
 
@@ -727,6 +860,7 @@ class ClientMethods(ABC):
727
860
  method=get_entities_data_t.ENDPOINT_METHOD,
728
861
  endpoint=get_entities_data_t.ENDPOINT_PATH,
729
862
  args=args,
863
+ request_options=_request_options,
730
864
  )
731
865
  return self.do_request(api_request=api_request, return_type=get_entities_data_t.Data)
732
866
 
@@ -738,6 +872,7 @@ class ClientMethods(ABC):
738
872
  is_parameter: bool | None,
739
873
  offset: int | None = None,
740
874
  limit: int | None = None,
875
+ _request_options: client_config_t.RequestOptions | None = None,
741
876
  ) -> get_input_data_t.Data:
742
877
  """Gets the attribute, categorization and other metadata associated with a set of inputs. An input is either an ingredient or process parameter, with metadata and calculations assigned separately
743
878
 
@@ -758,6 +893,7 @@ class ClientMethods(ABC):
758
893
  method=get_input_data_t.ENDPOINT_METHOD,
759
894
  endpoint=get_input_data_t.ENDPOINT_PATH,
760
895
  args=args,
896
+ request_options=_request_options,
761
897
  )
762
898
  return self.do_request(api_request=api_request, return_type=get_input_data_t.Data)
763
899
 
@@ -765,6 +901,7 @@ class ClientMethods(ABC):
765
901
  self,
766
902
  *,
767
903
  material_family_id: base_t.ObjectId,
904
+ _request_options: client_config_t.RequestOptions | None = None,
768
905
  ) -> get_input_group_names_t.Data:
769
906
  """Gets the name of all input groups in a material family that either the user created, or are shared to all users.
770
907
 
@@ -777,6 +914,7 @@ class ClientMethods(ABC):
777
914
  method=get_input_group_names_t.ENDPOINT_METHOD,
778
915
  endpoint=get_input_group_names_t.ENDPOINT_PATH,
779
916
  args=args,
917
+ request_options=_request_options,
780
918
  )
781
919
  return self.do_request(api_request=api_request, return_type=get_input_group_names_t.Data)
782
920
 
@@ -787,6 +925,7 @@ class ClientMethods(ABC):
787
925
  is_parameter: bool | None,
788
926
  offset: int | None = None,
789
927
  limit: int | None = None,
928
+ _request_options: client_config_t.RequestOptions | None = None,
790
929
  ) -> get_input_names_t.Data:
791
930
  """Gets the name of all inputs for a material family. An input is either an ingredient or process parameter, with metadata and calculations assigned separately
792
931
 
@@ -805,6 +944,7 @@ class ClientMethods(ABC):
805
944
  method=get_input_names_t.ENDPOINT_METHOD,
806
945
  endpoint=get_input_names_t.ENDPOINT_PATH,
807
946
  args=args,
947
+ request_options=_request_options,
808
948
  )
809
949
  return self.do_request(api_request=api_request, return_type=get_input_names_t.Data)
810
950
 
@@ -812,6 +952,7 @@ class ClientMethods(ABC):
812
952
  self,
813
953
  *,
814
954
  input_ids: list[base_t.ObjectId],
955
+ _request_options: client_config_t.RequestOptions | None = None,
815
956
  ) -> get_inputs_data_t.Data:
816
957
  """Gets the details for passed input ids
817
958
 
@@ -824,6 +965,7 @@ class ClientMethods(ABC):
824
965
  method=get_inputs_data_t.ENDPOINT_METHOD,
825
966
  endpoint=get_inputs_data_t.ENDPOINT_PATH,
826
967
  args=args,
968
+ request_options=_request_options,
827
969
  )
828
970
  return self.do_request(api_request=api_request, return_type=get_inputs_data_t.Data)
829
971
 
@@ -834,6 +976,7 @@ class ClientMethods(ABC):
834
976
  output_ids: list[base_t.ObjectId] | None = None,
835
977
  offset: int | None = None,
836
978
  limit: int | None = None,
979
+ _request_options: client_config_t.RequestOptions | None = None,
837
980
  ) -> get_output_data_t.Data:
838
981
  """Gets the attribute, categorization and other metadata associated with a set of outputs
839
982
 
@@ -852,6 +995,7 @@ class ClientMethods(ABC):
852
995
  method=get_output_data_t.ENDPOINT_METHOD,
853
996
  endpoint=get_output_data_t.ENDPOINT_PATH,
854
997
  args=args,
998
+ request_options=_request_options,
855
999
  )
856
1000
  return self.do_request(api_request=api_request, return_type=get_output_data_t.Data)
857
1001
 
@@ -861,6 +1005,7 @@ class ClientMethods(ABC):
861
1005
  material_family_id: base_t.ObjectId,
862
1006
  offset: int | None = None,
863
1007
  limit: int | None = None,
1008
+ _request_options: client_config_t.RequestOptions | None = None,
864
1009
  ) -> get_output_names_t.Data:
865
1010
  """Gets the name of all outputs for a material family. An output represents a measurement value of any time (numeric, text, curve, etc). This includes calculations based off of other outputs, such as a calculated change over time
866
1011
 
@@ -877,14 +1022,36 @@ class ClientMethods(ABC):
877
1022
  method=get_output_names_t.ENDPOINT_METHOD,
878
1023
  endpoint=get_output_names_t.ENDPOINT_PATH,
879
1024
  args=args,
1025
+ request_options=_request_options,
880
1026
  )
881
1027
  return self.do_request(api_request=api_request, return_type=get_output_names_t.Data)
882
1028
 
1029
+ def get_output_organization(
1030
+ self,
1031
+ *,
1032
+ request: get_output_organization_t.OutputOrganizationRequest,
1033
+ _request_options: client_config_t.RequestOptions | None = None,
1034
+ ) -> get_output_organization_t.Data:
1035
+ """Returns the output organization for the specified material family, project, or user
1036
+
1037
+ """
1038
+ args = get_output_organization_t.Arguments(
1039
+ request=request,
1040
+ )
1041
+ api_request = APIRequest(
1042
+ method=get_output_organization_t.ENDPOINT_METHOD,
1043
+ endpoint=get_output_organization_t.ENDPOINT_PATH,
1044
+ args=args,
1045
+ request_options=_request_options,
1046
+ )
1047
+ return self.do_request(api_request=api_request, return_type=get_output_organization_t.Data)
1048
+
883
1049
  def get_projects(
884
1050
  self,
885
1051
  *,
886
1052
  all_material_families: bool,
887
1053
  material_family_id: base_t.ObjectId | None,
1054
+ _request_options: client_config_t.RequestOptions | None = None,
888
1055
  ) -> get_projects_t.Data:
889
1056
  """Gets either all projects created in the platform, or the projects associated with a material family ID. Projects are where experiments are placed in Uncountable, similar to folders in a directory structure
890
1057
 
@@ -899,6 +1066,7 @@ class ClientMethods(ABC):
899
1066
  method=get_projects_t.ENDPOINT_METHOD,
900
1067
  endpoint=get_projects_t.ENDPOINT_PATH,
901
1068
  args=args,
1069
+ request_options=_request_options,
902
1070
  )
903
1071
  return self.do_request(api_request=api_request, return_type=get_projects_t.Data)
904
1072
 
@@ -908,6 +1076,7 @@ class ClientMethods(ABC):
908
1076
  project_ids: list[base_t.ObjectId],
909
1077
  offset: int | None = None,
910
1078
  limit: int | None = None,
1079
+ _request_options: client_config_t.RequestOptions | None = None,
911
1080
  ) -> get_projects_data_t.Data:
912
1081
  """Gets either all data associated with a set of projects created in the platform. Because Uncountables recipe structure is complex, various data values are exploded out to increase efficiency in parsing, and this page is paginated to prevent too large of return values
913
1082
 
@@ -924,6 +1093,7 @@ class ClientMethods(ABC):
924
1093
  method=get_projects_data_t.ENDPOINT_METHOD,
925
1094
  endpoint=get_projects_data_t.ENDPOINT_PATH,
926
1095
  args=args,
1096
+ request_options=_request_options,
927
1097
  )
928
1098
  return self.do_request(api_request=api_request, return_type=get_projects_data_t.Data)
929
1099
 
@@ -932,6 +1102,7 @@ class ClientMethods(ABC):
932
1102
  *,
933
1103
  recipe_ids: list[base_t.ObjectId],
934
1104
  calculation_ids: list[base_t.ObjectId] | None = None,
1105
+ _request_options: client_config_t.RequestOptions | None = None,
935
1106
  ) -> get_recipe_calculations_t.Data:
936
1107
  """Gets the calculations for the passed recipes
937
1108
 
@@ -946,6 +1117,7 @@ class ClientMethods(ABC):
946
1117
  method=get_recipe_calculations_t.ENDPOINT_METHOD,
947
1118
  endpoint=get_recipe_calculations_t.ENDPOINT_PATH,
948
1119
  args=args,
1120
+ request_options=_request_options,
949
1121
  )
950
1122
  return self.do_request(api_request=api_request, return_type=get_recipe_calculations_t.Data)
951
1123
 
@@ -955,6 +1127,7 @@ class ClientMethods(ABC):
955
1127
  recipe_ids: list[base_t.ObjectId],
956
1128
  depth: int = 1,
957
1129
  link_types: list[recipe_links_t.RecipeLinkType] | None,
1130
+ _request_options: client_config_t.RequestOptions | None = None,
958
1131
  ) -> get_recipe_links_t.Data:
959
1132
  """Gets the links for the passed recipes
960
1133
 
@@ -971,6 +1144,7 @@ class ClientMethods(ABC):
971
1144
  method=get_recipe_links_t.ENDPOINT_METHOD,
972
1145
  endpoint=get_recipe_links_t.ENDPOINT_PATH,
973
1146
  args=args,
1147
+ request_options=_request_options,
974
1148
  )
975
1149
  return self.do_request(api_request=api_request, return_type=get_recipe_links_t.Data)
976
1150
 
@@ -981,6 +1155,7 @@ class ClientMethods(ABC):
981
1155
  recipe_metadata_ids: list[base_t.ObjectId] | None,
982
1156
  offset: int | None = None,
983
1157
  limit: int | None = None,
1158
+ _request_options: client_config_t.RequestOptions | None = None,
984
1159
  ) -> get_recipe_metadata_data_t.Data:
985
1160
  """Gets the recipe metadata. Recipe metadata is data associated with experiments that is not an input, output or calculation, such as a sample ID.
986
1161
 
@@ -999,6 +1174,7 @@ class ClientMethods(ABC):
999
1174
  method=get_recipe_metadata_data_t.ENDPOINT_METHOD,
1000
1175
  endpoint=get_recipe_metadata_data_t.ENDPOINT_PATH,
1001
1176
  args=args,
1177
+ request_options=_request_options,
1002
1178
  )
1003
1179
  return self.do_request(api_request=api_request, return_type=get_recipe_metadata_data_t.Data)
1004
1180
 
@@ -1006,6 +1182,7 @@ class ClientMethods(ABC):
1006
1182
  self,
1007
1183
  *,
1008
1184
  project_id: base_t.ObjectId,
1185
+ _request_options: client_config_t.RequestOptions | None = None,
1009
1186
  ) -> get_recipe_names_t.Data:
1010
1187
  """Gets the name of all recipes (or experiments, used as synonyms by Uncountable) for a project. The call external_get_projects can be used to find projects
1011
1188
 
@@ -1018,6 +1195,7 @@ class ClientMethods(ABC):
1018
1195
  method=get_recipe_names_t.ENDPOINT_METHOD,
1019
1196
  endpoint=get_recipe_names_t.ENDPOINT_PATH,
1020
1197
  args=args,
1198
+ request_options=_request_options,
1021
1199
  )
1022
1200
  return self.do_request(api_request=api_request, return_type=get_recipe_names_t.Data)
1023
1201
 
@@ -1025,6 +1203,7 @@ class ClientMethods(ABC):
1025
1203
  self,
1026
1204
  *,
1027
1205
  recipe_output_ids: list[base_t.ObjectId],
1206
+ _request_options: client_config_t.RequestOptions | None = None,
1028
1207
  ) -> get_recipe_output_metadata_t.Data:
1029
1208
  """Gets the metadata values for the passed recipe outputs
1030
1209
 
@@ -1037,6 +1216,7 @@ class ClientMethods(ABC):
1037
1216
  method=get_recipe_output_metadata_t.ENDPOINT_METHOD,
1038
1217
  endpoint=get_recipe_output_metadata_t.ENDPOINT_PATH,
1039
1218
  args=args,
1219
+ request_options=_request_options,
1040
1220
  )
1041
1221
  return self.do_request(api_request=api_request, return_type=get_recipe_output_metadata_t.Data)
1042
1222
 
@@ -1047,6 +1227,8 @@ class ClientMethods(ABC):
1047
1227
  project_id: base_t.ObjectId | None = None,
1048
1228
  offset: int | None = None,
1049
1229
  limit: int | None = None,
1230
+ empty_output_behavior: get_recipes_data_t.RecipeOutputInclusion | None = None,
1231
+ _request_options: client_config_t.RequestOptions | None = None,
1050
1232
  ) -> get_recipes_data_t.Data:
1051
1233
  """Gets all data associated with a set of recipes. Because Uncountables recipe structure is complex, various data values are exploded out to increase efficiency in parsing, and this page is paginated to prevent too large of return values
1052
1234
 
@@ -1054,17 +1236,20 @@ class ClientMethods(ABC):
1054
1236
  :param project_id: The projects to get the data from. Either these or recipe_ids must be filled in
1055
1237
  :param offset: Used for pagination. All pagination is done in order of Recipe ID. [Pagination More Info](#pagination)
1056
1238
  :param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
1239
+ :param empty_output_behavior: Recipe output inclusion behavior for empty outputs. Empty recipe outputs are outputs added to the experiment that do not have a value associated with them.
1057
1240
  """
1058
1241
  args = get_recipes_data_t.Arguments(
1059
1242
  recipe_ids=recipe_ids,
1060
1243
  project_id=project_id,
1061
1244
  offset=offset,
1062
1245
  limit=limit,
1246
+ empty_output_behavior=empty_output_behavior,
1063
1247
  )
1064
1248
  api_request = APIRequest(
1065
1249
  method=get_recipes_data_t.ENDPOINT_METHOD,
1066
1250
  endpoint=get_recipes_data_t.ENDPOINT_PATH,
1067
1251
  args=args,
1252
+ request_options=_request_options,
1068
1253
  )
1069
1254
  return self.do_request(api_request=api_request, return_type=get_recipes_data_t.Data)
1070
1255
 
@@ -1077,6 +1262,7 @@ class ClientMethods(ABC):
1077
1262
  user_keys: list[identifier_t.IdentifierKey] | None = None,
1078
1263
  user_group_keys: list[identifier_t.IdentifierKey] | None = None,
1079
1264
  all_users: bool | None = None,
1265
+ _request_options: client_config_t.RequestOptions | None = None,
1080
1266
  ) -> grant_entity_permissions_t.Data:
1081
1267
  """Grant entity permissions to a list of users or user groups or to all users.
1082
1268
 
@@ -1093,6 +1279,7 @@ class ClientMethods(ABC):
1093
1279
  method=grant_entity_permissions_t.ENDPOINT_METHOD,
1094
1280
  endpoint=grant_entity_permissions_t.ENDPOINT_PATH,
1095
1281
  args=args,
1282
+ request_options=_request_options,
1096
1283
  )
1097
1284
  return self.do_request(api_request=api_request, return_type=grant_entity_permissions_t.Data)
1098
1285
 
@@ -1103,6 +1290,7 @@ class ClientMethods(ABC):
1103
1290
  destination: generic_upload_t.UploadDestination,
1104
1291
  file_id: base_t.ObjectId | None = None,
1105
1292
  file_ids: list[base_t.ObjectId] | None = None,
1293
+ _request_options: client_config_t.RequestOptions | None = None,
1106
1294
  ) -> invoke_uploader_t.Data:
1107
1295
  """Runs a file through an uploader.
1108
1296
 
@@ -1118,9 +1306,40 @@ class ClientMethods(ABC):
1118
1306
  method=invoke_uploader_t.ENDPOINT_METHOD,
1119
1307
  endpoint=invoke_uploader_t.ENDPOINT_PATH,
1120
1308
  args=args,
1309
+ request_options=_request_options,
1121
1310
  )
1122
1311
  return self.do_request(api_request=api_request, return_type=invoke_uploader_t.Data)
1123
1312
 
1313
+ def list_aggregate(
1314
+ self,
1315
+ *,
1316
+ config_reference: str,
1317
+ attribute_values: list[list_aggregate_t.AttributeValue] | None = None,
1318
+ offset: int | None = None,
1319
+ limit: int | None = None,
1320
+ _request_options: client_config_t.RequestOptions | None = None,
1321
+ ) -> list_aggregate_t.Data:
1322
+ """Uses a structured loading configuration to list aggregated data from the platform
1323
+
1324
+ :param config_reference: The configuration reference name for the listing config
1325
+ :param attribute_values: Attributes to pass to the configuration for parameterizing filters
1326
+ :param offset: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
1327
+ :param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
1328
+ """
1329
+ args = list_aggregate_t.Arguments(
1330
+ config_reference=config_reference,
1331
+ attribute_values=attribute_values,
1332
+ offset=offset,
1333
+ limit=limit,
1334
+ )
1335
+ api_request = APIRequest(
1336
+ method=list_aggregate_t.ENDPOINT_METHOD,
1337
+ endpoint=list_aggregate_t.ENDPOINT_PATH,
1338
+ args=args,
1339
+ request_options=_request_options,
1340
+ )
1341
+ return self.do_request(api_request=api_request, return_type=list_aggregate_t.Data)
1342
+
1124
1343
  def list_entities(
1125
1344
  self,
1126
1345
  *,
@@ -1129,6 +1348,8 @@ class ClientMethods(ABC):
1129
1348
  attributes: dict[OpaqueKey, base_t.JsonValue] | None = None,
1130
1349
  offset: int | None = None,
1131
1350
  limit: int | None = None,
1351
+ additional_filter_configs: list[list_entities_t.AdditionalFilterConfig] | None = None,
1352
+ _request_options: client_config_t.RequestOptions | None = None,
1132
1353
  ) -> list_entities_t.Data:
1133
1354
  """Uses a structured loading configuration to list entities in the system
1134
1355
 
@@ -1137,6 +1358,7 @@ class ClientMethods(ABC):
1137
1358
  :param attributes: Attributes to pass to the configuration for parameterizing filters
1138
1359
  :param offset: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
1139
1360
  :param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
1361
+ :param additional_filter_configs: Advanced property: Additional filter configurations to apply to the listing. A maximum of 10 additional filter configs are supported.
1140
1362
  """
1141
1363
  args = list_entities_t.Arguments(
1142
1364
  entity_type=entity_type,
@@ -1144,11 +1366,13 @@ class ClientMethods(ABC):
1144
1366
  attributes=attributes,
1145
1367
  offset=offset,
1146
1368
  limit=limit,
1369
+ additional_filter_configs=additional_filter_configs,
1147
1370
  )
1148
1371
  api_request = APIRequest(
1149
1372
  method=list_entities_t.ENDPOINT_METHOD,
1150
1373
  endpoint=list_entities_t.ENDPOINT_PATH,
1151
1374
  args=args,
1375
+ request_options=_request_options,
1152
1376
  )
1153
1377
  return self.do_request(api_request=api_request, return_type=list_entities_t.Data)
1154
1378
 
@@ -1159,6 +1383,7 @@ class ClientMethods(ABC):
1159
1383
  search_label: str,
1160
1384
  offset: int | None = None,
1161
1385
  limit: int | None = None,
1386
+ _request_options: client_config_t.RequestOptions | None = None,
1162
1387
  ) -> list_id_source_t.Data:
1163
1388
  """Lists id and label pairs
1164
1389
 
@@ -1177,6 +1402,7 @@ class ClientMethods(ABC):
1177
1402
  method=list_id_source_t.ENDPOINT_METHOD,
1178
1403
  endpoint=list_id_source_t.ENDPOINT_PATH,
1179
1404
  args=args,
1405
+ request_options=_request_options,
1180
1406
  )
1181
1407
  return self.do_request(api_request=api_request, return_type=list_id_source_t.Data)
1182
1408
 
@@ -1186,6 +1412,7 @@ class ClientMethods(ABC):
1186
1412
  entity_key: identifier_t.IdentifierKey,
1187
1413
  entity_type: entity_t.EntityType,
1188
1414
  globally_removable: bool | None = None,
1415
+ _request_options: client_config_t.RequestOptions | None = None,
1189
1416
  ) -> lock_entity_t.Data:
1190
1417
  """Lock an entity
1191
1418
 
@@ -1201,6 +1428,7 @@ class ClientMethods(ABC):
1201
1428
  method=lock_entity_t.ENDPOINT_METHOD,
1202
1429
  endpoint=lock_entity_t.ENDPOINT_PATH,
1203
1430
  args=args,
1431
+ request_options=_request_options,
1204
1432
  )
1205
1433
  return self.do_request(api_request=api_request, return_type=lock_entity_t.Data)
1206
1434
 
@@ -1212,6 +1440,7 @@ class ClientMethods(ABC):
1212
1440
  globally_removable: bool,
1213
1441
  lock_samples: bool | None = None,
1214
1442
  comments: str | None = None,
1443
+ _request_options: client_config_t.RequestOptions | None = None,
1215
1444
  ) -> lock_recipes_t.Data:
1216
1445
  """Lock experiments. Experiments will require unlocking to be editable. Edits to the experiments are blocked while they are locked.
1217
1446
 
@@ -1235,6 +1464,7 @@ class ClientMethods(ABC):
1235
1464
  method=lock_recipes_t.ENDPOINT_METHOD,
1236
1465
  endpoint=lock_recipes_t.ENDPOINT_PATH,
1237
1466
  args=args,
1467
+ request_options=_request_options,
1238
1468
  )
1239
1469
  return self.do_request(api_request=api_request, return_type=lock_recipes_t.Data)
1240
1470
 
@@ -1243,6 +1473,7 @@ class ClientMethods(ABC):
1243
1473
  *,
1244
1474
  entity_type: entity_t.EntityType,
1245
1475
  query: lookup_entity_t.LookupEntityQuery,
1476
+ _request_options: client_config_t.RequestOptions | None = None,
1246
1477
  ) -> lookup_entity_t.Data:
1247
1478
  """Look up an entity based on an identifier or field values
1248
1479
 
@@ -1255,6 +1486,7 @@ class ClientMethods(ABC):
1255
1486
  method=lookup_entity_t.ENDPOINT_METHOD,
1256
1487
  endpoint=lookup_entity_t.ENDPOINT_PATH,
1257
1488
  args=args,
1489
+ request_options=_request_options,
1258
1490
  )
1259
1491
  return self.do_request(api_request=api_request, return_type=lookup_entity_t.Data)
1260
1492
 
@@ -1263,6 +1495,7 @@ class ClientMethods(ABC):
1263
1495
  *,
1264
1496
  spec: id_source_t.IdSourceSpec,
1265
1497
  names: list[str],
1498
+ _request_options: client_config_t.RequestOptions | None = None,
1266
1499
  ) -> match_id_source_t.Data:
1267
1500
  """Lists id and label pairs
1268
1501
 
@@ -1277,6 +1510,7 @@ class ClientMethods(ABC):
1277
1510
  method=match_id_source_t.ENDPOINT_METHOD,
1278
1511
  endpoint=match_id_source_t.ENDPOINT_PATH,
1279
1512
  args=args,
1513
+ request_options=_request_options,
1280
1514
  )
1281
1515
  return self.do_request(api_request=api_request, return_type=match_id_source_t.Data)
1282
1516
 
@@ -1288,6 +1522,8 @@ class ClientMethods(ABC):
1288
1522
  message: str,
1289
1523
  display_notice: bool = False,
1290
1524
  entity: entity_t.EntityIdentifier | None = None,
1525
+ notice_configuration: notices_t.NotificationNoticeConfiguration | None = None,
1526
+ _request_options: client_config_t.RequestOptions | None = None,
1291
1527
  ) -> push_notification_t.Data:
1292
1528
  """Push a notification to a user or user group
1293
1529
 
@@ -1298,19 +1534,42 @@ class ClientMethods(ABC):
1298
1534
  message=message,
1299
1535
  entity=entity,
1300
1536
  display_notice=display_notice,
1537
+ notice_configuration=notice_configuration,
1301
1538
  )
1302
1539
  api_request = APIRequest(
1303
1540
  method=push_notification_t.ENDPOINT_METHOD,
1304
1541
  endpoint=push_notification_t.ENDPOINT_PATH,
1305
1542
  args=args,
1543
+ request_options=_request_options,
1306
1544
  )
1307
1545
  return self.do_request(api_request=api_request, return_type=push_notification_t.Data)
1308
1546
 
1547
+ def register_sockets_token(
1548
+ self,
1549
+ *,
1550
+ socket_request: sockets_t.SocketTokenRequest,
1551
+ _request_options: client_config_t.RequestOptions | None = None,
1552
+ ) -> register_sockets_token_t.Data:
1553
+ """Request token for connecting to sockets server
1554
+
1555
+ """
1556
+ args = register_sockets_token_t.Arguments(
1557
+ socket_request=socket_request,
1558
+ )
1559
+ api_request = APIRequest(
1560
+ method=register_sockets_token_t.ENDPOINT_METHOD,
1561
+ endpoint=register_sockets_token_t.ENDPOINT_PATH,
1562
+ args=args,
1563
+ request_options=_request_options,
1564
+ )
1565
+ return self.do_request(api_request=api_request, return_type=register_sockets_token_t.Data)
1566
+
1309
1567
  def remove_recipe_from_project(
1310
1568
  self,
1311
1569
  *,
1312
1570
  recipe_key: identifier_t.IdentifierKey,
1313
1571
  project_key: identifier_t.IdentifierKey,
1572
+ _request_options: client_config_t.RequestOptions | None = None,
1314
1573
  ) -> remove_recipe_from_project_t.Data:
1315
1574
  """Removes a recipe from a project
1316
1575
 
@@ -1325,6 +1584,7 @@ class ClientMethods(ABC):
1325
1584
  method=remove_recipe_from_project_t.ENDPOINT_METHOD,
1326
1585
  endpoint=remove_recipe_from_project_t.ENDPOINT_PATH,
1327
1586
  args=args,
1587
+ request_options=_request_options,
1328
1588
  )
1329
1589
  return self.do_request(api_request=api_request, return_type=remove_recipe_from_project_t.Data)
1330
1590
 
@@ -1334,6 +1594,7 @@ class ClientMethods(ABC):
1334
1594
  recipe_from_key: identifier_t.IdentifierKey,
1335
1595
  recipe_to_key: identifier_t.IdentifierKey,
1336
1596
  link_type: typing.Literal[recipe_links_t.RecipeLinkType.CHILD] | typing.Literal[recipe_links_t.RecipeLinkType.CONTROL] | typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK] | typing.Literal[recipe_links_t.RecipeLinkType.PREVIOUS_EXPERIMENT],
1597
+ _request_options: client_config_t.RequestOptions | None = None,
1337
1598
  ) -> remove_recipe_link_t.Data:
1338
1599
  """Remove a link between two recipes. Skip if the link doesn't already exist
1339
1600
 
@@ -1350,6 +1611,7 @@ class ClientMethods(ABC):
1350
1611
  method=remove_recipe_link_t.ENDPOINT_METHOD,
1351
1612
  endpoint=remove_recipe_link_t.ENDPOINT_PATH,
1352
1613
  args=args,
1614
+ request_options=_request_options,
1353
1615
  )
1354
1616
  return self.do_request(api_request=api_request, return_type=remove_recipe_link_t.Data)
1355
1617
 
@@ -1358,6 +1620,7 @@ class ClientMethods(ABC):
1358
1620
  *,
1359
1621
  entity_ids: list[str | base_t.ObjectId],
1360
1622
  entity_type: entity_t.EntityType,
1623
+ _request_options: client_config_t.RequestOptions | None = None,
1361
1624
  ) -> resolve_entity_ids_t.Data:
1362
1625
  """Gets the names for passed in ids
1363
1626
 
@@ -1372,6 +1635,7 @@ class ClientMethods(ABC):
1372
1635
  method=resolve_entity_ids_t.ENDPOINT_METHOD,
1373
1636
  endpoint=resolve_entity_ids_t.ENDPOINT_PATH,
1374
1637
  args=args,
1638
+ request_options=_request_options,
1375
1639
  )
1376
1640
  return self.do_request(api_request=api_request, return_type=resolve_entity_ids_t.Data)
1377
1641
 
@@ -1379,6 +1643,7 @@ class ClientMethods(ABC):
1379
1643
  self,
1380
1644
  *,
1381
1645
  requested_conditions: list[resolve_output_conditions_t.ConditionRequest],
1646
+ _request_options: client_config_t.RequestOptions | None = None,
1382
1647
  ) -> resolve_output_conditions_t.Data:
1383
1648
  """For the provided set of condition parameter id and values, returns the existing or newly created output condition id for that value and id pair.
1384
1649
 
@@ -1390,6 +1655,7 @@ class ClientMethods(ABC):
1390
1655
  method=resolve_output_conditions_t.ENDPOINT_METHOD,
1391
1656
  endpoint=resolve_output_conditions_t.ENDPOINT_PATH,
1392
1657
  args=args,
1658
+ request_options=_request_options,
1393
1659
  )
1394
1660
  return self.do_request(api_request=api_request, return_type=resolve_output_conditions_t.Data)
1395
1661
 
@@ -1398,6 +1664,7 @@ class ClientMethods(ABC):
1398
1664
  *,
1399
1665
  trigger_ref_name: str,
1400
1666
  entity: entity_t.Entity | None = None,
1667
+ _request_options: client_config_t.RequestOptions | None = None,
1401
1668
  ) -> run_trigger_t.Data:
1402
1669
  """Runs a trigger. Requires admin access
1403
1670
 
@@ -1410,9 +1677,32 @@ class ClientMethods(ABC):
1410
1677
  method=run_trigger_t.ENDPOINT_METHOD,
1411
1678
  endpoint=run_trigger_t.ENDPOINT_PATH,
1412
1679
  args=args,
1680
+ request_options=_request_options,
1413
1681
  )
1414
1682
  return self.do_request(api_request=api_request, return_type=run_trigger_t.Data)
1415
1683
 
1684
+ def set_barcode(
1685
+ self,
1686
+ *,
1687
+ entity_key: entity_t.EntityIdentifier,
1688
+ barcode_value: str,
1689
+ _request_options: client_config_t.RequestOptions | None = None,
1690
+ ) -> set_barcode_t.Data:
1691
+ """Sets the barcode for an entity
1692
+
1693
+ """
1694
+ args = set_barcode_t.Arguments(
1695
+ entity_key=entity_key,
1696
+ barcode_value=barcode_value,
1697
+ )
1698
+ api_request = APIRequest(
1699
+ method=set_barcode_t.ENDPOINT_METHOD,
1700
+ endpoint=set_barcode_t.ENDPOINT_PATH,
1701
+ args=args,
1702
+ request_options=_request_options,
1703
+ )
1704
+ return self.do_request(api_request=api_request, return_type=set_barcode_t.Data)
1705
+
1416
1706
  def set_core_permissions(
1417
1707
  self,
1418
1708
  *,
@@ -1421,6 +1711,7 @@ class ClientMethods(ABC):
1421
1711
  update_type: post_base_t.UpdateType,
1422
1712
  user_group_ids: list[int] | None = None,
1423
1713
  user_ids: list[int] | None = None,
1714
+ _request_options: client_config_t.RequestOptions | None = None,
1424
1715
  ) -> set_core_permissions_t.Data:
1425
1716
  """Sets recipe related permissions
1426
1717
 
@@ -1440,6 +1731,7 @@ class ClientMethods(ABC):
1440
1731
  method=set_core_permissions_t.ENDPOINT_METHOD,
1441
1732
  endpoint=set_core_permissions_t.ENDPOINT_PATH,
1442
1733
  args=args,
1734
+ request_options=_request_options,
1443
1735
  )
1444
1736
  return self.do_request(api_request=api_request, return_type=set_core_permissions_t.Data)
1445
1737
 
@@ -1448,6 +1740,7 @@ class ClientMethods(ABC):
1448
1740
  *,
1449
1741
  entity_identifier: entity_t.EntityIdentifier,
1450
1742
  field_values: list[field_values_t.FieldArgumentValue],
1743
+ _request_options: client_config_t.RequestOptions | None = None,
1451
1744
  ) -> set_entity_field_values_t.Data:
1452
1745
  """Sets field values for an entity
1453
1746
 
@@ -1462,6 +1755,7 @@ class ClientMethods(ABC):
1462
1755
  method=set_entity_field_values_t.ENDPOINT_METHOD,
1463
1756
  endpoint=set_entity_field_values_t.ENDPOINT_PATH,
1464
1757
  args=args,
1758
+ request_options=_request_options,
1465
1759
  )
1466
1760
  return self.do_request(api_request=api_request, return_type=set_entity_field_values_t.Data)
1467
1761
 
@@ -1469,6 +1763,7 @@ class ClientMethods(ABC):
1469
1763
  self,
1470
1764
  *,
1471
1765
  attribute_values: list[set_input_attribute_values_t.InputAttributeValue],
1766
+ _request_options: client_config_t.RequestOptions | None = None,
1472
1767
  ) -> set_input_attribute_values_t.Data:
1473
1768
  """Sets attribute values for an input
1474
1769
 
@@ -1481,6 +1776,7 @@ class ClientMethods(ABC):
1481
1776
  method=set_input_attribute_values_t.ENDPOINT_METHOD,
1482
1777
  endpoint=set_input_attribute_values_t.ENDPOINT_PATH,
1483
1778
  args=args,
1779
+ request_options=_request_options,
1484
1780
  )
1485
1781
  return self.do_request(api_request=api_request, return_type=set_input_attribute_values_t.Data)
1486
1782
 
@@ -1490,6 +1786,7 @@ class ClientMethods(ABC):
1490
1786
  input_key: identifier_t.IdentifierKey,
1491
1787
  category_id: int | None,
1492
1788
  material_family_ids: list[int] | None = None,
1789
+ _request_options: client_config_t.RequestOptions | None = None,
1493
1790
  ) -> set_input_category_t.Data:
1494
1791
  """Sets subcategories for an input
1495
1792
 
@@ -1506,6 +1803,7 @@ class ClientMethods(ABC):
1506
1803
  method=set_input_category_t.ENDPOINT_METHOD,
1507
1804
  endpoint=set_input_category_t.ENDPOINT_PATH,
1508
1805
  args=args,
1806
+ request_options=_request_options,
1509
1807
  )
1510
1808
  return self.do_request(api_request=api_request, return_type=set_input_category_t.Data)
1511
1809
 
@@ -1515,6 +1813,7 @@ class ClientMethods(ABC):
1515
1813
  input_key: identifier_t.IdentifierKey,
1516
1814
  subcategory_ids: list[int],
1517
1815
  update_type: post_base_t.UpdateType,
1816
+ _request_options: client_config_t.RequestOptions | None = None,
1518
1817
  ) -> set_input_subcategories_t.Data:
1519
1818
  """Sets subcategories for an input
1520
1819
 
@@ -1531,6 +1830,7 @@ class ClientMethods(ABC):
1531
1830
  method=set_input_subcategories_t.ENDPOINT_METHOD,
1532
1831
  endpoint=set_input_subcategories_t.ENDPOINT_PATH,
1533
1832
  args=args,
1833
+ request_options=_request_options,
1534
1834
  )
1535
1835
  return self.do_request(api_request=api_request, return_type=set_input_subcategories_t.Data)
1536
1836
 
@@ -1539,6 +1839,7 @@ class ClientMethods(ABC):
1539
1839
  *,
1540
1840
  input_key: identifier_t.IdentifierKey,
1541
1841
  intermediate_type: set_intermediate_type_t.IntermediateType,
1842
+ _request_options: client_config_t.RequestOptions | None = None,
1542
1843
  ) -> set_intermediate_type_t.Data:
1543
1844
  """Sets the type of an intermediate ingredient.
1544
1845
 
@@ -1553,6 +1854,7 @@ class ClientMethods(ABC):
1553
1854
  method=set_intermediate_type_t.ENDPOINT_METHOD,
1554
1855
  endpoint=set_intermediate_type_t.ENDPOINT_PATH,
1555
1856
  args=args,
1857
+ request_options=_request_options,
1556
1858
  )
1557
1859
  return self.do_request(api_request=api_request, return_type=set_intermediate_type_t.Data)
1558
1860
 
@@ -1560,6 +1862,7 @@ class ClientMethods(ABC):
1560
1862
  self,
1561
1863
  *,
1562
1864
  input_data: list[set_recipe_inputs_t.RecipeInputValue],
1865
+ _request_options: client_config_t.RequestOptions | None = None,
1563
1866
  ) -> set_recipe_inputs_t.Data:
1564
1867
  """Sets inputs values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
1565
1868
 
@@ -1572,6 +1875,7 @@ class ClientMethods(ABC):
1572
1875
  method=set_recipe_inputs_t.ENDPOINT_METHOD,
1573
1876
  endpoint=set_recipe_inputs_t.ENDPOINT_PATH,
1574
1877
  args=args,
1878
+ request_options=_request_options,
1575
1879
  )
1576
1880
  return self.do_request(api_request=api_request, return_type=set_recipe_inputs_t.Data)
1577
1881
 
@@ -1580,6 +1884,7 @@ class ClientMethods(ABC):
1580
1884
  *,
1581
1885
  recipe_key: identifier_t.IdentifierKey,
1582
1886
  recipe_metadata: list[recipe_metadata_t.MetadataValue],
1887
+ _request_options: client_config_t.RequestOptions | None = None,
1583
1888
  ) -> set_recipe_metadata_t.Data:
1584
1889
  """Set metadata values on a recipe
1585
1890
 
@@ -1594,6 +1899,7 @@ class ClientMethods(ABC):
1594
1899
  method=set_recipe_metadata_t.ENDPOINT_METHOD,
1595
1900
  endpoint=set_recipe_metadata_t.ENDPOINT_PATH,
1596
1901
  args=args,
1902
+ request_options=_request_options,
1597
1903
  )
1598
1904
  return self.do_request(api_request=api_request, return_type=set_recipe_metadata_t.Data)
1599
1905
 
@@ -1601,6 +1907,7 @@ class ClientMethods(ABC):
1601
1907
  self,
1602
1908
  *,
1603
1909
  updates: list[set_recipe_output_annotations_t.RecipeOutputUpdateAnnotations],
1910
+ _request_options: client_config_t.RequestOptions | None = None,
1604
1911
  ) -> set_recipe_output_annotations_t.Data:
1605
1912
  """Update annotations for an experiments outputs
1606
1913
 
@@ -1613,6 +1920,7 @@ class ClientMethods(ABC):
1613
1920
  method=set_recipe_output_annotations_t.ENDPOINT_METHOD,
1614
1921
  endpoint=set_recipe_output_annotations_t.ENDPOINT_PATH,
1615
1922
  args=args,
1923
+ request_options=_request_options,
1616
1924
  )
1617
1925
  return self.do_request(api_request=api_request, return_type=set_recipe_output_annotations_t.Data)
1618
1926
 
@@ -1620,6 +1928,7 @@ class ClientMethods(ABC):
1620
1928
  self,
1621
1929
  *,
1622
1930
  output_file_data: set_recipe_output_file_t.RecipeOutputFileValue,
1931
+ _request_options: client_config_t.RequestOptions | None = None,
1623
1932
  ) -> set_recipe_output_file_t.Data:
1624
1933
  """Sets output file value for an experiment. Include a single file as part of the FormData of the request with the filename as the key
1625
1934
 
@@ -1632,6 +1941,7 @@ class ClientMethods(ABC):
1632
1941
  method=set_recipe_output_file_t.ENDPOINT_METHOD,
1633
1942
  endpoint=set_recipe_output_file_t.ENDPOINT_PATH,
1634
1943
  args=args,
1944
+ request_options=_request_options,
1635
1945
  )
1636
1946
  return self.do_request(api_request=api_request, return_type=set_recipe_output_file_t.Data)
1637
1947
 
@@ -1639,6 +1949,7 @@ class ClientMethods(ABC):
1639
1949
  self,
1640
1950
  *,
1641
1951
  output_data: list[set_recipe_outputs_t.RecipeOutputValue],
1952
+ _request_options: client_config_t.RequestOptions | None = None,
1642
1953
  ) -> set_recipe_outputs_t.Data:
1643
1954
  """Sets output values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
1644
1955
 
@@ -1651,6 +1962,7 @@ class ClientMethods(ABC):
1651
1962
  method=set_recipe_outputs_t.ENDPOINT_METHOD,
1652
1963
  endpoint=set_recipe_outputs_t.ENDPOINT_PATH,
1653
1964
  args=args,
1965
+ request_options=_request_options,
1654
1966
  )
1655
1967
  return self.do_request(api_request=api_request, return_type=set_recipe_outputs_t.Data)
1656
1968
 
@@ -1659,6 +1971,7 @@ class ClientMethods(ABC):
1659
1971
  *,
1660
1972
  recipe_key: identifier_t.IdentifierKey,
1661
1973
  recipe_tag_update: set_recipe_tags_t.RecipeTagUpdate,
1974
+ _request_options: client_config_t.RequestOptions | None = None,
1662
1975
  ) -> set_recipe_tags_t.Data:
1663
1976
  """Modifies recipes tags for a recipe
1664
1977
 
@@ -1673,14 +1986,46 @@ class ClientMethods(ABC):
1673
1986
  method=set_recipe_tags_t.ENDPOINT_METHOD,
1674
1987
  endpoint=set_recipe_tags_t.ENDPOINT_PATH,
1675
1988
  args=args,
1989
+ request_options=_request_options,
1676
1990
  )
1677
1991
  return self.do_request(api_request=api_request, return_type=set_recipe_tags_t.Data)
1678
1992
 
1993
+ def set_recipe_total(
1994
+ self,
1995
+ *,
1996
+ recipe_key: identifier_t.IdentifierKey,
1997
+ value: set_recipe_total_t.ValueNumeric,
1998
+ recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier | None = None,
1999
+ calculation_key: identifier_t.IdentifierKey | None = None,
2000
+ _request_options: client_config_t.RequestOptions | None = None,
2001
+ ) -> set_recipe_total_t.Data:
2002
+ """Updates the Set Total value for a recipe or one of its workflow steps
2003
+
2004
+ :param recipe_key: Identifier for the recipe
2005
+ :param recipe_workflow_step_identifier: Identifier for the recipe workflow step
2006
+ :param value: The quantity in mass, volume, or moles to set for the total
2007
+ :param calculation_key: The linked basis calculation to set
2008
+ """
2009
+ args = set_recipe_total_t.Arguments(
2010
+ recipe_key=recipe_key,
2011
+ recipe_workflow_step_identifier=recipe_workflow_step_identifier,
2012
+ value=value,
2013
+ calculation_key=calculation_key,
2014
+ )
2015
+ api_request = APIRequest(
2016
+ method=set_recipe_total_t.ENDPOINT_METHOD,
2017
+ endpoint=set_recipe_total_t.ENDPOINT_PATH,
2018
+ args=args,
2019
+ request_options=_request_options,
2020
+ )
2021
+ return self.do_request(api_request=api_request, return_type=set_recipe_total_t.Data)
2022
+
1679
2023
  def set_values(
1680
2024
  self,
1681
2025
  *,
1682
2026
  entity: entity_t.Entity,
1683
2027
  values: list[field_values_t.ArgumentValueRefName],
2028
+ _request_options: client_config_t.RequestOptions | None = None,
1684
2029
  ) -> set_values_t.Data:
1685
2030
  """Sets field values for an entity
1686
2031
 
@@ -1693,26 +2038,34 @@ class ClientMethods(ABC):
1693
2038
  method=set_values_t.ENDPOINT_METHOD,
1694
2039
  endpoint=set_values_t.ENDPOINT_PATH,
1695
2040
  args=args,
2041
+ request_options=_request_options,
1696
2042
  )
1697
2043
  return self.do_request(api_request=api_request, return_type=set_values_t.Data)
1698
2044
 
1699
2045
  def transition_entity_phase(
1700
2046
  self,
1701
2047
  *,
1702
- entity: entity_t.Entity,
1703
2048
  transition: transition_entity_phase_t.TransitionIdentifier,
2049
+ entity: entity_t.Entity | None = None,
2050
+ entity_identifier: entity_t.EntityIdentifier | None = None,
2051
+ _request_options: client_config_t.RequestOptions | None = None,
1704
2052
  ) -> transition_entity_phase_t.Data:
1705
2053
  """Transitions an entity from one phase to another
1706
2054
 
2055
+ :param entity: Entity to transition. If entity_identifier is provided, this should be omitted.
2056
+ :param entity_identifier: Identifier of the entity to transition. If entity is provided, this should be omitted.
2057
+ :param transition: Identifier of the transition to perform
1707
2058
  """
1708
2059
  args = transition_entity_phase_t.Arguments(
1709
2060
  entity=entity,
2061
+ entity_identifier=entity_identifier,
1710
2062
  transition=transition,
1711
2063
  )
1712
2064
  api_request = APIRequest(
1713
2065
  method=transition_entity_phase_t.ENDPOINT_METHOD,
1714
2066
  endpoint=transition_entity_phase_t.ENDPOINT_PATH,
1715
2067
  args=args,
2068
+ request_options=_request_options,
1716
2069
  )
1717
2070
  return self.do_request(api_request=api_request, return_type=transition_entity_phase_t.Data)
1718
2071
 
@@ -1720,6 +2073,7 @@ class ClientMethods(ABC):
1720
2073
  self,
1721
2074
  *,
1722
2075
  recipes: list[identifier_t.IdentifierKey],
2076
+ _request_options: client_config_t.RequestOptions | None = None,
1723
2077
  ) -> unarchive_recipes_t.Data:
1724
2078
  """Unarchive/restore the provided recipes
1725
2079
 
@@ -1732,6 +2086,7 @@ class ClientMethods(ABC):
1732
2086
  method=unarchive_recipes_t.ENDPOINT_METHOD,
1733
2087
  endpoint=unarchive_recipes_t.ENDPOINT_PATH,
1734
2088
  args=args,
2089
+ request_options=_request_options,
1735
2090
  )
1736
2091
  return self.do_request(api_request=api_request, return_type=unarchive_recipes_t.Data)
1737
2092
 
@@ -1740,6 +2095,7 @@ class ClientMethods(ABC):
1740
2095
  *,
1741
2096
  entity_key: identifier_t.IdentifierKey,
1742
2097
  entity_type: entity_t.EntityType,
2098
+ _request_options: client_config_t.RequestOptions | None = None,
1743
2099
  ) -> unlock_entity_t.Data:
1744
2100
  """Unlock an entity
1745
2101
 
@@ -1753,6 +2109,7 @@ class ClientMethods(ABC):
1753
2109
  method=unlock_entity_t.ENDPOINT_METHOD,
1754
2110
  endpoint=unlock_entity_t.ENDPOINT_PATH,
1755
2111
  args=args,
2112
+ request_options=_request_options,
1756
2113
  )
1757
2114
  return self.do_request(api_request=api_request, return_type=unlock_entity_t.Data)
1758
2115
 
@@ -1762,6 +2119,7 @@ class ClientMethods(ABC):
1762
2119
  type: unlock_recipes_t.RecipeUnlockType = unlock_recipes_t.RecipeUnlockType.STANDARD,
1763
2120
  recipes: list[identifier_t.IdentifierKey],
1764
2121
  unlock_samples: bool | None = None,
2122
+ _request_options: client_config_t.RequestOptions | None = None,
1765
2123
  ) -> unlock_recipes_t.Data:
1766
2124
  """Unlock experiments. Experiments will edtiable after unlocking if they are currently locked.
1767
2125
 
@@ -1778,6 +2136,7 @@ class ClientMethods(ABC):
1778
2136
  method=unlock_recipes_t.ENDPOINT_METHOD,
1779
2137
  endpoint=unlock_recipes_t.ENDPOINT_PATH,
1780
2138
  args=args,
2139
+ request_options=_request_options,
1781
2140
  )
1782
2141
  return self.do_request(api_request=api_request, return_type=unlock_recipes_t.Data)
1783
2142
 
@@ -1788,6 +2147,7 @@ class ClientMethods(ABC):
1788
2147
  entity_type: typing.Literal[entity_t.EntityType.RECIPE_METADATA] | typing.Literal[entity_t.EntityType.INGREDIENT] | typing.Literal[entity_t.EntityType.OUTPUT] | typing.Literal[entity_t.EntityType.CONDITION_PARAMETER] | typing.Literal[entity_t.EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[entity_t.EntityType.INGREDIENT_CATEGORY_ALL],
1789
2148
  material_family_ids: list[base_t.ObjectId],
1790
2149
  update_type: post_base_t.UpdateType,
2150
+ _request_options: client_config_t.RequestOptions | None = None,
1791
2151
  ) -> update_entity_material_families_t.Data:
1792
2152
  """Updates the material families that the entity is available in
1793
2153
 
@@ -1806,6 +2166,7 @@ class ClientMethods(ABC):
1806
2166
  method=update_entity_material_families_t.ENDPOINT_METHOD,
1807
2167
  endpoint=update_entity_material_families_t.ENDPOINT_PATH,
1808
2168
  args=args,
2169
+ request_options=_request_options,
1809
2170
  )
1810
2171
  return self.do_request(api_request=api_request, return_type=update_entity_material_families_t.Data)
1811
2172
 
@@ -1817,6 +2178,7 @@ class ClientMethods(ABC):
1817
2178
  condition_parameters: list[upsert_condition_match_t.ConditionParameter] | None = None,
1818
2179
  output_conditions: list[identifier_t.IdentifierKey] | None = None,
1819
2180
  existing_condition_match: identifier_t.IdentifierKey | None = None,
2181
+ _request_options: client_config_t.RequestOptions | None = None,
1820
2182
  ) -> upsert_condition_match_t.Data:
1821
2183
  """Creates or updates condition match
1822
2184
 
@@ -1832,6 +2194,7 @@ class ClientMethods(ABC):
1832
2194
  method=upsert_condition_match_t.ENDPOINT_METHOD,
1833
2195
  endpoint=upsert_condition_match_t.ENDPOINT_PATH,
1834
2196
  args=args,
2197
+ request_options=_request_options,
1835
2198
  )
1836
2199
  return self.do_request(api_request=api_request, return_type=upsert_condition_match_t.Data)
1837
2200
 
@@ -1840,6 +2203,7 @@ class ClientMethods(ABC):
1840
2203
  *,
1841
2204
  option_set_key: identifier_t.IdentifierKey,
1842
2205
  field_options: list[upsert_field_options_t.FieldOption],
2206
+ _request_options: client_config_t.RequestOptions | None = None,
1843
2207
  ) -> upsert_field_options_t.Data:
1844
2208
  """Creates or updates field options for an option set
1845
2209
 
@@ -1854,5 +2218,6 @@ class ClientMethods(ABC):
1854
2218
  method=upsert_field_options_t.ENDPOINT_METHOD,
1855
2219
  endpoint=upsert_field_options_t.ENDPOINT_PATH,
1856
2220
  args=args,
2221
+ request_options=_request_options,
1857
2222
  )
1858
2223
  return self.do_request(api_request=api_request, return_type=upsert_field_options_t.Data)