UncountablePythonSDK 0.0.52__py3-none-any.whl → 0.0.131__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.
- docs/conf.py +54 -7
- docs/index.md +107 -4
- docs/integration_examples/create_ingredient.md +43 -0
- docs/integration_examples/create_output.md +56 -0
- docs/integration_examples/index.md +6 -0
- docs/justfile +2 -2
- docs/requirements.txt +6 -4
- examples/async_batch.py +3 -3
- examples/basic_auth.py +7 -0
- examples/create_entity.py +3 -1
- examples/create_ingredient_sdk.py +34 -0
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +4 -2
- examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
- examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
- examples/integration-server/jobs/materials_auto/example_http.py +47 -0
- examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
- examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
- examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
- examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
- examples/integration-server/pyproject.toml +224 -0
- examples/invoke_uploader.py +4 -1
- examples/oauth.py +7 -0
- examples/set_recipe_metadata_file.py +40 -0
- examples/set_recipe_output_file_sdk.py +26 -0
- examples/upload_files.py +1 -2
- pkgs/argument_parser/__init__.py +9 -0
- pkgs/argument_parser/_is_namedtuple.py +3 -0
- pkgs/argument_parser/argument_parser.py +217 -70
- pkgs/filesystem_utils/__init__.py +1 -0
- pkgs/filesystem_utils/_blob_session.py +144 -0
- pkgs/filesystem_utils/_gdrive_session.py +10 -7
- pkgs/filesystem_utils/_s3_session.py +15 -13
- pkgs/filesystem_utils/_sftp_session.py +11 -7
- pkgs/filesystem_utils/file_type_utils.py +30 -10
- pkgs/py.typed +0 -0
- pkgs/serialization/__init__.py +7 -2
- pkgs/serialization/annotation.py +64 -0
- pkgs/serialization/missing_sentry.py +1 -1
- pkgs/serialization/opaque_key.py +1 -1
- pkgs/serialization/serial_alias.py +47 -0
- pkgs/serialization/serial_class.py +47 -26
- pkgs/serialization/serial_generic.py +16 -0
- pkgs/serialization/serial_union.py +17 -14
- pkgs/serialization/yaml.py +4 -1
- pkgs/serialization_util/__init__.py +6 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +15 -5
- pkgs/type_spec/actions_registry/__main__.py +0 -4
- pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
- pkgs/type_spec/builder.py +354 -119
- pkgs/type_spec/builder_types.py +9 -0
- pkgs/type_spec/config.py +51 -11
- pkgs/type_spec/cross_output_links.py +99 -0
- pkgs/type_spec/emit_io_ts.py +1 -1
- pkgs/type_spec/emit_open_api.py +127 -36
- pkgs/type_spec/emit_open_api_util.py +5 -6
- pkgs/type_spec/emit_python.py +329 -121
- pkgs/type_spec/emit_typescript.py +117 -256
- pkgs/type_spec/emit_typescript_util.py +291 -2
- pkgs/type_spec/load_types.py +18 -4
- pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
- pkgs/type_spec/open_api_util.py +29 -4
- pkgs/type_spec/parts/base.py.prepart +13 -10
- pkgs/type_spec/parts/base.ts.prepart +4 -0
- pkgs/type_spec/type_info/__main__.py +3 -1
- pkgs/type_spec/type_info/emit_type_info.py +124 -29
- pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
- pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
- pkgs/type_spec/util.py +4 -4
- pkgs/type_spec/value_spec/__main__.py +26 -9
- pkgs/type_spec/value_spec/convert_type.py +21 -1
- pkgs/type_spec/value_spec/emit_python.py +25 -7
- pkgs/type_spec/value_spec/types.py +1 -1
- uncountable/core/async_batch.py +1 -1
- uncountable/core/client.py +142 -39
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +52 -18
- uncountable/integration/cli.py +142 -0
- uncountable/integration/construct_client.py +8 -8
- uncountable/integration/cron.py +11 -37
- uncountable/integration/db/connect.py +12 -2
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +8 -37
- uncountable/integration/executors/executors.py +125 -2
- uncountable/integration/executors/generic_upload_executor.py +87 -29
- uncountable/integration/executors/script_executor.py +3 -3
- uncountable/integration/http_server/__init__.py +5 -0
- uncountable/integration/http_server/types.py +69 -0
- uncountable/integration/job.py +242 -12
- uncountable/integration/queue_runner/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/__init__.py +28 -0
- uncountable/integration/queue_runner/command_server/command_client.py +133 -0
- uncountable/integration/queue_runner/command_server/command_server.py +142 -0
- uncountable/integration/queue_runner/command_server/constants.py +4 -0
- uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
- uncountable/integration/queue_runner/command_server/types.py +75 -0
- uncountable/integration/queue_runner/datastore/__init__.py +3 -0
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
- uncountable/integration/queue_runner/datastore/interface.py +29 -0
- uncountable/integration/queue_runner/datastore/model.py +24 -0
- uncountable/integration/queue_runner/job_scheduler.py +200 -0
- uncountable/integration/queue_runner/queue_runner.py +34 -0
- uncountable/integration/queue_runner/types.py +7 -0
- uncountable/integration/queue_runner/worker.py +116 -0
- uncountable/integration/scan_profiles.py +67 -0
- uncountable/integration/scheduler.py +199 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +26 -4
- uncountable/integration/server.py +94 -69
- uncountable/integration/telemetry.py +150 -34
- uncountable/integration/webhook_server/entrypoint.py +97 -0
- uncountable/types/__init__.py +78 -1
- uncountable/types/api/batch/execute_batch.py +13 -6
- uncountable/types/api/batch/execute_batch_load_async.py +9 -3
- uncountable/types/api/chemical/convert_chemical_formats.py +17 -5
- uncountable/types/api/condition_parameters/__init__.py +1 -0
- uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
- uncountable/types/api/entity/create_entities.py +19 -7
- uncountable/types/api/entity/create_entity.py +17 -8
- uncountable/types/api/entity/create_or_update_entity.py +48 -0
- uncountable/types/api/entity/export_entities.py +59 -0
- uncountable/types/api/entity/get_entities_data.py +13 -4
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/entity/list_aggregate.py +79 -0
- uncountable/types/api/entity/list_entities.py +42 -10
- uncountable/types/api/entity/lock_entity.py +11 -4
- uncountable/types/api/entity/lookup_entity.py +116 -0
- uncountable/types/api/entity/resolve_entity_ids.py +15 -6
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +10 -3
- uncountable/types/api/entity/transition_entity_phase.py +22 -7
- uncountable/types/api/entity/unlock_entity.py +10 -3
- uncountable/types/api/equipment/associate_equipment_input.py +9 -3
- uncountable/types/api/field_options/upsert_field_options.py +17 -7
- uncountable/types/api/files/__init__.py +1 -0
- uncountable/types/api/files/download_file.py +77 -0
- uncountable/types/api/id_source/list_id_source.py +16 -7
- uncountable/types/api/id_source/match_id_source.py +14 -5
- uncountable/types/api/input_groups/get_input_group_names.py +13 -4
- uncountable/types/api/inputs/create_inputs.py +23 -9
- uncountable/types/api/inputs/get_input_data.py +30 -12
- uncountable/types/api/inputs/get_input_names.py +16 -7
- uncountable/types/api/inputs/get_inputs_data.py +25 -7
- uncountable/types/api/inputs/set_input_attribute_values.py +12 -6
- uncountable/types/api/inputs/set_input_category.py +12 -5
- uncountable/types/api/inputs/set_input_subcategories.py +10 -3
- uncountable/types/api/inputs/set_intermediate_type.py +11 -4
- uncountable/types/api/integrations/__init__.py +1 -0
- uncountable/types/api/integrations/publish_realtime_data.py +41 -0
- uncountable/types/api/integrations/push_notification.py +49 -0
- uncountable/types/api/integrations/register_sockets_token.py +41 -0
- uncountable/types/api/listing/__init__.py +1 -0
- uncountable/types/api/listing/fetch_listing.py +58 -0
- uncountable/types/api/material_families/update_entity_material_families.py +10 -4
- uncountable/types/api/notebooks/__init__.py +1 -0
- uncountable/types/api/notebooks/add_notebook_content.py +119 -0
- uncountable/types/api/outputs/get_output_data.py +28 -13
- uncountable/types/api/outputs/get_output_names.py +15 -6
- uncountable/types/api/outputs/get_output_organization.py +173 -0
- uncountable/types/api/outputs/resolve_output_conditions.py +20 -8
- uncountable/types/api/permissions/set_core_permissions.py +26 -10
- uncountable/types/api/project/get_projects.py +16 -7
- uncountable/types/api/project/get_projects_data.py +17 -8
- uncountable/types/api/recipe_links/create_recipe_link.py +12 -5
- uncountable/types/api/recipe_links/remove_recipe_link.py +11 -4
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +16 -7
- uncountable/types/api/recipes/add_recipe_to_project.py +10 -3
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/archive_recipes.py +11 -4
- uncountable/types/api/recipes/associate_recipe_as_input.py +12 -5
- uncountable/types/api/recipes/associate_recipe_as_lot.py +10 -3
- uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
- uncountable/types/api/recipes/create_mix_order.py +44 -0
- uncountable/types/api/recipes/create_recipe.py +15 -9
- uncountable/types/api/recipes/create_recipes.py +21 -9
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +10 -3
- uncountable/types/api/recipes/edit_recipe_inputs.py +134 -22
- uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
- uncountable/types/api/recipes/get_curve.py +11 -5
- uncountable/types/api/recipes/get_recipe_calculations.py +13 -7
- uncountable/types/api/recipes/get_recipe_links.py +10 -4
- uncountable/types/api/recipes/get_recipe_names.py +13 -4
- uncountable/types/api/recipes/get_recipe_output_metadata.py +12 -6
- uncountable/types/api/recipes/get_recipes_data.py +87 -33
- uncountable/types/api/recipes/lock_recipes.py +19 -8
- uncountable/types/api/recipes/remove_recipe_from_project.py +10 -3
- uncountable/types/api/recipes/set_recipe_inputs.py +16 -10
- uncountable/types/api/recipes/set_recipe_metadata.py +10 -3
- uncountable/types/api/recipes/set_recipe_output_annotations.py +24 -12
- uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +35 -12
- uncountable/types/api/recipes/set_recipe_tags.py +26 -9
- uncountable/types/api/recipes/set_recipe_total.py +59 -0
- uncountable/types/api/recipes/unarchive_recipes.py +10 -3
- uncountable/types/api/recipes/unlock_recipes.py +14 -6
- uncountable/types/api/runsheet/__init__.py +1 -0
- uncountable/types/api/runsheet/complete_async_upload.py +41 -0
- uncountable/types/api/triggers/run_trigger.py +11 -4
- uncountable/types/api/uploader/complete_async_parse.py +46 -0
- uncountable/types/api/uploader/invoke_uploader.py +13 -6
- uncountable/types/api/user/__init__.py +1 -0
- uncountable/types/api/user/get_current_user_info.py +40 -0
- uncountable/types/async_batch.py +2 -1
- uncountable/types/async_batch_processor.py +618 -18
- uncountable/types/async_batch_t.py +54 -7
- uncountable/types/async_jobs.py +8 -0
- uncountable/types/async_jobs_t.py +52 -0
- uncountable/types/auth_retrieval.py +11 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/base.py +0 -1
- uncountable/types/base_t.py +13 -11
- uncountable/types/calculations.py +0 -1
- uncountable/types/calculations_t.py +5 -2
- uncountable/types/chemical_structure.py +0 -1
- uncountable/types/chemical_structure_t.py +6 -5
- uncountable/types/client_base.py +751 -70
- uncountable/types/client_config.py +1 -1
- uncountable/types/client_config_t.py +17 -3
- uncountable/types/curves.py +0 -1
- uncountable/types/curves_t.py +10 -7
- uncountable/types/data.py +12 -0
- uncountable/types/data_t.py +103 -0
- uncountable/types/entity.py +4 -1
- uncountable/types/entity_t.py +125 -7
- uncountable/types/experiment_groups.py +0 -1
- uncountable/types/experiment_groups_t.py +5 -2
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +34 -0
- uncountable/types/field_values.py +19 -1
- uncountable/types/field_values_t.py +246 -9
- uncountable/types/fields.py +0 -1
- uncountable/types/fields_t.py +5 -2
- uncountable/types/generic_upload.py +6 -1
- uncountable/types/generic_upload_t.py +88 -9
- uncountable/types/id_source.py +0 -1
- uncountable/types/id_source_t.py +26 -7
- uncountable/types/identifier.py +0 -1
- uncountable/types/identifier_t.py +13 -5
- uncountable/types/input_attributes.py +0 -1
- uncountable/types/input_attributes_t.py +4 -4
- uncountable/types/inputs.py +1 -1
- uncountable/types/inputs_t.py +24 -4
- uncountable/types/integration_server.py +8 -0
- uncountable/types/integration_server_t.py +46 -0
- uncountable/types/integration_session.py +10 -0
- uncountable/types/integration_session_t.py +60 -0
- uncountable/types/integrations.py +10 -0
- uncountable/types/integrations_t.py +62 -0
- uncountable/types/job_definition.py +4 -6
- uncountable/types/job_definition_t.py +96 -65
- uncountable/types/listing.py +9 -0
- uncountable/types/listing_t.py +51 -0
- uncountable/types/notices.py +8 -0
- uncountable/types/notices_t.py +37 -0
- uncountable/types/notifications.py +11 -0
- uncountable/types/notifications_t.py +74 -0
- uncountable/types/outputs.py +0 -1
- uncountable/types/outputs_t.py +6 -3
- uncountable/types/overrides.py +9 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +0 -1
- uncountable/types/permissions_t.py +1 -2
- uncountable/types/phases.py +0 -1
- uncountable/types/phases_t.py +5 -2
- uncountable/types/post_base.py +0 -1
- uncountable/types/post_base_t.py +1 -2
- uncountable/types/queued_job.py +17 -0
- uncountable/types/queued_job_t.py +140 -0
- uncountable/types/recipe_identifiers.py +0 -1
- uncountable/types/recipe_identifiers_t.py +21 -8
- uncountable/types/recipe_inputs.py +0 -1
- uncountable/types/recipe_inputs_t.py +1 -2
- uncountable/types/recipe_links.py +0 -1
- uncountable/types/recipe_links_t.py +7 -4
- uncountable/types/recipe_metadata.py +0 -1
- uncountable/types/recipe_metadata_t.py +14 -9
- uncountable/types/recipe_output_metadata.py +0 -1
- uncountable/types/recipe_output_metadata_t.py +5 -2
- uncountable/types/recipe_tags.py +0 -1
- uncountable/types/recipe_tags_t.py +5 -2
- uncountable/types/recipe_workflow_steps.py +0 -1
- uncountable/types/recipe_workflow_steps_t.py +14 -7
- uncountable/types/recipes.py +0 -1
- uncountable/types/recipes_t.py +6 -2
- uncountable/types/response.py +0 -1
- uncountable/types/response_t.py +3 -2
- uncountable/types/secret_retrieval.py +0 -1
- uncountable/types/secret_retrieval_t.py +13 -7
- uncountable/types/sockets.py +20 -0
- uncountable/types/sockets_t.py +169 -0
- uncountable/types/structured_filters.py +25 -0
- uncountable/types/structured_filters_t.py +248 -0
- uncountable/types/units.py +0 -1
- uncountable/types/units_t.py +5 -2
- uncountable/types/uploader.py +24 -0
- uncountable/types/uploader_t.py +222 -0
- uncountable/types/users.py +0 -1
- uncountable/types/users_t.py +5 -2
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +48 -0
- uncountable/types/workflows.py +0 -1
- uncountable/types/workflows_t.py +10 -4
- uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
- uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
- {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
- UncountablePythonSDK-0.0.52.dist-info/METADATA +0 -56
- UncountablePythonSDK-0.0.52.dist-info/RECORD +0 -246
- docs/quickstart.md +0 -19
- uncountable/core/version.py +0 -11
- {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -0
uncountable/types/client_base.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -9,17 +8,25 @@ import typing # noqa: F401
|
|
|
9
8
|
import datetime # noqa: F401
|
|
10
9
|
from decimal import Decimal # noqa: F401
|
|
11
10
|
from pkgs.serialization import OpaqueKey
|
|
11
|
+
import uncountable.types.api.notebooks.add_notebook_content as add_notebook_content_t
|
|
12
12
|
import uncountable.types.api.recipes.add_recipe_to_project as add_recipe_to_project_t
|
|
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
|
|
14
15
|
import uncountable.types.api.equipment.associate_equipment_input as associate_equipment_input_t
|
|
15
16
|
import uncountable.types.api.recipes.associate_recipe_as_input as associate_recipe_as_input_t
|
|
16
17
|
import uncountable.types.api.recipes.associate_recipe_as_lot as associate_recipe_as_lot_t
|
|
17
18
|
from uncountable.types import async_batch_t
|
|
18
19
|
from uncountable.types import base_t
|
|
20
|
+
import uncountable.types.api.recipes.clear_recipe_outputs as clear_recipe_outputs_t
|
|
21
|
+
from uncountable.types import client_config_t
|
|
22
|
+
import uncountable.types.api.uploader.complete_async_parse as complete_async_parse_t
|
|
23
|
+
import uncountable.types.api.runsheet.complete_async_upload as complete_async_upload_t
|
|
19
24
|
import uncountable.types.api.chemical.convert_chemical_formats as convert_chemical_formats_t
|
|
20
25
|
import uncountable.types.api.entity.create_entities as create_entities_t
|
|
21
26
|
import uncountable.types.api.entity.create_entity as create_entity_t
|
|
22
27
|
import uncountable.types.api.inputs.create_inputs as create_inputs_t
|
|
28
|
+
import uncountable.types.api.recipes.create_mix_order as create_mix_order_t
|
|
29
|
+
import uncountable.types.api.entity.create_or_update_entity as create_or_update_entity_t
|
|
23
30
|
import uncountable.types.api.recipes.create_recipe as create_recipe_t
|
|
24
31
|
import uncountable.types.api.recipe_links.create_recipe_link as create_recipe_link_t
|
|
25
32
|
import uncountable.types.api.recipes.create_recipes as create_recipes_t
|
|
@@ -28,7 +35,13 @@ import uncountable.types.api.recipes.edit_recipe_inputs as edit_recipe_inputs_t
|
|
|
28
35
|
from uncountable.types import entity_t
|
|
29
36
|
import uncountable.types.api.batch.execute_batch as execute_batch_t
|
|
30
37
|
import uncountable.types.api.batch.execute_batch_load_async as execute_batch_load_async_t
|
|
38
|
+
import uncountable.types.api.entity.export_entities as export_entities_t
|
|
39
|
+
from uncountable.types import exports_t
|
|
40
|
+
import uncountable.types.api.listing.fetch_listing as fetch_listing_t
|
|
31
41
|
from uncountable.types import field_values_t
|
|
42
|
+
from uncountable.types import generic_upload_t
|
|
43
|
+
import uncountable.types.api.recipes.get_column_calculation_values as get_column_calculation_values_t
|
|
44
|
+
import uncountable.types.api.user.get_current_user_info as get_current_user_info_t
|
|
32
45
|
import uncountable.types.api.recipes.get_curve as get_curve_t
|
|
33
46
|
import uncountable.types.api.entity.get_entities_data as get_entities_data_t
|
|
34
47
|
import uncountable.types.api.inputs.get_input_data as get_input_data_t
|
|
@@ -45,26 +58,35 @@ import uncountable.types.api.recipe_metadata.get_recipe_metadata_data as get_rec
|
|
|
45
58
|
import uncountable.types.api.recipes.get_recipe_names as get_recipe_names_t
|
|
46
59
|
import uncountable.types.api.recipes.get_recipe_output_metadata as get_recipe_output_metadata_t
|
|
47
60
|
import uncountable.types.api.recipes.get_recipes_data as get_recipes_data_t
|
|
61
|
+
import uncountable.types.api.entity.grant_entity_permissions as grant_entity_permissions_t
|
|
48
62
|
from uncountable.types import id_source_t
|
|
49
63
|
from uncountable.types import identifier_t
|
|
50
64
|
import uncountable.types.api.uploader.invoke_uploader as invoke_uploader_t
|
|
65
|
+
import uncountable.types.api.entity.list_aggregate as list_aggregate_t
|
|
51
66
|
import uncountable.types.api.entity.list_entities as list_entities_t
|
|
52
67
|
import uncountable.types.api.id_source.list_id_source as list_id_source_t
|
|
68
|
+
from uncountable.types import listing_t
|
|
53
69
|
import uncountable.types.api.entity.lock_entity as lock_entity_t
|
|
54
70
|
import uncountable.types.api.recipes.lock_recipes as lock_recipes_t
|
|
71
|
+
import uncountable.types.api.entity.lookup_entity as lookup_entity_t
|
|
55
72
|
import uncountable.types.api.id_source.match_id_source as match_id_source_t
|
|
73
|
+
from uncountable.types import notices_t
|
|
74
|
+
from uncountable.types import notifications_t
|
|
56
75
|
from uncountable.types import permissions_t
|
|
57
76
|
from uncountable.types import post_base_t
|
|
77
|
+
import uncountable.types.api.integrations.push_notification as push_notification_t
|
|
58
78
|
from uncountable.types import recipe_identifiers_t
|
|
59
79
|
from uncountable.types import recipe_links_t
|
|
60
80
|
from uncountable.types import recipe_metadata_t
|
|
61
81
|
from uncountable.types import recipe_workflow_steps_t
|
|
82
|
+
import uncountable.types.api.integrations.register_sockets_token as register_sockets_token_t
|
|
62
83
|
import uncountable.types.api.recipes.remove_recipe_from_project as remove_recipe_from_project_t
|
|
63
84
|
import uncountable.types.api.recipe_links.remove_recipe_link as remove_recipe_link_t
|
|
64
85
|
import uncountable.types.api.entity.resolve_entity_ids as resolve_entity_ids_t
|
|
65
86
|
import uncountable.types.api.outputs.resolve_output_conditions as resolve_output_conditions_t
|
|
66
87
|
import uncountable.types.api.triggers.run_trigger as run_trigger_t
|
|
67
88
|
import uncountable.types.api.permissions.set_core_permissions as set_core_permissions_t
|
|
89
|
+
import uncountable.types.api.entity.set_entity_field_values as set_entity_field_values_t
|
|
68
90
|
import uncountable.types.api.inputs.set_input_attribute_values as set_input_attribute_values_t
|
|
69
91
|
import uncountable.types.api.inputs.set_input_category as set_input_category_t
|
|
70
92
|
import uncountable.types.api.inputs.set_input_subcategories as set_input_subcategories_t
|
|
@@ -72,14 +94,20 @@ import uncountable.types.api.inputs.set_intermediate_type as set_intermediate_ty
|
|
|
72
94
|
import uncountable.types.api.recipes.set_recipe_inputs as set_recipe_inputs_t
|
|
73
95
|
import uncountable.types.api.recipes.set_recipe_metadata as set_recipe_metadata_t
|
|
74
96
|
import uncountable.types.api.recipes.set_recipe_output_annotations as set_recipe_output_annotations_t
|
|
97
|
+
import uncountable.types.api.recipes.set_recipe_output_file as set_recipe_output_file_t
|
|
75
98
|
import uncountable.types.api.recipes.set_recipe_outputs as set_recipe_outputs_t
|
|
76
99
|
import uncountable.types.api.recipes.set_recipe_tags as set_recipe_tags_t
|
|
100
|
+
import uncountable.types.api.recipes.set_recipe_total as set_recipe_total_t
|
|
77
101
|
import uncountable.types.api.entity.set_values as set_values_t
|
|
102
|
+
from uncountable.types import sockets_t
|
|
103
|
+
from uncountable.types import structured_filters_t
|
|
78
104
|
import uncountable.types.api.entity.transition_entity_phase as transition_entity_phase_t
|
|
79
105
|
import uncountable.types.api.recipes.unarchive_recipes as unarchive_recipes_t
|
|
80
106
|
import uncountable.types.api.entity.unlock_entity as unlock_entity_t
|
|
81
107
|
import uncountable.types.api.recipes.unlock_recipes as unlock_recipes_t
|
|
82
108
|
import uncountable.types.api.material_families.update_entity_material_families as update_entity_material_families_t
|
|
109
|
+
from uncountable.types import uploader_t
|
|
110
|
+
import uncountable.types.api.condition_parameters.upsert_condition_match as upsert_condition_match_t
|
|
83
111
|
import uncountable.types.api.field_options.upsert_field_options as upsert_field_options_t
|
|
84
112
|
from abc import ABC, abstractmethod
|
|
85
113
|
import dataclasses
|
|
@@ -92,6 +120,7 @@ class APIRequest:
|
|
|
92
120
|
method: str
|
|
93
121
|
endpoint: str
|
|
94
122
|
args: typing.Any
|
|
123
|
+
request_options: client_config_t.RequestOptions | None = None
|
|
95
124
|
|
|
96
125
|
|
|
97
126
|
class ClientMethods(ABC):
|
|
@@ -100,11 +129,39 @@ class ClientMethods(ABC):
|
|
|
100
129
|
def do_request(self, *, api_request: APIRequest, return_type: type[DT]) -> DT:
|
|
101
130
|
...
|
|
102
131
|
|
|
132
|
+
def add_notebook_content(
|
|
133
|
+
self,
|
|
134
|
+
*,
|
|
135
|
+
notebook_key: identifier_t.IdentifierKey,
|
|
136
|
+
location: add_notebook_content_t.Location,
|
|
137
|
+
contents: list[add_notebook_content_t.InputContent],
|
|
138
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
139
|
+
) -> add_notebook_content_t.Data:
|
|
140
|
+
"""Adds content to an existing notebook
|
|
141
|
+
|
|
142
|
+
:param notebook_key: Key of the notebook to add the content to
|
|
143
|
+
:param location: The location to add the content to in the notebook
|
|
144
|
+
:param contents: List of input content to add to the notebook
|
|
145
|
+
"""
|
|
146
|
+
args = add_notebook_content_t.Arguments(
|
|
147
|
+
notebook_key=notebook_key,
|
|
148
|
+
location=location,
|
|
149
|
+
contents=contents,
|
|
150
|
+
)
|
|
151
|
+
api_request = APIRequest(
|
|
152
|
+
method=add_notebook_content_t.ENDPOINT_METHOD,
|
|
153
|
+
endpoint=add_notebook_content_t.ENDPOINT_PATH,
|
|
154
|
+
args=args,
|
|
155
|
+
request_options=_request_options,
|
|
156
|
+
)
|
|
157
|
+
return self.do_request(api_request=api_request, return_type=add_notebook_content_t.Data)
|
|
158
|
+
|
|
103
159
|
def add_recipe_to_project(
|
|
104
160
|
self,
|
|
105
161
|
*,
|
|
106
162
|
recipe_key: identifier_t.IdentifierKey,
|
|
107
163
|
project_key: identifier_t.IdentifierKey,
|
|
164
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
108
165
|
) -> add_recipe_to_project_t.Data:
|
|
109
166
|
"""Adds a recipe to a project
|
|
110
167
|
|
|
@@ -119,14 +176,43 @@ class ClientMethods(ABC):
|
|
|
119
176
|
method=add_recipe_to_project_t.ENDPOINT_METHOD,
|
|
120
177
|
endpoint=add_recipe_to_project_t.ENDPOINT_PATH,
|
|
121
178
|
args=args,
|
|
179
|
+
request_options=_request_options,
|
|
122
180
|
)
|
|
123
181
|
return self.do_request(api_request=api_request, return_type=add_recipe_to_project_t.Data)
|
|
124
182
|
|
|
183
|
+
def external_add_time_series_data(
|
|
184
|
+
self,
|
|
185
|
+
*,
|
|
186
|
+
time_series_segment_key: identifier_t.IdentifierKey,
|
|
187
|
+
time_series_data: list[add_time_series_data_t.TimeSeriesDatum],
|
|
188
|
+
on_conflict: add_time_series_data_t.OnTimepointConflict = add_time_series_data_t.OnTimepointConflict.ERROR,
|
|
189
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
190
|
+
) -> add_time_series_data_t.Data:
|
|
191
|
+
"""Add timepoint data to a time series segment.
|
|
192
|
+
|
|
193
|
+
:param time_series_segment_key: The time series segment to add data to
|
|
194
|
+
:param time_series_data: The data to add to the time series segment
|
|
195
|
+
:param on_conflict: What to do if a TimeSeriesDatum already exists at the same timestamp
|
|
196
|
+
"""
|
|
197
|
+
args = add_time_series_data_t.Arguments(
|
|
198
|
+
time_series_segment_key=time_series_segment_key,
|
|
199
|
+
time_series_data=time_series_data,
|
|
200
|
+
on_conflict=on_conflict,
|
|
201
|
+
)
|
|
202
|
+
api_request = APIRequest(
|
|
203
|
+
method=add_time_series_data_t.ENDPOINT_METHOD,
|
|
204
|
+
endpoint=add_time_series_data_t.ENDPOINT_PATH,
|
|
205
|
+
args=args,
|
|
206
|
+
request_options=_request_options,
|
|
207
|
+
)
|
|
208
|
+
return self.do_request(api_request=api_request, return_type=add_time_series_data_t.Data)
|
|
209
|
+
|
|
125
210
|
def archive_recipes(
|
|
126
211
|
self,
|
|
127
212
|
*,
|
|
128
213
|
recipes: list[identifier_t.IdentifierKey],
|
|
129
|
-
reason:
|
|
214
|
+
reason: str | None = None,
|
|
215
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
130
216
|
) -> archive_recipes_t.Data:
|
|
131
217
|
"""Archive the provided recipes and their children
|
|
132
218
|
|
|
@@ -141,6 +227,7 @@ class ClientMethods(ABC):
|
|
|
141
227
|
method=archive_recipes_t.ENDPOINT_METHOD,
|
|
142
228
|
endpoint=archive_recipes_t.ENDPOINT_PATH,
|
|
143
229
|
args=args,
|
|
230
|
+
request_options=_request_options,
|
|
144
231
|
)
|
|
145
232
|
return self.do_request(api_request=api_request, return_type=archive_recipes_t.Data)
|
|
146
233
|
|
|
@@ -149,6 +236,7 @@ class ClientMethods(ABC):
|
|
|
149
236
|
*,
|
|
150
237
|
equipment_key: identifier_t.IdentifierKey,
|
|
151
238
|
material_family_ids: list[base_t.ObjectId],
|
|
239
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
152
240
|
) -> associate_equipment_input_t.Data:
|
|
153
241
|
"""Create or return the input association for equipment
|
|
154
242
|
|
|
@@ -163,6 +251,7 @@ class ClientMethods(ABC):
|
|
|
163
251
|
method=associate_equipment_input_t.ENDPOINT_METHOD,
|
|
164
252
|
endpoint=associate_equipment_input_t.ENDPOINT_PATH,
|
|
165
253
|
args=args,
|
|
254
|
+
request_options=_request_options,
|
|
166
255
|
)
|
|
167
256
|
return self.do_request(api_request=api_request, return_type=associate_equipment_input_t.Data)
|
|
168
257
|
|
|
@@ -170,8 +259,9 @@ class ClientMethods(ABC):
|
|
|
170
259
|
self,
|
|
171
260
|
*,
|
|
172
261
|
recipe_key: identifier_t.IdentifierKey,
|
|
173
|
-
input_key:
|
|
174
|
-
show_in_listings:
|
|
262
|
+
input_key: identifier_t.IdentifierKey | None = None,
|
|
263
|
+
show_in_listings: bool | None = None,
|
|
264
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
175
265
|
) -> associate_recipe_as_input_t.Data:
|
|
176
266
|
"""Create or return the input association for a recipe
|
|
177
267
|
|
|
@@ -188,6 +278,7 @@ class ClientMethods(ABC):
|
|
|
188
278
|
method=associate_recipe_as_input_t.ENDPOINT_METHOD,
|
|
189
279
|
endpoint=associate_recipe_as_input_t.ENDPOINT_PATH,
|
|
190
280
|
args=args,
|
|
281
|
+
request_options=_request_options,
|
|
191
282
|
)
|
|
192
283
|
return self.do_request(api_request=api_request, return_type=associate_recipe_as_input_t.Data)
|
|
193
284
|
|
|
@@ -196,6 +287,7 @@ class ClientMethods(ABC):
|
|
|
196
287
|
*,
|
|
197
288
|
recipe_key: identifier_t.IdentifierKey,
|
|
198
289
|
ingredient_key: identifier_t.IdentifierKey,
|
|
290
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
199
291
|
) -> associate_recipe_as_lot_t.Data:
|
|
200
292
|
"""Create a new lot association for the provided recipe with the provided ingredient
|
|
201
293
|
|
|
@@ -210,13 +302,82 @@ class ClientMethods(ABC):
|
|
|
210
302
|
method=associate_recipe_as_lot_t.ENDPOINT_METHOD,
|
|
211
303
|
endpoint=associate_recipe_as_lot_t.ENDPOINT_PATH,
|
|
212
304
|
args=args,
|
|
305
|
+
request_options=_request_options,
|
|
213
306
|
)
|
|
214
307
|
return self.do_request(api_request=api_request, return_type=associate_recipe_as_lot_t.Data)
|
|
215
308
|
|
|
309
|
+
def clear_recipe_outputs(
|
|
310
|
+
self,
|
|
311
|
+
*,
|
|
312
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
313
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
314
|
+
) -> clear_recipe_outputs_t.Data:
|
|
315
|
+
"""Clears all output values & output metadata for a given recipe
|
|
316
|
+
|
|
317
|
+
:param recipe_key: The identifier of the recipe
|
|
318
|
+
"""
|
|
319
|
+
args = clear_recipe_outputs_t.Arguments(
|
|
320
|
+
recipe_key=recipe_key,
|
|
321
|
+
)
|
|
322
|
+
api_request = APIRequest(
|
|
323
|
+
method=clear_recipe_outputs_t.ENDPOINT_METHOD,
|
|
324
|
+
endpoint=clear_recipe_outputs_t.ENDPOINT_PATH,
|
|
325
|
+
args=args,
|
|
326
|
+
request_options=_request_options,
|
|
327
|
+
)
|
|
328
|
+
return self.do_request(api_request=api_request, return_type=clear_recipe_outputs_t.Data)
|
|
329
|
+
|
|
330
|
+
def complete_async_parse(
|
|
331
|
+
self,
|
|
332
|
+
*,
|
|
333
|
+
parsed_file_data: list[uploader_t.ParsedFileData],
|
|
334
|
+
async_job_key: identifier_t.IdentifierKey,
|
|
335
|
+
upload_destination: generic_upload_t.UploadDestinationRecipe,
|
|
336
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
337
|
+
) -> complete_async_parse_t.Data:
|
|
338
|
+
"""Parses uploaded files asynchronously
|
|
339
|
+
|
|
340
|
+
"""
|
|
341
|
+
args = complete_async_parse_t.Arguments(
|
|
342
|
+
parsed_file_data=parsed_file_data,
|
|
343
|
+
async_job_key=async_job_key,
|
|
344
|
+
upload_destination=upload_destination,
|
|
345
|
+
)
|
|
346
|
+
api_request = APIRequest(
|
|
347
|
+
method=complete_async_parse_t.ENDPOINT_METHOD,
|
|
348
|
+
endpoint=complete_async_parse_t.ENDPOINT_PATH,
|
|
349
|
+
args=args,
|
|
350
|
+
request_options=_request_options,
|
|
351
|
+
)
|
|
352
|
+
return self.do_request(api_request=api_request, return_type=complete_async_parse_t.Data)
|
|
353
|
+
|
|
354
|
+
def complete_async_upload(
|
|
355
|
+
self,
|
|
356
|
+
*,
|
|
357
|
+
async_job_id: base_t.ObjectId,
|
|
358
|
+
file_id: base_t.ObjectId,
|
|
359
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
360
|
+
) -> complete_async_upload_t.Data:
|
|
361
|
+
"""Processes an file id with a given async job id to be uploaded asynchronously
|
|
362
|
+
|
|
363
|
+
"""
|
|
364
|
+
args = complete_async_upload_t.Arguments(
|
|
365
|
+
async_job_id=async_job_id,
|
|
366
|
+
file_id=file_id,
|
|
367
|
+
)
|
|
368
|
+
api_request = APIRequest(
|
|
369
|
+
method=complete_async_upload_t.ENDPOINT_METHOD,
|
|
370
|
+
endpoint=complete_async_upload_t.ENDPOINT_PATH,
|
|
371
|
+
args=args,
|
|
372
|
+
request_options=_request_options,
|
|
373
|
+
)
|
|
374
|
+
return self.do_request(api_request=api_request, return_type=complete_async_upload_t.Data)
|
|
375
|
+
|
|
216
376
|
def convert_chemical_formats(
|
|
217
377
|
self,
|
|
218
378
|
*,
|
|
219
379
|
source_chemical_structures: list[convert_chemical_formats_t.ChemicalStructureFile],
|
|
380
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
220
381
|
) -> convert_chemical_formats_t.Data:
|
|
221
382
|
"""Converts chemical formats, into the format used by Uncountable and usable in other APIs for eg. set_input_attribute_values
|
|
222
383
|
|
|
@@ -228,24 +389,29 @@ class ClientMethods(ABC):
|
|
|
228
389
|
method=convert_chemical_formats_t.ENDPOINT_METHOD,
|
|
229
390
|
endpoint=convert_chemical_formats_t.ENDPOINT_PATH,
|
|
230
391
|
args=args,
|
|
392
|
+
request_options=_request_options,
|
|
231
393
|
)
|
|
232
394
|
return self.do_request(api_request=api_request, return_type=convert_chemical_formats_t.Data)
|
|
233
395
|
|
|
234
396
|
def create_entities(
|
|
235
397
|
self,
|
|
236
398
|
*,
|
|
237
|
-
|
|
238
|
-
entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL]],
|
|
399
|
+
entity_type: entity_t.LimitedEntityType,
|
|
239
400
|
entities_to_create: list[create_entities_t.EntityToCreate],
|
|
401
|
+
definition_id: base_t.ObjectId | None = None,
|
|
402
|
+
definition_key: identifier_t.IdentifierKey | None = None,
|
|
403
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
240
404
|
) -> create_entities_t.Data:
|
|
241
405
|
"""Creates new Uncountable entities
|
|
242
406
|
|
|
243
407
|
:param definition_id: Definition id for the entities to create
|
|
408
|
+
:param definition_key: Key for the definition of the entities to create
|
|
244
409
|
:param entity_type: The type of the entities to create
|
|
245
410
|
:param entities_to_create: A list of the entities to create
|
|
246
411
|
"""
|
|
247
412
|
args = create_entities_t.Arguments(
|
|
248
413
|
definition_id=definition_id,
|
|
414
|
+
definition_key=definition_key,
|
|
249
415
|
entity_type=entity_type,
|
|
250
416
|
entities_to_create=entities_to_create,
|
|
251
417
|
)
|
|
@@ -253,30 +419,39 @@ class ClientMethods(ABC):
|
|
|
253
419
|
method=create_entities_t.ENDPOINT_METHOD,
|
|
254
420
|
endpoint=create_entities_t.ENDPOINT_PATH,
|
|
255
421
|
args=args,
|
|
422
|
+
request_options=_request_options,
|
|
256
423
|
)
|
|
257
424
|
return self.do_request(api_request=api_request, return_type=create_entities_t.Data)
|
|
258
425
|
|
|
259
426
|
def create_entity(
|
|
260
427
|
self,
|
|
261
428
|
*,
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
429
|
+
entity_type: entity_t.LimitedEntityType,
|
|
430
|
+
definition_id: base_t.ObjectId | None = None,
|
|
431
|
+
definition_key: identifier_t.IdentifierKey | None = None,
|
|
432
|
+
field_values: list[field_values_t.FieldRefNameValue] | None = None,
|
|
433
|
+
parent_entity: entity_t.Entity | None = None,
|
|
434
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
265
435
|
) -> create_entity_t.Data:
|
|
266
436
|
"""Creates a new Uncountable entity
|
|
267
437
|
|
|
268
438
|
:param definition_id: Definition id of the entity to create
|
|
439
|
+
:param definition_key: Key for the definition of the entity to create
|
|
269
440
|
:param entity_type: The type of the entities requested
|
|
441
|
+
:param parent_entity: The parent entity associated for this new entity. This only applies if there is a pre-defined relationship.
|
|
270
442
|
"""
|
|
271
443
|
args = create_entity_t.Arguments(
|
|
272
444
|
definition_id=definition_id,
|
|
445
|
+
definition_key=definition_key,
|
|
273
446
|
entity_type=entity_type,
|
|
274
447
|
field_values=field_values,
|
|
448
|
+
parent_entity=parent_entity,
|
|
275
449
|
)
|
|
276
450
|
api_request = APIRequest(
|
|
277
451
|
method=create_entity_t.ENDPOINT_METHOD,
|
|
278
452
|
endpoint=create_entity_t.ENDPOINT_PATH,
|
|
279
453
|
args=args,
|
|
454
|
+
request_options=_request_options,
|
|
280
455
|
)
|
|
281
456
|
return self.do_request(api_request=api_request, return_type=create_entity_t.Data)
|
|
282
457
|
|
|
@@ -284,6 +459,7 @@ class ClientMethods(ABC):
|
|
|
284
459
|
self,
|
|
285
460
|
*,
|
|
286
461
|
inputs_to_create: list[create_inputs_t.InputToCreate],
|
|
462
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
287
463
|
) -> create_inputs_t.Data:
|
|
288
464
|
"""Creates new inputs
|
|
289
465
|
|
|
@@ -296,20 +472,73 @@ class ClientMethods(ABC):
|
|
|
296
472
|
method=create_inputs_t.ENDPOINT_METHOD,
|
|
297
473
|
endpoint=create_inputs_t.ENDPOINT_PATH,
|
|
298
474
|
args=args,
|
|
475
|
+
request_options=_request_options,
|
|
299
476
|
)
|
|
300
477
|
return self.do_request(api_request=api_request, return_type=create_inputs_t.Data)
|
|
301
478
|
|
|
479
|
+
def create_mix_order(
|
|
480
|
+
self,
|
|
481
|
+
*,
|
|
482
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
483
|
+
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
|
|
484
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
485
|
+
) -> create_mix_order_t.Data:
|
|
486
|
+
"""Creates mix order on a recipe workflow step
|
|
487
|
+
|
|
488
|
+
"""
|
|
489
|
+
args = create_mix_order_t.Arguments(
|
|
490
|
+
recipe_key=recipe_key,
|
|
491
|
+
recipe_workflow_step_identifier=recipe_workflow_step_identifier,
|
|
492
|
+
)
|
|
493
|
+
api_request = APIRequest(
|
|
494
|
+
method=create_mix_order_t.ENDPOINT_METHOD,
|
|
495
|
+
endpoint=create_mix_order_t.ENDPOINT_PATH,
|
|
496
|
+
args=args,
|
|
497
|
+
request_options=_request_options,
|
|
498
|
+
)
|
|
499
|
+
return self.do_request(api_request=api_request, return_type=create_mix_order_t.Data)
|
|
500
|
+
|
|
501
|
+
def create_or_update_entity(
|
|
502
|
+
self,
|
|
503
|
+
*,
|
|
504
|
+
entity_type: entity_t.EntityType,
|
|
505
|
+
definition_key: identifier_t.IdentifierKey,
|
|
506
|
+
field_values: list[field_values_t.FieldArgumentValue],
|
|
507
|
+
entity_key: identifier_t.IdentifierKey | None = None,
|
|
508
|
+
on_create_init_field_values: list[field_values_t.FieldArgumentValue] | None = None,
|
|
509
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
510
|
+
) -> create_or_update_entity_t.Data:
|
|
511
|
+
"""Creates or updates field values for an entity
|
|
512
|
+
|
|
513
|
+
:param on_create_init_field_values: Field values set only when the entity is created (will be ignored if entity already exists)
|
|
514
|
+
"""
|
|
515
|
+
args = create_or_update_entity_t.Arguments(
|
|
516
|
+
entity_key=entity_key,
|
|
517
|
+
entity_type=entity_type,
|
|
518
|
+
definition_key=definition_key,
|
|
519
|
+
field_values=field_values,
|
|
520
|
+
on_create_init_field_values=on_create_init_field_values,
|
|
521
|
+
)
|
|
522
|
+
api_request = APIRequest(
|
|
523
|
+
method=create_or_update_entity_t.ENDPOINT_METHOD,
|
|
524
|
+
endpoint=create_or_update_entity_t.ENDPOINT_PATH,
|
|
525
|
+
args=args,
|
|
526
|
+
request_options=_request_options,
|
|
527
|
+
)
|
|
528
|
+
return self.do_request(api_request=api_request, return_type=create_or_update_entity_t.Data)
|
|
529
|
+
|
|
302
530
|
def create_recipe(
|
|
303
531
|
self,
|
|
304
532
|
*,
|
|
305
533
|
material_family_id: base_t.ObjectId,
|
|
306
534
|
workflow_id: base_t.ObjectId,
|
|
307
|
-
name:
|
|
308
|
-
project_id:
|
|
309
|
-
workflow_variant_id:
|
|
310
|
-
recipe_metadata:
|
|
311
|
-
identifiers:
|
|
312
|
-
definition_key:
|
|
535
|
+
name: str | None = None,
|
|
536
|
+
project_id: base_t.ObjectId | None = None,
|
|
537
|
+
workflow_variant_id: base_t.ObjectId | None = None,
|
|
538
|
+
recipe_metadata: list[recipe_metadata_t.MetadataValue] | None = None,
|
|
539
|
+
identifiers: recipe_identifiers_t.RecipeIdentifiers | None = None,
|
|
540
|
+
definition_key: identifier_t.IdentifierKey | None = None,
|
|
541
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
313
542
|
) -> create_recipe_t.Data:
|
|
314
543
|
"""Returns the id of the recipe being created.
|
|
315
544
|
|
|
@@ -336,6 +565,7 @@ class ClientMethods(ABC):
|
|
|
336
565
|
method=create_recipe_t.ENDPOINT_METHOD,
|
|
337
566
|
endpoint=create_recipe_t.ENDPOINT_PATH,
|
|
338
567
|
args=args,
|
|
568
|
+
request_options=_request_options,
|
|
339
569
|
)
|
|
340
570
|
return self.do_request(api_request=api_request, return_type=create_recipe_t.Data)
|
|
341
571
|
|
|
@@ -344,8 +574,9 @@ class ClientMethods(ABC):
|
|
|
344
574
|
*,
|
|
345
575
|
recipe_from_key: identifier_t.IdentifierKey,
|
|
346
576
|
recipe_to_key: identifier_t.IdentifierKey,
|
|
347
|
-
link_type: typing.
|
|
348
|
-
name: str,
|
|
577
|
+
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],
|
|
578
|
+
name: str | None = None,
|
|
579
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
349
580
|
) -> create_recipe_link_t.Data:
|
|
350
581
|
"""Create a link between two recipes. Skip if the link already exists
|
|
351
582
|
|
|
@@ -364,6 +595,7 @@ class ClientMethods(ABC):
|
|
|
364
595
|
method=create_recipe_link_t.ENDPOINT_METHOD,
|
|
365
596
|
endpoint=create_recipe_link_t.ENDPOINT_PATH,
|
|
366
597
|
args=args,
|
|
598
|
+
request_options=_request_options,
|
|
367
599
|
)
|
|
368
600
|
return self.do_request(api_request=api_request, return_type=create_recipe_link_t.Data)
|
|
369
601
|
|
|
@@ -372,9 +604,10 @@ class ClientMethods(ABC):
|
|
|
372
604
|
*,
|
|
373
605
|
material_family_id: base_t.ObjectId,
|
|
374
606
|
recipe_definitions: list[create_recipes_t.CreateRecipeDefinition],
|
|
375
|
-
project_id:
|
|
607
|
+
project_id: base_t.ObjectId | None = None,
|
|
608
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
376
609
|
) -> create_recipes_t.Data:
|
|
377
|
-
"""
|
|
610
|
+
"""Creates recipes in Uncountable, optionally with metadata values, and returns the resulting ids in corresponding order
|
|
378
611
|
|
|
379
612
|
:param material_family_id: The identifier of the material family to create the recipes in
|
|
380
613
|
:param project_id: The identifier of the project to create the recipes in
|
|
@@ -388,6 +621,7 @@ class ClientMethods(ABC):
|
|
|
388
621
|
method=create_recipes_t.ENDPOINT_METHOD,
|
|
389
622
|
endpoint=create_recipes_t.ENDPOINT_PATH,
|
|
390
623
|
args=args,
|
|
624
|
+
request_options=_request_options,
|
|
391
625
|
)
|
|
392
626
|
return self.do_request(api_request=api_request, return_type=create_recipes_t.Data)
|
|
393
627
|
|
|
@@ -395,6 +629,7 @@ class ClientMethods(ABC):
|
|
|
395
629
|
self,
|
|
396
630
|
*,
|
|
397
631
|
recipe_key: identifier_t.IdentifierKey,
|
|
632
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
398
633
|
) -> disassociate_recipe_as_input_t.Data:
|
|
399
634
|
"""Remove any association between a recipe and ingredients
|
|
400
635
|
|
|
@@ -407,6 +642,7 @@ class ClientMethods(ABC):
|
|
|
407
642
|
method=disassociate_recipe_as_input_t.ENDPOINT_METHOD,
|
|
408
643
|
endpoint=disassociate_recipe_as_input_t.ENDPOINT_PATH,
|
|
409
644
|
args=args,
|
|
645
|
+
request_options=_request_options,
|
|
410
646
|
)
|
|
411
647
|
return self.do_request(api_request=api_request, return_type=disassociate_recipe_as_input_t.Data)
|
|
412
648
|
|
|
@@ -416,6 +652,7 @@ class ClientMethods(ABC):
|
|
|
416
652
|
recipe_key: identifier_t.IdentifierKey,
|
|
417
653
|
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
|
|
418
654
|
edits: list[edit_recipe_inputs_t.RecipeInputEdit],
|
|
655
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
419
656
|
) -> edit_recipe_inputs_t.Data:
|
|
420
657
|
"""Clear, update, or add inputs on a recipe
|
|
421
658
|
|
|
@@ -430,6 +667,7 @@ class ClientMethods(ABC):
|
|
|
430
667
|
method=edit_recipe_inputs_t.ENDPOINT_METHOD,
|
|
431
668
|
endpoint=edit_recipe_inputs_t.ENDPOINT_PATH,
|
|
432
669
|
args=args,
|
|
670
|
+
request_options=_request_options,
|
|
433
671
|
)
|
|
434
672
|
return self.do_request(api_request=api_request, return_type=edit_recipe_inputs_t.Data)
|
|
435
673
|
|
|
@@ -437,6 +675,7 @@ class ClientMethods(ABC):
|
|
|
437
675
|
self,
|
|
438
676
|
*,
|
|
439
677
|
requests: list[execute_batch_t.BatchRequest],
|
|
678
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
440
679
|
) -> execute_batch_t.Data:
|
|
441
680
|
"""Run multiple API calls via one request
|
|
442
681
|
|
|
@@ -448,6 +687,7 @@ class ClientMethods(ABC):
|
|
|
448
687
|
method=execute_batch_t.ENDPOINT_METHOD,
|
|
449
688
|
endpoint=execute_batch_t.ENDPOINT_PATH,
|
|
450
689
|
args=args,
|
|
690
|
+
request_options=_request_options,
|
|
451
691
|
)
|
|
452
692
|
return self.do_request(api_request=api_request, return_type=execute_batch_t.Data)
|
|
453
693
|
|
|
@@ -455,6 +695,7 @@ class ClientMethods(ABC):
|
|
|
455
695
|
self,
|
|
456
696
|
*,
|
|
457
697
|
requests: list[async_batch_t.AsyncBatchRequest],
|
|
698
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
458
699
|
) -> execute_batch_load_async_t.Data:
|
|
459
700
|
"""Run multiple API calls via one request
|
|
460
701
|
|
|
@@ -466,14 +707,120 @@ class ClientMethods(ABC):
|
|
|
466
707
|
method=execute_batch_load_async_t.ENDPOINT_METHOD,
|
|
467
708
|
endpoint=execute_batch_load_async_t.ENDPOINT_PATH,
|
|
468
709
|
args=args,
|
|
710
|
+
request_options=_request_options,
|
|
469
711
|
)
|
|
470
712
|
return self.do_request(api_request=api_request, return_type=execute_batch_load_async_t.Data)
|
|
471
713
|
|
|
714
|
+
def export_entities(
|
|
715
|
+
self,
|
|
716
|
+
*,
|
|
717
|
+
config_key: identifier_t.IdentifierKey,
|
|
718
|
+
type: exports_t.ExportType = exports_t.ExportType.EXCEL,
|
|
719
|
+
client_timezone: exports_t.ListingExportUserTimezone | None = None,
|
|
720
|
+
limit: int | None = None,
|
|
721
|
+
attributes: list[export_entities_t.ListingAttribute] | None = None,
|
|
722
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
723
|
+
) -> export_entities_t.Data:
|
|
724
|
+
"""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.
|
|
725
|
+
|
|
726
|
+
:param config_key: The configuration reference for the listing config
|
|
727
|
+
:param limit: The number of data points to return. If not filled in, all filtered entities will be included in the export.
|
|
728
|
+
"""
|
|
729
|
+
args = export_entities_t.Arguments(
|
|
730
|
+
config_key=config_key,
|
|
731
|
+
client_timezone=client_timezone,
|
|
732
|
+
limit=limit,
|
|
733
|
+
type=type,
|
|
734
|
+
attributes=attributes,
|
|
735
|
+
)
|
|
736
|
+
api_request = APIRequest(
|
|
737
|
+
method=export_entities_t.ENDPOINT_METHOD,
|
|
738
|
+
endpoint=export_entities_t.ENDPOINT_PATH,
|
|
739
|
+
args=args,
|
|
740
|
+
request_options=_request_options,
|
|
741
|
+
)
|
|
742
|
+
return self.do_request(api_request=api_request, return_type=export_entities_t.Data)
|
|
743
|
+
|
|
744
|
+
def fetch_listing(
|
|
745
|
+
self,
|
|
746
|
+
*,
|
|
747
|
+
entity_type: entity_t.EntityType,
|
|
748
|
+
columns: list[listing_t.ColumnIdentifier],
|
|
749
|
+
filters: structured_filters_t.FilterNode | None = None,
|
|
750
|
+
limit: int | None = None,
|
|
751
|
+
offset: int | None = None,
|
|
752
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
753
|
+
) -> fetch_listing_t.Data:
|
|
754
|
+
"""External API for fetching a listing based on some structured columns and filters
|
|
755
|
+
|
|
756
|
+
:param entity_type: The entity type to fetch listing entries for
|
|
757
|
+
:param columns: The columns to include in the results
|
|
758
|
+
:param filters: Structured filters to apply to the listing, represented by a FilterNode object
|
|
759
|
+
:param limit: The number of entries to return. If not provided, defaults to 100. Note a maximum of 100 entries can be returned.
|
|
760
|
+
:param offset: The number of entries to skip for pagination
|
|
761
|
+
"""
|
|
762
|
+
args = fetch_listing_t.Arguments(
|
|
763
|
+
entity_type=entity_type,
|
|
764
|
+
columns=columns,
|
|
765
|
+
filters=filters,
|
|
766
|
+
limit=limit,
|
|
767
|
+
offset=offset,
|
|
768
|
+
)
|
|
769
|
+
api_request = APIRequest(
|
|
770
|
+
method=fetch_listing_t.ENDPOINT_METHOD,
|
|
771
|
+
endpoint=fetch_listing_t.ENDPOINT_PATH,
|
|
772
|
+
args=args,
|
|
773
|
+
request_options=_request_options,
|
|
774
|
+
)
|
|
775
|
+
return self.do_request(api_request=api_request, return_type=fetch_listing_t.Data)
|
|
776
|
+
|
|
777
|
+
def get_column_calculation_values(
|
|
778
|
+
self,
|
|
779
|
+
*,
|
|
780
|
+
recipe_keys: list[identifier_t.IdentifierKey],
|
|
781
|
+
calculation_key: identifier_t.IdentifierKey,
|
|
782
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
783
|
+
) -> get_column_calculation_values_t.Data:
|
|
784
|
+
"""Get the values for a column calculations for recipes
|
|
785
|
+
|
|
786
|
+
:param recipe_keys: Required: The recipe keys to load values for
|
|
787
|
+
:param calculation_key: Required: The calculation key to get the values for
|
|
788
|
+
"""
|
|
789
|
+
args = get_column_calculation_values_t.Arguments(
|
|
790
|
+
recipe_keys=recipe_keys,
|
|
791
|
+
calculation_key=calculation_key,
|
|
792
|
+
)
|
|
793
|
+
api_request = APIRequest(
|
|
794
|
+
method=get_column_calculation_values_t.ENDPOINT_METHOD,
|
|
795
|
+
endpoint=get_column_calculation_values_t.ENDPOINT_PATH,
|
|
796
|
+
args=args,
|
|
797
|
+
request_options=_request_options,
|
|
798
|
+
)
|
|
799
|
+
return self.do_request(api_request=api_request, return_type=get_column_calculation_values_t.Data)
|
|
800
|
+
|
|
801
|
+
def get_current_user_info(
|
|
802
|
+
self,
|
|
803
|
+
*,
|
|
804
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
805
|
+
) -> get_current_user_info_t.Data:
|
|
806
|
+
"""Return information about the current user
|
|
807
|
+
|
|
808
|
+
"""
|
|
809
|
+
args = get_current_user_info_t.Arguments()
|
|
810
|
+
api_request = APIRequest(
|
|
811
|
+
method=get_current_user_info_t.ENDPOINT_METHOD,
|
|
812
|
+
endpoint=get_current_user_info_t.ENDPOINT_PATH,
|
|
813
|
+
args=args,
|
|
814
|
+
request_options=_request_options,
|
|
815
|
+
)
|
|
816
|
+
return self.do_request(api_request=api_request, return_type=get_current_user_info_t.Data)
|
|
817
|
+
|
|
472
818
|
def get_curve(
|
|
473
819
|
self,
|
|
474
820
|
*,
|
|
475
|
-
recipe_output_id:
|
|
476
|
-
recipe_input_id:
|
|
821
|
+
recipe_output_id: base_t.ObjectId | None = None,
|
|
822
|
+
recipe_input_id: base_t.ObjectId | None = None,
|
|
823
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
477
824
|
) -> get_curve_t.Data:
|
|
478
825
|
"""Returns an array of values for the specified curve id.
|
|
479
826
|
|
|
@@ -488,6 +835,7 @@ class ClientMethods(ABC):
|
|
|
488
835
|
method=get_curve_t.ENDPOINT_METHOD,
|
|
489
836
|
endpoint=get_curve_t.ENDPOINT_PATH,
|
|
490
837
|
args=args,
|
|
838
|
+
request_options=_request_options,
|
|
491
839
|
)
|
|
492
840
|
return self.do_request(api_request=api_request, return_type=get_curve_t.Data)
|
|
493
841
|
|
|
@@ -496,6 +844,7 @@ class ClientMethods(ABC):
|
|
|
496
844
|
*,
|
|
497
845
|
entity_ids: list[base_t.ObjectId],
|
|
498
846
|
entity_type: entity_t.EntityType,
|
|
847
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
499
848
|
) -> get_entities_data_t.Data:
|
|
500
849
|
"""Gets the details for a passed entity
|
|
501
850
|
|
|
@@ -510,6 +859,7 @@ class ClientMethods(ABC):
|
|
|
510
859
|
method=get_entities_data_t.ENDPOINT_METHOD,
|
|
511
860
|
endpoint=get_entities_data_t.ENDPOINT_PATH,
|
|
512
861
|
args=args,
|
|
862
|
+
request_options=_request_options,
|
|
513
863
|
)
|
|
514
864
|
return self.do_request(api_request=api_request, return_type=get_entities_data_t.Data)
|
|
515
865
|
|
|
@@ -517,10 +867,11 @@ class ClientMethods(ABC):
|
|
|
517
867
|
self,
|
|
518
868
|
*,
|
|
519
869
|
material_family_id: base_t.ObjectId,
|
|
520
|
-
input_ids:
|
|
521
|
-
is_parameter:
|
|
522
|
-
offset:
|
|
523
|
-
limit:
|
|
870
|
+
input_ids: list[base_t.ObjectId] | None,
|
|
871
|
+
is_parameter: bool | None,
|
|
872
|
+
offset: int | None = None,
|
|
873
|
+
limit: int | None = None,
|
|
874
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
524
875
|
) -> get_input_data_t.Data:
|
|
525
876
|
"""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
|
|
526
877
|
|
|
@@ -541,6 +892,7 @@ class ClientMethods(ABC):
|
|
|
541
892
|
method=get_input_data_t.ENDPOINT_METHOD,
|
|
542
893
|
endpoint=get_input_data_t.ENDPOINT_PATH,
|
|
543
894
|
args=args,
|
|
895
|
+
request_options=_request_options,
|
|
544
896
|
)
|
|
545
897
|
return self.do_request(api_request=api_request, return_type=get_input_data_t.Data)
|
|
546
898
|
|
|
@@ -548,6 +900,7 @@ class ClientMethods(ABC):
|
|
|
548
900
|
self,
|
|
549
901
|
*,
|
|
550
902
|
material_family_id: base_t.ObjectId,
|
|
903
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
551
904
|
) -> get_input_group_names_t.Data:
|
|
552
905
|
"""Gets the name of all input groups in a material family that either the user created, or are shared to all users.
|
|
553
906
|
|
|
@@ -560,6 +913,7 @@ class ClientMethods(ABC):
|
|
|
560
913
|
method=get_input_group_names_t.ENDPOINT_METHOD,
|
|
561
914
|
endpoint=get_input_group_names_t.ENDPOINT_PATH,
|
|
562
915
|
args=args,
|
|
916
|
+
request_options=_request_options,
|
|
563
917
|
)
|
|
564
918
|
return self.do_request(api_request=api_request, return_type=get_input_group_names_t.Data)
|
|
565
919
|
|
|
@@ -567,9 +921,10 @@ class ClientMethods(ABC):
|
|
|
567
921
|
self,
|
|
568
922
|
*,
|
|
569
923
|
material_family_id: base_t.ObjectId,
|
|
570
|
-
is_parameter:
|
|
571
|
-
offset:
|
|
572
|
-
limit:
|
|
924
|
+
is_parameter: bool | None,
|
|
925
|
+
offset: int | None = None,
|
|
926
|
+
limit: int | None = None,
|
|
927
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
573
928
|
) -> get_input_names_t.Data:
|
|
574
929
|
"""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
|
|
575
930
|
|
|
@@ -588,6 +943,7 @@ class ClientMethods(ABC):
|
|
|
588
943
|
method=get_input_names_t.ENDPOINT_METHOD,
|
|
589
944
|
endpoint=get_input_names_t.ENDPOINT_PATH,
|
|
590
945
|
args=args,
|
|
946
|
+
request_options=_request_options,
|
|
591
947
|
)
|
|
592
948
|
return self.do_request(api_request=api_request, return_type=get_input_names_t.Data)
|
|
593
949
|
|
|
@@ -595,6 +951,7 @@ class ClientMethods(ABC):
|
|
|
595
951
|
self,
|
|
596
952
|
*,
|
|
597
953
|
input_ids: list[base_t.ObjectId],
|
|
954
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
598
955
|
) -> get_inputs_data_t.Data:
|
|
599
956
|
"""Gets the details for passed input ids
|
|
600
957
|
|
|
@@ -607,6 +964,7 @@ class ClientMethods(ABC):
|
|
|
607
964
|
method=get_inputs_data_t.ENDPOINT_METHOD,
|
|
608
965
|
endpoint=get_inputs_data_t.ENDPOINT_PATH,
|
|
609
966
|
args=args,
|
|
967
|
+
request_options=_request_options,
|
|
610
968
|
)
|
|
611
969
|
return self.do_request(api_request=api_request, return_type=get_inputs_data_t.Data)
|
|
612
970
|
|
|
@@ -614,9 +972,10 @@ class ClientMethods(ABC):
|
|
|
614
972
|
self,
|
|
615
973
|
*,
|
|
616
974
|
material_family_id: base_t.ObjectId,
|
|
617
|
-
output_ids:
|
|
618
|
-
offset:
|
|
619
|
-
limit:
|
|
975
|
+
output_ids: list[base_t.ObjectId] | None = None,
|
|
976
|
+
offset: int | None = None,
|
|
977
|
+
limit: int | None = None,
|
|
978
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
620
979
|
) -> get_output_data_t.Data:
|
|
621
980
|
"""Gets the attribute, categorization and other metadata associated with a set of outputs
|
|
622
981
|
|
|
@@ -635,6 +994,7 @@ class ClientMethods(ABC):
|
|
|
635
994
|
method=get_output_data_t.ENDPOINT_METHOD,
|
|
636
995
|
endpoint=get_output_data_t.ENDPOINT_PATH,
|
|
637
996
|
args=args,
|
|
997
|
+
request_options=_request_options,
|
|
638
998
|
)
|
|
639
999
|
return self.do_request(api_request=api_request, return_type=get_output_data_t.Data)
|
|
640
1000
|
|
|
@@ -642,8 +1002,9 @@ class ClientMethods(ABC):
|
|
|
642
1002
|
self,
|
|
643
1003
|
*,
|
|
644
1004
|
material_family_id: base_t.ObjectId,
|
|
645
|
-
offset:
|
|
646
|
-
limit:
|
|
1005
|
+
offset: int | None = None,
|
|
1006
|
+
limit: int | None = None,
|
|
1007
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
647
1008
|
) -> get_output_names_t.Data:
|
|
648
1009
|
"""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
|
|
649
1010
|
|
|
@@ -660,6 +1021,7 @@ class ClientMethods(ABC):
|
|
|
660
1021
|
method=get_output_names_t.ENDPOINT_METHOD,
|
|
661
1022
|
endpoint=get_output_names_t.ENDPOINT_PATH,
|
|
662
1023
|
args=args,
|
|
1024
|
+
request_options=_request_options,
|
|
663
1025
|
)
|
|
664
1026
|
return self.do_request(api_request=api_request, return_type=get_output_names_t.Data)
|
|
665
1027
|
|
|
@@ -667,7 +1029,8 @@ class ClientMethods(ABC):
|
|
|
667
1029
|
self,
|
|
668
1030
|
*,
|
|
669
1031
|
all_material_families: bool,
|
|
670
|
-
material_family_id:
|
|
1032
|
+
material_family_id: base_t.ObjectId | None,
|
|
1033
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
671
1034
|
) -> get_projects_t.Data:
|
|
672
1035
|
"""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
|
|
673
1036
|
|
|
@@ -682,6 +1045,7 @@ class ClientMethods(ABC):
|
|
|
682
1045
|
method=get_projects_t.ENDPOINT_METHOD,
|
|
683
1046
|
endpoint=get_projects_t.ENDPOINT_PATH,
|
|
684
1047
|
args=args,
|
|
1048
|
+
request_options=_request_options,
|
|
685
1049
|
)
|
|
686
1050
|
return self.do_request(api_request=api_request, return_type=get_projects_t.Data)
|
|
687
1051
|
|
|
@@ -689,8 +1053,9 @@ class ClientMethods(ABC):
|
|
|
689
1053
|
self,
|
|
690
1054
|
*,
|
|
691
1055
|
project_ids: list[base_t.ObjectId],
|
|
692
|
-
offset:
|
|
693
|
-
limit:
|
|
1056
|
+
offset: int | None = None,
|
|
1057
|
+
limit: int | None = None,
|
|
1058
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
694
1059
|
) -> get_projects_data_t.Data:
|
|
695
1060
|
"""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
|
|
696
1061
|
|
|
@@ -707,6 +1072,7 @@ class ClientMethods(ABC):
|
|
|
707
1072
|
method=get_projects_data_t.ENDPOINT_METHOD,
|
|
708
1073
|
endpoint=get_projects_data_t.ENDPOINT_PATH,
|
|
709
1074
|
args=args,
|
|
1075
|
+
request_options=_request_options,
|
|
710
1076
|
)
|
|
711
1077
|
return self.do_request(api_request=api_request, return_type=get_projects_data_t.Data)
|
|
712
1078
|
|
|
@@ -714,7 +1080,8 @@ class ClientMethods(ABC):
|
|
|
714
1080
|
self,
|
|
715
1081
|
*,
|
|
716
1082
|
recipe_ids: list[base_t.ObjectId],
|
|
717
|
-
calculation_ids:
|
|
1083
|
+
calculation_ids: list[base_t.ObjectId] | None = None,
|
|
1084
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
718
1085
|
) -> get_recipe_calculations_t.Data:
|
|
719
1086
|
"""Gets the calculations for the passed recipes
|
|
720
1087
|
|
|
@@ -729,6 +1096,7 @@ class ClientMethods(ABC):
|
|
|
729
1096
|
method=get_recipe_calculations_t.ENDPOINT_METHOD,
|
|
730
1097
|
endpoint=get_recipe_calculations_t.ENDPOINT_PATH,
|
|
731
1098
|
args=args,
|
|
1099
|
+
request_options=_request_options,
|
|
732
1100
|
)
|
|
733
1101
|
return self.do_request(api_request=api_request, return_type=get_recipe_calculations_t.Data)
|
|
734
1102
|
|
|
@@ -737,7 +1105,8 @@ class ClientMethods(ABC):
|
|
|
737
1105
|
*,
|
|
738
1106
|
recipe_ids: list[base_t.ObjectId],
|
|
739
1107
|
depth: int = 1,
|
|
740
|
-
link_types:
|
|
1108
|
+
link_types: list[recipe_links_t.RecipeLinkType] | None,
|
|
1109
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
741
1110
|
) -> get_recipe_links_t.Data:
|
|
742
1111
|
"""Gets the links for the passed recipes
|
|
743
1112
|
|
|
@@ -754,6 +1123,7 @@ class ClientMethods(ABC):
|
|
|
754
1123
|
method=get_recipe_links_t.ENDPOINT_METHOD,
|
|
755
1124
|
endpoint=get_recipe_links_t.ENDPOINT_PATH,
|
|
756
1125
|
args=args,
|
|
1126
|
+
request_options=_request_options,
|
|
757
1127
|
)
|
|
758
1128
|
return self.do_request(api_request=api_request, return_type=get_recipe_links_t.Data)
|
|
759
1129
|
|
|
@@ -761,9 +1131,10 @@ class ClientMethods(ABC):
|
|
|
761
1131
|
self,
|
|
762
1132
|
*,
|
|
763
1133
|
material_family_id: base_t.ObjectId,
|
|
764
|
-
recipe_metadata_ids:
|
|
765
|
-
offset:
|
|
766
|
-
limit:
|
|
1134
|
+
recipe_metadata_ids: list[base_t.ObjectId] | None,
|
|
1135
|
+
offset: int | None = None,
|
|
1136
|
+
limit: int | None = None,
|
|
1137
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
767
1138
|
) -> get_recipe_metadata_data_t.Data:
|
|
768
1139
|
"""Gets the recipe metadata. Recipe metadata is data associated with experiments that is not an input, output or calculation, such as a sample ID.
|
|
769
1140
|
|
|
@@ -782,6 +1153,7 @@ class ClientMethods(ABC):
|
|
|
782
1153
|
method=get_recipe_metadata_data_t.ENDPOINT_METHOD,
|
|
783
1154
|
endpoint=get_recipe_metadata_data_t.ENDPOINT_PATH,
|
|
784
1155
|
args=args,
|
|
1156
|
+
request_options=_request_options,
|
|
785
1157
|
)
|
|
786
1158
|
return self.do_request(api_request=api_request, return_type=get_recipe_metadata_data_t.Data)
|
|
787
1159
|
|
|
@@ -789,6 +1161,7 @@ class ClientMethods(ABC):
|
|
|
789
1161
|
self,
|
|
790
1162
|
*,
|
|
791
1163
|
project_id: base_t.ObjectId,
|
|
1164
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
792
1165
|
) -> get_recipe_names_t.Data:
|
|
793
1166
|
"""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
|
|
794
1167
|
|
|
@@ -801,6 +1174,7 @@ class ClientMethods(ABC):
|
|
|
801
1174
|
method=get_recipe_names_t.ENDPOINT_METHOD,
|
|
802
1175
|
endpoint=get_recipe_names_t.ENDPOINT_PATH,
|
|
803
1176
|
args=args,
|
|
1177
|
+
request_options=_request_options,
|
|
804
1178
|
)
|
|
805
1179
|
return self.do_request(api_request=api_request, return_type=get_recipe_names_t.Data)
|
|
806
1180
|
|
|
@@ -808,6 +1182,7 @@ class ClientMethods(ABC):
|
|
|
808
1182
|
self,
|
|
809
1183
|
*,
|
|
810
1184
|
recipe_output_ids: list[base_t.ObjectId],
|
|
1185
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
811
1186
|
) -> get_recipe_output_metadata_t.Data:
|
|
812
1187
|
"""Gets the metadata values for the passed recipe outputs
|
|
813
1188
|
|
|
@@ -820,16 +1195,19 @@ class ClientMethods(ABC):
|
|
|
820
1195
|
method=get_recipe_output_metadata_t.ENDPOINT_METHOD,
|
|
821
1196
|
endpoint=get_recipe_output_metadata_t.ENDPOINT_PATH,
|
|
822
1197
|
args=args,
|
|
1198
|
+
request_options=_request_options,
|
|
823
1199
|
)
|
|
824
1200
|
return self.do_request(api_request=api_request, return_type=get_recipe_output_metadata_t.Data)
|
|
825
1201
|
|
|
826
1202
|
def get_recipes_data(
|
|
827
1203
|
self,
|
|
828
1204
|
*,
|
|
829
|
-
recipe_ids:
|
|
830
|
-
project_id:
|
|
831
|
-
offset:
|
|
832
|
-
limit:
|
|
1205
|
+
recipe_ids: list[base_t.ObjectId] | None = None,
|
|
1206
|
+
project_id: base_t.ObjectId | None = None,
|
|
1207
|
+
offset: int | None = None,
|
|
1208
|
+
limit: int | None = None,
|
|
1209
|
+
empty_output_behavior: get_recipes_data_t.RecipeOutputInclusion | None = None,
|
|
1210
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
833
1211
|
) -> get_recipes_data_t.Data:
|
|
834
1212
|
"""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
|
|
835
1213
|
|
|
@@ -837,52 +1215,120 @@ class ClientMethods(ABC):
|
|
|
837
1215
|
:param project_id: The projects to get the data from. Either these or recipe_ids must be filled in
|
|
838
1216
|
:param offset: Used for pagination. All pagination is done in order of Recipe ID. [Pagination More Info](#pagination)
|
|
839
1217
|
: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)
|
|
1218
|
+
: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.
|
|
840
1219
|
"""
|
|
841
1220
|
args = get_recipes_data_t.Arguments(
|
|
842
1221
|
recipe_ids=recipe_ids,
|
|
843
1222
|
project_id=project_id,
|
|
844
1223
|
offset=offset,
|
|
845
1224
|
limit=limit,
|
|
1225
|
+
empty_output_behavior=empty_output_behavior,
|
|
846
1226
|
)
|
|
847
1227
|
api_request = APIRequest(
|
|
848
1228
|
method=get_recipes_data_t.ENDPOINT_METHOD,
|
|
849
1229
|
endpoint=get_recipes_data_t.ENDPOINT_PATH,
|
|
850
1230
|
args=args,
|
|
1231
|
+
request_options=_request_options,
|
|
851
1232
|
)
|
|
852
1233
|
return self.do_request(api_request=api_request, return_type=get_recipes_data_t.Data)
|
|
853
1234
|
|
|
1235
|
+
def grant_entity_permissions(
|
|
1236
|
+
self,
|
|
1237
|
+
*,
|
|
1238
|
+
entity_type: entity_t.LimitedEntityType,
|
|
1239
|
+
entity_key: identifier_t.IdentifierKey,
|
|
1240
|
+
permission_types: list[entity_t.GrantableEntityPermissionType],
|
|
1241
|
+
user_keys: list[identifier_t.IdentifierKey] | None = None,
|
|
1242
|
+
user_group_keys: list[identifier_t.IdentifierKey] | None = None,
|
|
1243
|
+
all_users: bool | None = None,
|
|
1244
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1245
|
+
) -> grant_entity_permissions_t.Data:
|
|
1246
|
+
"""Grant entity permissions to a list of users or user groups or to all users.
|
|
1247
|
+
|
|
1248
|
+
"""
|
|
1249
|
+
args = grant_entity_permissions_t.Arguments(
|
|
1250
|
+
entity_type=entity_type,
|
|
1251
|
+
entity_key=entity_key,
|
|
1252
|
+
permission_types=permission_types,
|
|
1253
|
+
user_keys=user_keys,
|
|
1254
|
+
user_group_keys=user_group_keys,
|
|
1255
|
+
all_users=all_users,
|
|
1256
|
+
)
|
|
1257
|
+
api_request = APIRequest(
|
|
1258
|
+
method=grant_entity_permissions_t.ENDPOINT_METHOD,
|
|
1259
|
+
endpoint=grant_entity_permissions_t.ENDPOINT_PATH,
|
|
1260
|
+
args=args,
|
|
1261
|
+
request_options=_request_options,
|
|
1262
|
+
)
|
|
1263
|
+
return self.do_request(api_request=api_request, return_type=grant_entity_permissions_t.Data)
|
|
1264
|
+
|
|
854
1265
|
def invoke_uploader(
|
|
855
1266
|
self,
|
|
856
1267
|
*,
|
|
857
|
-
file_id: base_t.ObjectId,
|
|
858
1268
|
uploader_key: identifier_t.IdentifierKey,
|
|
859
|
-
|
|
860
|
-
|
|
1269
|
+
destination: generic_upload_t.UploadDestination,
|
|
1270
|
+
file_id: base_t.ObjectId | None = None,
|
|
1271
|
+
file_ids: list[base_t.ObjectId] | None = None,
|
|
1272
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
861
1273
|
) -> invoke_uploader_t.Data:
|
|
862
1274
|
"""Runs a file through an uploader.
|
|
863
1275
|
|
|
1276
|
+
:param file_id: DEPRECATED: use file_ids
|
|
864
1277
|
"""
|
|
865
1278
|
args = invoke_uploader_t.Arguments(
|
|
866
1279
|
file_id=file_id,
|
|
1280
|
+
file_ids=file_ids,
|
|
867
1281
|
uploader_key=uploader_key,
|
|
868
|
-
|
|
869
|
-
recipe_key=recipe_key,
|
|
1282
|
+
destination=destination,
|
|
870
1283
|
)
|
|
871
1284
|
api_request = APIRequest(
|
|
872
1285
|
method=invoke_uploader_t.ENDPOINT_METHOD,
|
|
873
1286
|
endpoint=invoke_uploader_t.ENDPOINT_PATH,
|
|
874
1287
|
args=args,
|
|
1288
|
+
request_options=_request_options,
|
|
875
1289
|
)
|
|
876
1290
|
return self.do_request(api_request=api_request, return_type=invoke_uploader_t.Data)
|
|
877
1291
|
|
|
1292
|
+
def list_aggregate(
|
|
1293
|
+
self,
|
|
1294
|
+
*,
|
|
1295
|
+
config_reference: str,
|
|
1296
|
+
attribute_values: list[list_aggregate_t.AttributeValue] | None = None,
|
|
1297
|
+
offset: int | None = None,
|
|
1298
|
+
limit: int | None = None,
|
|
1299
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1300
|
+
) -> list_aggregate_t.Data:
|
|
1301
|
+
"""Uses a structured loading configuration to list aggregated data from the platform
|
|
1302
|
+
|
|
1303
|
+
:param config_reference: The configuration reference name for the listing config
|
|
1304
|
+
:param attribute_values: Attributes to pass to the configuration for parameterizing filters
|
|
1305
|
+
:param offset: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
|
|
1306
|
+
: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)
|
|
1307
|
+
"""
|
|
1308
|
+
args = list_aggregate_t.Arguments(
|
|
1309
|
+
config_reference=config_reference,
|
|
1310
|
+
attribute_values=attribute_values,
|
|
1311
|
+
offset=offset,
|
|
1312
|
+
limit=limit,
|
|
1313
|
+
)
|
|
1314
|
+
api_request = APIRequest(
|
|
1315
|
+
method=list_aggregate_t.ENDPOINT_METHOD,
|
|
1316
|
+
endpoint=list_aggregate_t.ENDPOINT_PATH,
|
|
1317
|
+
args=args,
|
|
1318
|
+
request_options=_request_options,
|
|
1319
|
+
)
|
|
1320
|
+
return self.do_request(api_request=api_request, return_type=list_aggregate_t.Data)
|
|
1321
|
+
|
|
878
1322
|
def list_entities(
|
|
879
1323
|
self,
|
|
880
1324
|
*,
|
|
881
1325
|
config_reference: str,
|
|
882
|
-
entity_type:
|
|
883
|
-
attributes:
|
|
884
|
-
offset:
|
|
885
|
-
limit:
|
|
1326
|
+
entity_type: entity_t.EntityType | None = None,
|
|
1327
|
+
attributes: dict[OpaqueKey, base_t.JsonValue] | None = None,
|
|
1328
|
+
offset: int | None = None,
|
|
1329
|
+
limit: int | None = None,
|
|
1330
|
+
additional_filter_configs: list[list_entities_t.AdditionalFilterConfig] | None = None,
|
|
1331
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
886
1332
|
) -> list_entities_t.Data:
|
|
887
1333
|
"""Uses a structured loading configuration to list entities in the system
|
|
888
1334
|
|
|
@@ -891,6 +1337,7 @@ class ClientMethods(ABC):
|
|
|
891
1337
|
:param attributes: Attributes to pass to the configuration for parameterizing filters
|
|
892
1338
|
:param offset: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
|
|
893
1339
|
: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)
|
|
1340
|
+
:param additional_filter_configs: Advanced property: Additional filter configurations to apply to the listing. A maximum of 10 additional filter configs are supported.
|
|
894
1341
|
"""
|
|
895
1342
|
args = list_entities_t.Arguments(
|
|
896
1343
|
entity_type=entity_type,
|
|
@@ -898,11 +1345,13 @@ class ClientMethods(ABC):
|
|
|
898
1345
|
attributes=attributes,
|
|
899
1346
|
offset=offset,
|
|
900
1347
|
limit=limit,
|
|
1348
|
+
additional_filter_configs=additional_filter_configs,
|
|
901
1349
|
)
|
|
902
1350
|
api_request = APIRequest(
|
|
903
1351
|
method=list_entities_t.ENDPOINT_METHOD,
|
|
904
1352
|
endpoint=list_entities_t.ENDPOINT_PATH,
|
|
905
1353
|
args=args,
|
|
1354
|
+
request_options=_request_options,
|
|
906
1355
|
)
|
|
907
1356
|
return self.do_request(api_request=api_request, return_type=list_entities_t.Data)
|
|
908
1357
|
|
|
@@ -911,8 +1360,9 @@ class ClientMethods(ABC):
|
|
|
911
1360
|
*,
|
|
912
1361
|
spec: id_source_t.IdSourceSpec,
|
|
913
1362
|
search_label: str,
|
|
914
|
-
offset:
|
|
915
|
-
limit:
|
|
1363
|
+
offset: int | None = None,
|
|
1364
|
+
limit: int | None = None,
|
|
1365
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
916
1366
|
) -> list_id_source_t.Data:
|
|
917
1367
|
"""Lists id and label pairs
|
|
918
1368
|
|
|
@@ -931,6 +1381,7 @@ class ClientMethods(ABC):
|
|
|
931
1381
|
method=list_id_source_t.ENDPOINT_METHOD,
|
|
932
1382
|
endpoint=list_id_source_t.ENDPOINT_PATH,
|
|
933
1383
|
args=args,
|
|
1384
|
+
request_options=_request_options,
|
|
934
1385
|
)
|
|
935
1386
|
return self.do_request(api_request=api_request, return_type=list_id_source_t.Data)
|
|
936
1387
|
|
|
@@ -939,7 +1390,8 @@ class ClientMethods(ABC):
|
|
|
939
1390
|
*,
|
|
940
1391
|
entity_key: identifier_t.IdentifierKey,
|
|
941
1392
|
entity_type: entity_t.EntityType,
|
|
942
|
-
globally_removable:
|
|
1393
|
+
globally_removable: bool | None = None,
|
|
1394
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
943
1395
|
) -> lock_entity_t.Data:
|
|
944
1396
|
"""Lock an entity
|
|
945
1397
|
|
|
@@ -955,6 +1407,7 @@ class ClientMethods(ABC):
|
|
|
955
1407
|
method=lock_entity_t.ENDPOINT_METHOD,
|
|
956
1408
|
endpoint=lock_entity_t.ENDPOINT_PATH,
|
|
957
1409
|
args=args,
|
|
1410
|
+
request_options=_request_options,
|
|
958
1411
|
)
|
|
959
1412
|
return self.do_request(api_request=api_request, return_type=lock_entity_t.Data)
|
|
960
1413
|
|
|
@@ -964,8 +1417,9 @@ class ClientMethods(ABC):
|
|
|
964
1417
|
type: lock_recipes_t.RecipeLockType = lock_recipes_t.RecipeLockType.ALL,
|
|
965
1418
|
recipes: list[identifier_t.IdentifierKey],
|
|
966
1419
|
globally_removable: bool,
|
|
967
|
-
lock_samples:
|
|
968
|
-
comments:
|
|
1420
|
+
lock_samples: bool | None = None,
|
|
1421
|
+
comments: str | None = None,
|
|
1422
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
969
1423
|
) -> lock_recipes_t.Data:
|
|
970
1424
|
"""Lock experiments. Experiments will require unlocking to be editable. Edits to the experiments are blocked while they are locked.
|
|
971
1425
|
|
|
@@ -989,14 +1443,38 @@ class ClientMethods(ABC):
|
|
|
989
1443
|
method=lock_recipes_t.ENDPOINT_METHOD,
|
|
990
1444
|
endpoint=lock_recipes_t.ENDPOINT_PATH,
|
|
991
1445
|
args=args,
|
|
1446
|
+
request_options=_request_options,
|
|
992
1447
|
)
|
|
993
1448
|
return self.do_request(api_request=api_request, return_type=lock_recipes_t.Data)
|
|
994
1449
|
|
|
1450
|
+
def lookup_entity(
|
|
1451
|
+
self,
|
|
1452
|
+
*,
|
|
1453
|
+
entity_type: entity_t.EntityType,
|
|
1454
|
+
query: lookup_entity_t.LookupEntityQuery,
|
|
1455
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1456
|
+
) -> lookup_entity_t.Data:
|
|
1457
|
+
"""Look up an entity based on an identifier or field values
|
|
1458
|
+
|
|
1459
|
+
"""
|
|
1460
|
+
args = lookup_entity_t.Arguments(
|
|
1461
|
+
entity_type=entity_type,
|
|
1462
|
+
query=query,
|
|
1463
|
+
)
|
|
1464
|
+
api_request = APIRequest(
|
|
1465
|
+
method=lookup_entity_t.ENDPOINT_METHOD,
|
|
1466
|
+
endpoint=lookup_entity_t.ENDPOINT_PATH,
|
|
1467
|
+
args=args,
|
|
1468
|
+
request_options=_request_options,
|
|
1469
|
+
)
|
|
1470
|
+
return self.do_request(api_request=api_request, return_type=lookup_entity_t.Data)
|
|
1471
|
+
|
|
995
1472
|
def match_id_source(
|
|
996
1473
|
self,
|
|
997
1474
|
*,
|
|
998
1475
|
spec: id_source_t.IdSourceSpec,
|
|
999
1476
|
names: list[str],
|
|
1477
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1000
1478
|
) -> match_id_source_t.Data:
|
|
1001
1479
|
"""Lists id and label pairs
|
|
1002
1480
|
|
|
@@ -1011,14 +1489,66 @@ class ClientMethods(ABC):
|
|
|
1011
1489
|
method=match_id_source_t.ENDPOINT_METHOD,
|
|
1012
1490
|
endpoint=match_id_source_t.ENDPOINT_PATH,
|
|
1013
1491
|
args=args,
|
|
1492
|
+
request_options=_request_options,
|
|
1014
1493
|
)
|
|
1015
1494
|
return self.do_request(api_request=api_request, return_type=match_id_source_t.Data)
|
|
1016
1495
|
|
|
1496
|
+
def push_notification(
|
|
1497
|
+
self,
|
|
1498
|
+
*,
|
|
1499
|
+
notification_targets: list[notifications_t.NotificationTarget],
|
|
1500
|
+
subject: str,
|
|
1501
|
+
message: str,
|
|
1502
|
+
display_notice: bool = False,
|
|
1503
|
+
entity: entity_t.EntityIdentifier | None = None,
|
|
1504
|
+
notice_configuration: notices_t.NotificationNoticeConfiguration | None = None,
|
|
1505
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1506
|
+
) -> push_notification_t.Data:
|
|
1507
|
+
"""Push a notification to a user or user group
|
|
1508
|
+
|
|
1509
|
+
"""
|
|
1510
|
+
args = push_notification_t.Arguments(
|
|
1511
|
+
notification_targets=notification_targets,
|
|
1512
|
+
subject=subject,
|
|
1513
|
+
message=message,
|
|
1514
|
+
entity=entity,
|
|
1515
|
+
display_notice=display_notice,
|
|
1516
|
+
notice_configuration=notice_configuration,
|
|
1517
|
+
)
|
|
1518
|
+
api_request = APIRequest(
|
|
1519
|
+
method=push_notification_t.ENDPOINT_METHOD,
|
|
1520
|
+
endpoint=push_notification_t.ENDPOINT_PATH,
|
|
1521
|
+
args=args,
|
|
1522
|
+
request_options=_request_options,
|
|
1523
|
+
)
|
|
1524
|
+
return self.do_request(api_request=api_request, return_type=push_notification_t.Data)
|
|
1525
|
+
|
|
1526
|
+
def register_sockets_token(
|
|
1527
|
+
self,
|
|
1528
|
+
*,
|
|
1529
|
+
socket_request: sockets_t.SocketTokenRequest,
|
|
1530
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1531
|
+
) -> register_sockets_token_t.Data:
|
|
1532
|
+
"""Request token for connecting to sockets server
|
|
1533
|
+
|
|
1534
|
+
"""
|
|
1535
|
+
args = register_sockets_token_t.Arguments(
|
|
1536
|
+
socket_request=socket_request,
|
|
1537
|
+
)
|
|
1538
|
+
api_request = APIRequest(
|
|
1539
|
+
method=register_sockets_token_t.ENDPOINT_METHOD,
|
|
1540
|
+
endpoint=register_sockets_token_t.ENDPOINT_PATH,
|
|
1541
|
+
args=args,
|
|
1542
|
+
request_options=_request_options,
|
|
1543
|
+
)
|
|
1544
|
+
return self.do_request(api_request=api_request, return_type=register_sockets_token_t.Data)
|
|
1545
|
+
|
|
1017
1546
|
def remove_recipe_from_project(
|
|
1018
1547
|
self,
|
|
1019
1548
|
*,
|
|
1020
1549
|
recipe_key: identifier_t.IdentifierKey,
|
|
1021
1550
|
project_key: identifier_t.IdentifierKey,
|
|
1551
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1022
1552
|
) -> remove_recipe_from_project_t.Data:
|
|
1023
1553
|
"""Removes a recipe from a project
|
|
1024
1554
|
|
|
@@ -1033,6 +1563,7 @@ class ClientMethods(ABC):
|
|
|
1033
1563
|
method=remove_recipe_from_project_t.ENDPOINT_METHOD,
|
|
1034
1564
|
endpoint=remove_recipe_from_project_t.ENDPOINT_PATH,
|
|
1035
1565
|
args=args,
|
|
1566
|
+
request_options=_request_options,
|
|
1036
1567
|
)
|
|
1037
1568
|
return self.do_request(api_request=api_request, return_type=remove_recipe_from_project_t.Data)
|
|
1038
1569
|
|
|
@@ -1041,7 +1572,8 @@ class ClientMethods(ABC):
|
|
|
1041
1572
|
*,
|
|
1042
1573
|
recipe_from_key: identifier_t.IdentifierKey,
|
|
1043
1574
|
recipe_to_key: identifier_t.IdentifierKey,
|
|
1044
|
-
link_type: typing.
|
|
1575
|
+
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],
|
|
1576
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1045
1577
|
) -> remove_recipe_link_t.Data:
|
|
1046
1578
|
"""Remove a link between two recipes. Skip if the link doesn't already exist
|
|
1047
1579
|
|
|
@@ -1058,14 +1590,16 @@ class ClientMethods(ABC):
|
|
|
1058
1590
|
method=remove_recipe_link_t.ENDPOINT_METHOD,
|
|
1059
1591
|
endpoint=remove_recipe_link_t.ENDPOINT_PATH,
|
|
1060
1592
|
args=args,
|
|
1593
|
+
request_options=_request_options,
|
|
1061
1594
|
)
|
|
1062
1595
|
return self.do_request(api_request=api_request, return_type=remove_recipe_link_t.Data)
|
|
1063
1596
|
|
|
1064
1597
|
def resolve_entity_ids(
|
|
1065
1598
|
self,
|
|
1066
1599
|
*,
|
|
1067
|
-
entity_ids: list[
|
|
1600
|
+
entity_ids: list[str | base_t.ObjectId],
|
|
1068
1601
|
entity_type: entity_t.EntityType,
|
|
1602
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1069
1603
|
) -> resolve_entity_ids_t.Data:
|
|
1070
1604
|
"""Gets the names for passed in ids
|
|
1071
1605
|
|
|
@@ -1080,6 +1614,7 @@ class ClientMethods(ABC):
|
|
|
1080
1614
|
method=resolve_entity_ids_t.ENDPOINT_METHOD,
|
|
1081
1615
|
endpoint=resolve_entity_ids_t.ENDPOINT_PATH,
|
|
1082
1616
|
args=args,
|
|
1617
|
+
request_options=_request_options,
|
|
1083
1618
|
)
|
|
1084
1619
|
return self.do_request(api_request=api_request, return_type=resolve_entity_ids_t.Data)
|
|
1085
1620
|
|
|
@@ -1087,6 +1622,7 @@ class ClientMethods(ABC):
|
|
|
1087
1622
|
self,
|
|
1088
1623
|
*,
|
|
1089
1624
|
requested_conditions: list[resolve_output_conditions_t.ConditionRequest],
|
|
1625
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1090
1626
|
) -> resolve_output_conditions_t.Data:
|
|
1091
1627
|
"""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.
|
|
1092
1628
|
|
|
@@ -1098,6 +1634,7 @@ class ClientMethods(ABC):
|
|
|
1098
1634
|
method=resolve_output_conditions_t.ENDPOINT_METHOD,
|
|
1099
1635
|
endpoint=resolve_output_conditions_t.ENDPOINT_PATH,
|
|
1100
1636
|
args=args,
|
|
1637
|
+
request_options=_request_options,
|
|
1101
1638
|
)
|
|
1102
1639
|
return self.do_request(api_request=api_request, return_type=resolve_output_conditions_t.Data)
|
|
1103
1640
|
|
|
@@ -1105,7 +1642,8 @@ class ClientMethods(ABC):
|
|
|
1105
1642
|
self,
|
|
1106
1643
|
*,
|
|
1107
1644
|
trigger_ref_name: str,
|
|
1108
|
-
entity:
|
|
1645
|
+
entity: entity_t.Entity | None = None,
|
|
1646
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1109
1647
|
) -> run_trigger_t.Data:
|
|
1110
1648
|
"""Runs a trigger. Requires admin access
|
|
1111
1649
|
|
|
@@ -1118,6 +1656,7 @@ class ClientMethods(ABC):
|
|
|
1118
1656
|
method=run_trigger_t.ENDPOINT_METHOD,
|
|
1119
1657
|
endpoint=run_trigger_t.ENDPOINT_PATH,
|
|
1120
1658
|
args=args,
|
|
1659
|
+
request_options=_request_options,
|
|
1121
1660
|
)
|
|
1122
1661
|
return self.do_request(api_request=api_request, return_type=run_trigger_t.Data)
|
|
1123
1662
|
|
|
@@ -1127,8 +1666,9 @@ class ClientMethods(ABC):
|
|
|
1127
1666
|
scope: set_core_permissions_t.PermissionsScope,
|
|
1128
1667
|
permissions_types: list[permissions_t.CorePermissionType],
|
|
1129
1668
|
update_type: post_base_t.UpdateType,
|
|
1130
|
-
user_group_ids:
|
|
1131
|
-
user_ids:
|
|
1669
|
+
user_group_ids: list[int] | None = None,
|
|
1670
|
+
user_ids: list[int] | None = None,
|
|
1671
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1132
1672
|
) -> set_core_permissions_t.Data:
|
|
1133
1673
|
"""Sets recipe related permissions
|
|
1134
1674
|
|
|
@@ -1148,13 +1688,39 @@ class ClientMethods(ABC):
|
|
|
1148
1688
|
method=set_core_permissions_t.ENDPOINT_METHOD,
|
|
1149
1689
|
endpoint=set_core_permissions_t.ENDPOINT_PATH,
|
|
1150
1690
|
args=args,
|
|
1691
|
+
request_options=_request_options,
|
|
1151
1692
|
)
|
|
1152
1693
|
return self.do_request(api_request=api_request, return_type=set_core_permissions_t.Data)
|
|
1153
1694
|
|
|
1695
|
+
def set_entity_field_values(
|
|
1696
|
+
self,
|
|
1697
|
+
*,
|
|
1698
|
+
entity_identifier: entity_t.EntityIdentifier,
|
|
1699
|
+
field_values: list[field_values_t.FieldArgumentValue],
|
|
1700
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1701
|
+
) -> set_entity_field_values_t.Data:
|
|
1702
|
+
"""Sets field values for an entity
|
|
1703
|
+
|
|
1704
|
+
:param entity_identifier: Entity to update
|
|
1705
|
+
:param field_values: Field values to set
|
|
1706
|
+
"""
|
|
1707
|
+
args = set_entity_field_values_t.Arguments(
|
|
1708
|
+
entity_identifier=entity_identifier,
|
|
1709
|
+
field_values=field_values,
|
|
1710
|
+
)
|
|
1711
|
+
api_request = APIRequest(
|
|
1712
|
+
method=set_entity_field_values_t.ENDPOINT_METHOD,
|
|
1713
|
+
endpoint=set_entity_field_values_t.ENDPOINT_PATH,
|
|
1714
|
+
args=args,
|
|
1715
|
+
request_options=_request_options,
|
|
1716
|
+
)
|
|
1717
|
+
return self.do_request(api_request=api_request, return_type=set_entity_field_values_t.Data)
|
|
1718
|
+
|
|
1154
1719
|
def set_input_attribute_values(
|
|
1155
1720
|
self,
|
|
1156
1721
|
*,
|
|
1157
1722
|
attribute_values: list[set_input_attribute_values_t.InputAttributeValue],
|
|
1723
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1158
1724
|
) -> set_input_attribute_values_t.Data:
|
|
1159
1725
|
"""Sets attribute values for an input
|
|
1160
1726
|
|
|
@@ -1167,6 +1733,7 @@ class ClientMethods(ABC):
|
|
|
1167
1733
|
method=set_input_attribute_values_t.ENDPOINT_METHOD,
|
|
1168
1734
|
endpoint=set_input_attribute_values_t.ENDPOINT_PATH,
|
|
1169
1735
|
args=args,
|
|
1736
|
+
request_options=_request_options,
|
|
1170
1737
|
)
|
|
1171
1738
|
return self.do_request(api_request=api_request, return_type=set_input_attribute_values_t.Data)
|
|
1172
1739
|
|
|
@@ -1174,13 +1741,14 @@ class ClientMethods(ABC):
|
|
|
1174
1741
|
self,
|
|
1175
1742
|
*,
|
|
1176
1743
|
input_key: identifier_t.IdentifierKey,
|
|
1177
|
-
category_id: int,
|
|
1178
|
-
material_family_ids:
|
|
1744
|
+
category_id: int | None,
|
|
1745
|
+
material_family_ids: list[int] | None = None,
|
|
1746
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1179
1747
|
) -> set_input_category_t.Data:
|
|
1180
1748
|
"""Sets subcategories for an input
|
|
1181
1749
|
|
|
1182
1750
|
:param input_key: Identifier for the input
|
|
1183
|
-
:param category_id: The
|
|
1751
|
+
:param category_id: The category identifier to set. Null unsets the current category.
|
|
1184
1752
|
:param material_family_ids: The material families to perform the update in
|
|
1185
1753
|
"""
|
|
1186
1754
|
args = set_input_category_t.Arguments(
|
|
@@ -1192,6 +1760,7 @@ class ClientMethods(ABC):
|
|
|
1192
1760
|
method=set_input_category_t.ENDPOINT_METHOD,
|
|
1193
1761
|
endpoint=set_input_category_t.ENDPOINT_PATH,
|
|
1194
1762
|
args=args,
|
|
1763
|
+
request_options=_request_options,
|
|
1195
1764
|
)
|
|
1196
1765
|
return self.do_request(api_request=api_request, return_type=set_input_category_t.Data)
|
|
1197
1766
|
|
|
@@ -1201,6 +1770,7 @@ class ClientMethods(ABC):
|
|
|
1201
1770
|
input_key: identifier_t.IdentifierKey,
|
|
1202
1771
|
subcategory_ids: list[int],
|
|
1203
1772
|
update_type: post_base_t.UpdateType,
|
|
1773
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1204
1774
|
) -> set_input_subcategories_t.Data:
|
|
1205
1775
|
"""Sets subcategories for an input
|
|
1206
1776
|
|
|
@@ -1217,6 +1787,7 @@ class ClientMethods(ABC):
|
|
|
1217
1787
|
method=set_input_subcategories_t.ENDPOINT_METHOD,
|
|
1218
1788
|
endpoint=set_input_subcategories_t.ENDPOINT_PATH,
|
|
1219
1789
|
args=args,
|
|
1790
|
+
request_options=_request_options,
|
|
1220
1791
|
)
|
|
1221
1792
|
return self.do_request(api_request=api_request, return_type=set_input_subcategories_t.Data)
|
|
1222
1793
|
|
|
@@ -1225,6 +1796,7 @@ class ClientMethods(ABC):
|
|
|
1225
1796
|
*,
|
|
1226
1797
|
input_key: identifier_t.IdentifierKey,
|
|
1227
1798
|
intermediate_type: set_intermediate_type_t.IntermediateType,
|
|
1799
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1228
1800
|
) -> set_intermediate_type_t.Data:
|
|
1229
1801
|
"""Sets the type of an intermediate ingredient.
|
|
1230
1802
|
|
|
@@ -1239,6 +1811,7 @@ class ClientMethods(ABC):
|
|
|
1239
1811
|
method=set_intermediate_type_t.ENDPOINT_METHOD,
|
|
1240
1812
|
endpoint=set_intermediate_type_t.ENDPOINT_PATH,
|
|
1241
1813
|
args=args,
|
|
1814
|
+
request_options=_request_options,
|
|
1242
1815
|
)
|
|
1243
1816
|
return self.do_request(api_request=api_request, return_type=set_intermediate_type_t.Data)
|
|
1244
1817
|
|
|
@@ -1246,6 +1819,7 @@ class ClientMethods(ABC):
|
|
|
1246
1819
|
self,
|
|
1247
1820
|
*,
|
|
1248
1821
|
input_data: list[set_recipe_inputs_t.RecipeInputValue],
|
|
1822
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1249
1823
|
) -> set_recipe_inputs_t.Data:
|
|
1250
1824
|
"""Sets inputs values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
|
|
1251
1825
|
|
|
@@ -1258,6 +1832,7 @@ class ClientMethods(ABC):
|
|
|
1258
1832
|
method=set_recipe_inputs_t.ENDPOINT_METHOD,
|
|
1259
1833
|
endpoint=set_recipe_inputs_t.ENDPOINT_PATH,
|
|
1260
1834
|
args=args,
|
|
1835
|
+
request_options=_request_options,
|
|
1261
1836
|
)
|
|
1262
1837
|
return self.do_request(api_request=api_request, return_type=set_recipe_inputs_t.Data)
|
|
1263
1838
|
|
|
@@ -1266,6 +1841,7 @@ class ClientMethods(ABC):
|
|
|
1266
1841
|
*,
|
|
1267
1842
|
recipe_key: identifier_t.IdentifierKey,
|
|
1268
1843
|
recipe_metadata: list[recipe_metadata_t.MetadataValue],
|
|
1844
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1269
1845
|
) -> set_recipe_metadata_t.Data:
|
|
1270
1846
|
"""Set metadata values on a recipe
|
|
1271
1847
|
|
|
@@ -1280,6 +1856,7 @@ class ClientMethods(ABC):
|
|
|
1280
1856
|
method=set_recipe_metadata_t.ENDPOINT_METHOD,
|
|
1281
1857
|
endpoint=set_recipe_metadata_t.ENDPOINT_PATH,
|
|
1282
1858
|
args=args,
|
|
1859
|
+
request_options=_request_options,
|
|
1283
1860
|
)
|
|
1284
1861
|
return self.do_request(api_request=api_request, return_type=set_recipe_metadata_t.Data)
|
|
1285
1862
|
|
|
@@ -1287,6 +1864,7 @@ class ClientMethods(ABC):
|
|
|
1287
1864
|
self,
|
|
1288
1865
|
*,
|
|
1289
1866
|
updates: list[set_recipe_output_annotations_t.RecipeOutputUpdateAnnotations],
|
|
1867
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1290
1868
|
) -> set_recipe_output_annotations_t.Data:
|
|
1291
1869
|
"""Update annotations for an experiments outputs
|
|
1292
1870
|
|
|
@@ -1299,13 +1877,36 @@ class ClientMethods(ABC):
|
|
|
1299
1877
|
method=set_recipe_output_annotations_t.ENDPOINT_METHOD,
|
|
1300
1878
|
endpoint=set_recipe_output_annotations_t.ENDPOINT_PATH,
|
|
1301
1879
|
args=args,
|
|
1880
|
+
request_options=_request_options,
|
|
1302
1881
|
)
|
|
1303
1882
|
return self.do_request(api_request=api_request, return_type=set_recipe_output_annotations_t.Data)
|
|
1304
1883
|
|
|
1884
|
+
def set_recipe_output_file(
|
|
1885
|
+
self,
|
|
1886
|
+
*,
|
|
1887
|
+
output_file_data: set_recipe_output_file_t.RecipeOutputFileValue,
|
|
1888
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1889
|
+
) -> set_recipe_output_file_t.Data:
|
|
1890
|
+
"""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
|
|
1891
|
+
|
|
1892
|
+
:param output_file_data: The output file to set
|
|
1893
|
+
"""
|
|
1894
|
+
args = set_recipe_output_file_t.Arguments(
|
|
1895
|
+
output_file_data=output_file_data,
|
|
1896
|
+
)
|
|
1897
|
+
api_request = APIRequest(
|
|
1898
|
+
method=set_recipe_output_file_t.ENDPOINT_METHOD,
|
|
1899
|
+
endpoint=set_recipe_output_file_t.ENDPOINT_PATH,
|
|
1900
|
+
args=args,
|
|
1901
|
+
request_options=_request_options,
|
|
1902
|
+
)
|
|
1903
|
+
return self.do_request(api_request=api_request, return_type=set_recipe_output_file_t.Data)
|
|
1904
|
+
|
|
1305
1905
|
def set_recipe_outputs(
|
|
1306
1906
|
self,
|
|
1307
1907
|
*,
|
|
1308
1908
|
output_data: list[set_recipe_outputs_t.RecipeOutputValue],
|
|
1909
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1309
1910
|
) -> set_recipe_outputs_t.Data:
|
|
1310
1911
|
"""Sets output values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
|
|
1311
1912
|
|
|
@@ -1318,6 +1919,7 @@ class ClientMethods(ABC):
|
|
|
1318
1919
|
method=set_recipe_outputs_t.ENDPOINT_METHOD,
|
|
1319
1920
|
endpoint=set_recipe_outputs_t.ENDPOINT_PATH,
|
|
1320
1921
|
args=args,
|
|
1922
|
+
request_options=_request_options,
|
|
1321
1923
|
)
|
|
1322
1924
|
return self.do_request(api_request=api_request, return_type=set_recipe_outputs_t.Data)
|
|
1323
1925
|
|
|
@@ -1326,6 +1928,7 @@ class ClientMethods(ABC):
|
|
|
1326
1928
|
*,
|
|
1327
1929
|
recipe_key: identifier_t.IdentifierKey,
|
|
1328
1930
|
recipe_tag_update: set_recipe_tags_t.RecipeTagUpdate,
|
|
1931
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1329
1932
|
) -> set_recipe_tags_t.Data:
|
|
1330
1933
|
"""Modifies recipes tags for a recipe
|
|
1331
1934
|
|
|
@@ -1340,14 +1943,46 @@ class ClientMethods(ABC):
|
|
|
1340
1943
|
method=set_recipe_tags_t.ENDPOINT_METHOD,
|
|
1341
1944
|
endpoint=set_recipe_tags_t.ENDPOINT_PATH,
|
|
1342
1945
|
args=args,
|
|
1946
|
+
request_options=_request_options,
|
|
1343
1947
|
)
|
|
1344
1948
|
return self.do_request(api_request=api_request, return_type=set_recipe_tags_t.Data)
|
|
1345
1949
|
|
|
1950
|
+
def set_recipe_total(
|
|
1951
|
+
self,
|
|
1952
|
+
*,
|
|
1953
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
1954
|
+
value: set_recipe_total_t.ValueNumeric,
|
|
1955
|
+
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier | None = None,
|
|
1956
|
+
calculation_key: identifier_t.IdentifierKey | None = None,
|
|
1957
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1958
|
+
) -> set_recipe_total_t.Data:
|
|
1959
|
+
"""Updates the Set Total value for a recipe or one of its workflow steps
|
|
1960
|
+
|
|
1961
|
+
:param recipe_key: Identifier for the recipe
|
|
1962
|
+
:param recipe_workflow_step_identifier: Identifier for the recipe workflow step
|
|
1963
|
+
:param value: The quantity in mass, volume, or moles to set for the total
|
|
1964
|
+
:param calculation_key: The linked basis calculation to set
|
|
1965
|
+
"""
|
|
1966
|
+
args = set_recipe_total_t.Arguments(
|
|
1967
|
+
recipe_key=recipe_key,
|
|
1968
|
+
recipe_workflow_step_identifier=recipe_workflow_step_identifier,
|
|
1969
|
+
value=value,
|
|
1970
|
+
calculation_key=calculation_key,
|
|
1971
|
+
)
|
|
1972
|
+
api_request = APIRequest(
|
|
1973
|
+
method=set_recipe_total_t.ENDPOINT_METHOD,
|
|
1974
|
+
endpoint=set_recipe_total_t.ENDPOINT_PATH,
|
|
1975
|
+
args=args,
|
|
1976
|
+
request_options=_request_options,
|
|
1977
|
+
)
|
|
1978
|
+
return self.do_request(api_request=api_request, return_type=set_recipe_total_t.Data)
|
|
1979
|
+
|
|
1346
1980
|
def set_values(
|
|
1347
1981
|
self,
|
|
1348
1982
|
*,
|
|
1349
1983
|
entity: entity_t.Entity,
|
|
1350
1984
|
values: list[field_values_t.ArgumentValueRefName],
|
|
1985
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1351
1986
|
) -> set_values_t.Data:
|
|
1352
1987
|
"""Sets field values for an entity
|
|
1353
1988
|
|
|
@@ -1360,26 +1995,34 @@ class ClientMethods(ABC):
|
|
|
1360
1995
|
method=set_values_t.ENDPOINT_METHOD,
|
|
1361
1996
|
endpoint=set_values_t.ENDPOINT_PATH,
|
|
1362
1997
|
args=args,
|
|
1998
|
+
request_options=_request_options,
|
|
1363
1999
|
)
|
|
1364
2000
|
return self.do_request(api_request=api_request, return_type=set_values_t.Data)
|
|
1365
2001
|
|
|
1366
2002
|
def transition_entity_phase(
|
|
1367
2003
|
self,
|
|
1368
2004
|
*,
|
|
1369
|
-
entity: entity_t.Entity,
|
|
1370
2005
|
transition: transition_entity_phase_t.TransitionIdentifier,
|
|
2006
|
+
entity: entity_t.Entity | None = None,
|
|
2007
|
+
entity_identifier: entity_t.EntityIdentifier | None = None,
|
|
2008
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1371
2009
|
) -> transition_entity_phase_t.Data:
|
|
1372
2010
|
"""Transitions an entity from one phase to another
|
|
1373
2011
|
|
|
2012
|
+
:param entity: Entity to transition. If entity_identifier is provided, this should be omitted.
|
|
2013
|
+
:param entity_identifier: Identifier of the entity to transition. If entity is provided, this should be omitted.
|
|
2014
|
+
:param transition: Identifier of the transition to perform
|
|
1374
2015
|
"""
|
|
1375
2016
|
args = transition_entity_phase_t.Arguments(
|
|
1376
2017
|
entity=entity,
|
|
2018
|
+
entity_identifier=entity_identifier,
|
|
1377
2019
|
transition=transition,
|
|
1378
2020
|
)
|
|
1379
2021
|
api_request = APIRequest(
|
|
1380
2022
|
method=transition_entity_phase_t.ENDPOINT_METHOD,
|
|
1381
2023
|
endpoint=transition_entity_phase_t.ENDPOINT_PATH,
|
|
1382
2024
|
args=args,
|
|
2025
|
+
request_options=_request_options,
|
|
1383
2026
|
)
|
|
1384
2027
|
return self.do_request(api_request=api_request, return_type=transition_entity_phase_t.Data)
|
|
1385
2028
|
|
|
@@ -1387,6 +2030,7 @@ class ClientMethods(ABC):
|
|
|
1387
2030
|
self,
|
|
1388
2031
|
*,
|
|
1389
2032
|
recipes: list[identifier_t.IdentifierKey],
|
|
2033
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1390
2034
|
) -> unarchive_recipes_t.Data:
|
|
1391
2035
|
"""Unarchive/restore the provided recipes
|
|
1392
2036
|
|
|
@@ -1399,6 +2043,7 @@ class ClientMethods(ABC):
|
|
|
1399
2043
|
method=unarchive_recipes_t.ENDPOINT_METHOD,
|
|
1400
2044
|
endpoint=unarchive_recipes_t.ENDPOINT_PATH,
|
|
1401
2045
|
args=args,
|
|
2046
|
+
request_options=_request_options,
|
|
1402
2047
|
)
|
|
1403
2048
|
return self.do_request(api_request=api_request, return_type=unarchive_recipes_t.Data)
|
|
1404
2049
|
|
|
@@ -1407,6 +2052,7 @@ class ClientMethods(ABC):
|
|
|
1407
2052
|
*,
|
|
1408
2053
|
entity_key: identifier_t.IdentifierKey,
|
|
1409
2054
|
entity_type: entity_t.EntityType,
|
|
2055
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1410
2056
|
) -> unlock_entity_t.Data:
|
|
1411
2057
|
"""Unlock an entity
|
|
1412
2058
|
|
|
@@ -1420,6 +2066,7 @@ class ClientMethods(ABC):
|
|
|
1420
2066
|
method=unlock_entity_t.ENDPOINT_METHOD,
|
|
1421
2067
|
endpoint=unlock_entity_t.ENDPOINT_PATH,
|
|
1422
2068
|
args=args,
|
|
2069
|
+
request_options=_request_options,
|
|
1423
2070
|
)
|
|
1424
2071
|
return self.do_request(api_request=api_request, return_type=unlock_entity_t.Data)
|
|
1425
2072
|
|
|
@@ -1428,7 +2075,8 @@ class ClientMethods(ABC):
|
|
|
1428
2075
|
*,
|
|
1429
2076
|
type: unlock_recipes_t.RecipeUnlockType = unlock_recipes_t.RecipeUnlockType.STANDARD,
|
|
1430
2077
|
recipes: list[identifier_t.IdentifierKey],
|
|
1431
|
-
unlock_samples:
|
|
2078
|
+
unlock_samples: bool | None = None,
|
|
2079
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1432
2080
|
) -> unlock_recipes_t.Data:
|
|
1433
2081
|
"""Unlock experiments. Experiments will edtiable after unlocking if they are currently locked.
|
|
1434
2082
|
|
|
@@ -1445,6 +2093,7 @@ class ClientMethods(ABC):
|
|
|
1445
2093
|
method=unlock_recipes_t.ENDPOINT_METHOD,
|
|
1446
2094
|
endpoint=unlock_recipes_t.ENDPOINT_PATH,
|
|
1447
2095
|
args=args,
|
|
2096
|
+
request_options=_request_options,
|
|
1448
2097
|
)
|
|
1449
2098
|
return self.do_request(api_request=api_request, return_type=unlock_recipes_t.Data)
|
|
1450
2099
|
|
|
@@ -1452,9 +2101,10 @@ class ClientMethods(ABC):
|
|
|
1452
2101
|
self,
|
|
1453
2102
|
*,
|
|
1454
2103
|
entity_key: identifier_t.IdentifierKey,
|
|
1455
|
-
entity_type: typing.
|
|
2104
|
+
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],
|
|
1456
2105
|
material_family_ids: list[base_t.ObjectId],
|
|
1457
2106
|
update_type: post_base_t.UpdateType,
|
|
2107
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1458
2108
|
) -> update_entity_material_families_t.Data:
|
|
1459
2109
|
"""Updates the material families that the entity is available in
|
|
1460
2110
|
|
|
@@ -1473,14 +2123,44 @@ class ClientMethods(ABC):
|
|
|
1473
2123
|
method=update_entity_material_families_t.ENDPOINT_METHOD,
|
|
1474
2124
|
endpoint=update_entity_material_families_t.ENDPOINT_PATH,
|
|
1475
2125
|
args=args,
|
|
2126
|
+
request_options=_request_options,
|
|
1476
2127
|
)
|
|
1477
2128
|
return self.do_request(api_request=api_request, return_type=update_entity_material_families_t.Data)
|
|
1478
2129
|
|
|
2130
|
+
def upsert_condition_match(
|
|
2131
|
+
self,
|
|
2132
|
+
*,
|
|
2133
|
+
explicit_name: bool = False,
|
|
2134
|
+
name: str | None = None,
|
|
2135
|
+
condition_parameters: list[upsert_condition_match_t.ConditionParameter] | None = None,
|
|
2136
|
+
output_conditions: list[identifier_t.IdentifierKey] | None = None,
|
|
2137
|
+
existing_condition_match: identifier_t.IdentifierKey | None = None,
|
|
2138
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
2139
|
+
) -> upsert_condition_match_t.Data:
|
|
2140
|
+
"""Creates or updates condition match
|
|
2141
|
+
|
|
2142
|
+
"""
|
|
2143
|
+
args = upsert_condition_match_t.Arguments(
|
|
2144
|
+
name=name,
|
|
2145
|
+
condition_parameters=condition_parameters,
|
|
2146
|
+
output_conditions=output_conditions,
|
|
2147
|
+
explicit_name=explicit_name,
|
|
2148
|
+
existing_condition_match=existing_condition_match,
|
|
2149
|
+
)
|
|
2150
|
+
api_request = APIRequest(
|
|
2151
|
+
method=upsert_condition_match_t.ENDPOINT_METHOD,
|
|
2152
|
+
endpoint=upsert_condition_match_t.ENDPOINT_PATH,
|
|
2153
|
+
args=args,
|
|
2154
|
+
request_options=_request_options,
|
|
2155
|
+
)
|
|
2156
|
+
return self.do_request(api_request=api_request, return_type=upsert_condition_match_t.Data)
|
|
2157
|
+
|
|
1479
2158
|
def upsert_field_options(
|
|
1480
2159
|
self,
|
|
1481
2160
|
*,
|
|
1482
2161
|
option_set_key: identifier_t.IdentifierKey,
|
|
1483
2162
|
field_options: list[upsert_field_options_t.FieldOption],
|
|
2163
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1484
2164
|
) -> upsert_field_options_t.Data:
|
|
1485
2165
|
"""Creates or updates field options for an option set
|
|
1486
2166
|
|
|
@@ -1495,5 +2175,6 @@ class ClientMethods(ABC):
|
|
|
1495
2175
|
method=upsert_field_options_t.ENDPOINT_METHOD,
|
|
1496
2176
|
endpoint=upsert_field_options_t.ENDPOINT_PATH,
|
|
1497
2177
|
args=args,
|
|
2178
|
+
request_options=_request_options,
|
|
1498
2179
|
)
|
|
1499
2180
|
return self.do_request(api_request=api_request, return_type=upsert_field_options_t.Data)
|