UncountablePythonSDK 0.0.24__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 +60 -8
- 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 +7 -5
- examples/async_batch.py +5 -6
- examples/basic_auth.py +7 -0
- examples/create_entity.py +4 -6
- examples/create_ingredient_sdk.py +34 -0
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +50 -0
- 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 +26 -0
- 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 +2 -3
- pkgs/argument_parser/__init__.py +9 -0
- pkgs/argument_parser/_is_namedtuple.py +3 -0
- pkgs/argument_parser/argument_parser.py +295 -74
- pkgs/argument_parser/case_convert.py +4 -3
- pkgs/filesystem_utils/__init__.py +20 -0
- pkgs/filesystem_utils/_blob_session.py +144 -0
- pkgs/filesystem_utils/_gdrive_session.py +309 -0
- pkgs/filesystem_utils/_local_session.py +69 -0
- pkgs/filesystem_utils/_s3_session.py +118 -0
- pkgs/filesystem_utils/_sftp_session.py +151 -0
- pkgs/filesystem_utils/file_type_utils.py +91 -0
- pkgs/filesystem_utils/filesystem_session.py +39 -0
- pkgs/py.typed +0 -0
- pkgs/serialization/__init__.py +8 -1
- 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 +69 -54
- pkgs/serialization/serial_generic.py +16 -0
- pkgs/serialization/serial_union.py +84 -0
- pkgs/serialization/yaml.py +57 -0
- pkgs/serialization_util/__init__.py +7 -7
- pkgs/serialization_util/convert_to_snakecase.py +27 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +117 -71
- pkgs/type_spec/actions_registry/__main__.py +0 -4
- pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
- pkgs/type_spec/builder.py +438 -109
- pkgs/type_spec/builder_types.py +9 -0
- pkgs/type_spec/config.py +52 -24
- 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 +160 -41
- pkgs/type_spec/emit_open_api_util.py +13 -7
- pkgs/type_spec/emit_python.py +450 -136
- pkgs/type_spec/emit_typescript.py +117 -250
- pkgs/type_spec/emit_typescript_util.py +293 -4
- pkgs/type_spec/load_types.py +20 -5
- 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 +161 -32
- 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 +27 -10
- 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/__init__.py +1 -2
- uncountable/core/__init__.py +11 -3
- uncountable/core/async_batch.py +16 -1
- uncountable/core/client.py +247 -52
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +67 -22
- uncountable/core/types.py +8 -13
- uncountable/integration/cli.py +142 -0
- uncountable/integration/construct_client.py +43 -27
- uncountable/integration/cron.py +12 -11
- uncountable/integration/db/connect.py +12 -2
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +4 -34
- uncountable/integration/executors/executors.py +147 -0
- uncountable/integration/executors/generic_upload_executor.py +336 -0
- uncountable/integration/executors/script_executor.py +15 -9
- uncountable/integration/http_server/__init__.py +5 -0
- uncountable/integration/http_server/types.py +69 -0
- uncountable/integration/job.py +246 -19
- 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/__init__.py +3 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
- uncountable/integration/server.py +103 -54
- uncountable/integration/telemetry.py +251 -0
- uncountable/integration/webhook_server/entrypoint.py +97 -0
- uncountable/types/__init__.py +149 -30
- uncountable/types/api/batch/execute_batch.py +16 -9
- uncountable/types/api/batch/execute_batch_load_async.py +13 -7
- uncountable/types/api/chemical/convert_chemical_formats.py +20 -8
- 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 +24 -12
- uncountable/types/api/entity/create_entity.py +22 -13
- 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 +18 -9
- 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 +53 -14
- uncountable/types/api/entity/lock_entity.py +45 -0
- uncountable/types/api/entity/lookup_entity.py +116 -0
- uncountable/types/api/entity/resolve_entity_ids.py +19 -10
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +15 -8
- uncountable/types/api/entity/transition_entity_phase.py +27 -12
- uncountable/types/api/entity/unlock_entity.py +44 -0
- uncountable/types/api/equipment/__init__.py +1 -0
- uncountable/types/api/equipment/associate_equipment_input.py +43 -0
- uncountable/types/api/field_options/__init__.py +1 -0
- uncountable/types/api/field_options/upsert_field_options.py +55 -0
- 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 +20 -11
- uncountable/types/api/id_source/match_id_source.py +15 -10
- uncountable/types/api/input_groups/get_input_group_names.py +16 -7
- uncountable/types/api/inputs/create_inputs.py +28 -14
- uncountable/types/api/inputs/get_input_data.py +34 -16
- uncountable/types/api/inputs/get_input_names.py +19 -10
- uncountable/types/api/inputs/get_inputs_data.py +29 -11
- uncountable/types/api/inputs/set_input_attribute_values.py +16 -10
- uncountable/types/api/inputs/set_input_category.py +44 -0
- uncountable/types/api/inputs/set_input_subcategories.py +45 -0
- uncountable/types/api/inputs/set_intermediate_type.py +50 -0
- 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/__init__.py +1 -0
- uncountable/types/api/material_families/update_entity_material_families.py +47 -0
- 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 +32 -17
- uncountable/types/api/outputs/get_output_names.py +18 -9
- uncountable/types/api/outputs/get_output_organization.py +173 -0
- uncountable/types/api/outputs/resolve_output_conditions.py +23 -11
- uncountable/types/api/permissions/set_core_permissions.py +31 -15
- uncountable/types/api/project/get_projects.py +20 -11
- uncountable/types/api/project/get_projects_data.py +23 -14
- uncountable/types/api/recipe_links/create_recipe_link.py +17 -10
- uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +19 -10
- uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/archive_recipes.py +14 -7
- uncountable/types/api/recipes/associate_recipe_as_input.py +16 -8
- uncountable/types/api/recipes/associate_recipe_as_lot.py +14 -7
- 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 +21 -14
- uncountable/types/api/recipes/create_recipes.py +25 -13
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +14 -7
- uncountable/types/api/recipes/edit_recipe_inputs.py +208 -19
- uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
- uncountable/types/api/recipes/get_curve.py +15 -9
- uncountable/types/api/recipes/get_recipe_calculations.py +17 -11
- uncountable/types/api/recipes/get_recipe_links.py +14 -8
- uncountable/types/api/recipes/get_recipe_names.py +16 -7
- uncountable/types/api/recipes/get_recipe_output_metadata.py +16 -10
- uncountable/types/api/recipes/get_recipes_data.py +96 -45
- uncountable/types/api/recipes/lock_recipes.py +64 -0
- uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
- uncountable/types/api/recipes/set_recipe_inputs.py +19 -13
- uncountable/types/api/recipes/set_recipe_metadata.py +14 -7
- uncountable/types/api/recipes/set_recipe_output_annotations.py +114 -0
- uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +40 -15
- uncountable/types/api/recipes/set_recipe_tags.py +30 -13
- uncountable/types/api/recipes/set_recipe_total.py +59 -0
- uncountable/types/api/recipes/unarchive_recipes.py +41 -0
- uncountable/types/api/recipes/unlock_recipes.py +51 -0
- 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 +15 -8
- uncountable/types/api/uploader/__init__.py +1 -0
- uncountable/types/api/uploader/complete_async_parse.py +46 -0
- uncountable/types/api/uploader/invoke_uploader.py +46 -0
- uncountable/types/api/user/__init__.py +1 -0
- uncountable/types/api/user/get_current_user_info.py +40 -0
- uncountable/types/async_batch.py +8 -52
- uncountable/types/async_batch_processor.py +694 -18
- uncountable/types/async_batch_t.py +108 -0
- 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 +5 -80
- uncountable/types/base_t.py +87 -0
- uncountable/types/calculations.py +3 -19
- uncountable/types/calculations_t.py +26 -0
- uncountable/types/chemical_structure.py +3 -23
- uncountable/types/chemical_structure_t.py +28 -0
- uncountable/types/client_base.py +1170 -88
- uncountable/types/client_config.py +8 -0
- uncountable/types/client_config_t.py +36 -0
- uncountable/types/curves.py +5 -43
- uncountable/types/curves_t.py +50 -0
- uncountable/types/data.py +12 -0
- uncountable/types/data_t.py +103 -0
- uncountable/types/entity.py +8 -270
- uncountable/types/entity_t.py +446 -0
- uncountable/types/experiment_groups.py +3 -19
- uncountable/types/experiment_groups_t.py +26 -0
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +34 -0
- uncountable/types/field_values.py +25 -61
- uncountable/types/field_values_t.py +302 -0
- uncountable/types/fields.py +3 -20
- uncountable/types/fields_t.py +27 -0
- uncountable/types/generic_upload.py +14 -0
- uncountable/types/generic_upload_t.py +119 -0
- uncountable/types/id_source.py +7 -45
- uncountable/types/id_source_t.py +68 -0
- uncountable/types/identifier.py +6 -50
- uncountable/types/identifier_t.py +62 -0
- uncountable/types/input_attributes.py +3 -25
- uncountable/types/input_attributes_t.py +29 -0
- uncountable/types/inputs.py +6 -57
- uncountable/types/inputs_t.py +82 -0
- 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 +28 -0
- uncountable/types/job_definition_t.py +285 -0
- 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 +3 -22
- uncountable/types/outputs_t.py +29 -0
- uncountable/types/overrides.py +9 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +3 -42
- uncountable/types/permissions_t.py +45 -0
- uncountable/types/phases.py +3 -19
- uncountable/types/phases_t.py +26 -0
- uncountable/types/post_base.py +3 -26
- uncountable/types/post_base_t.py +29 -0
- uncountable/types/queued_job.py +17 -0
- uncountable/types/queued_job_t.py +140 -0
- uncountable/types/recipe_identifiers.py +7 -58
- uncountable/types/recipe_identifiers_t.py +75 -0
- uncountable/types/recipe_inputs.py +4 -26
- uncountable/types/recipe_inputs_t.py +29 -0
- uncountable/types/recipe_links.py +4 -46
- uncountable/types/recipe_links_t.py +53 -0
- uncountable/types/recipe_metadata.py +5 -48
- uncountable/types/recipe_metadata_t.py +57 -0
- uncountable/types/recipe_output_metadata.py +3 -20
- uncountable/types/recipe_output_metadata_t.py +27 -0
- uncountable/types/recipe_tags.py +3 -19
- uncountable/types/recipe_tags_t.py +26 -0
- uncountable/types/recipe_workflow_steps.py +9 -73
- uncountable/types/recipe_workflow_steps_t.py +95 -0
- uncountable/types/recipes.py +7 -0
- uncountable/types/recipes_t.py +25 -0
- uncountable/types/response.py +3 -21
- uncountable/types/response_t.py +26 -0
- uncountable/types/secret_retrieval.py +11 -0
- uncountable/types/secret_retrieval_t.py +75 -0
- 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 +3 -19
- uncountable/types/units_t.py +26 -0
- uncountable/types/uploader.py +24 -0
- uncountable/types/uploader_t.py +222 -0
- uncountable/types/users.py +3 -20
- uncountable/types/users_t.py +27 -0
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +48 -0
- uncountable/types/workflows.py +4 -28
- uncountable/types/workflows_t.py +38 -0
- uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
- uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -1
- UncountablePythonSDK-0.0.24.dist-info/METADATA +0 -47
- UncountablePythonSDK-0.0.24.dist-info/RECORD +0 -216
- docs/quickstart.md +0 -19
- examples/recipe-import/importer.py +0 -39
- type_spec/external/api/batch/execute_batch.yaml +0 -56
- type_spec/external/api/batch/execute_batch_load_async.yaml +0 -18
- type_spec/external/api/chemical/convert_chemical_formats.yaml +0 -33
- type_spec/external/api/entity/create_entities.yaml +0 -45
- type_spec/external/api/entity/create_entity.yaml +0 -51
- type_spec/external/api/entity/get_entities_data.yaml +0 -29
- type_spec/external/api/entity/list_entities.yaml +0 -52
- type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
- type_spec/external/api/entity/set_values.yaml +0 -18
- type_spec/external/api/entity/transition_entity_phase.yaml +0 -44
- type_spec/external/api/id_source/list_id_source.yaml +0 -35
- type_spec/external/api/id_source/match_id_source.yaml +0 -32
- type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
- type_spec/external/api/inputs/create_inputs.yaml +0 -48
- type_spec/external/api/inputs/get_input_data.yaml +0 -95
- type_spec/external/api/inputs/get_input_names.yaml +0 -38
- type_spec/external/api/inputs/get_inputs_data.yaml +0 -82
- type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -33
- type_spec/external/api/outputs/get_output_data.yaml +0 -92
- type_spec/external/api/outputs/get_output_names.yaml +0 -35
- type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
- type_spec/external/api/permissions/set_core_permissions.yaml +0 -69
- type_spec/external/api/project/get_projects.yaml +0 -42
- type_spec/external/api/project/get_projects_data.yaml +0 -50
- type_spec/external/api/recipe_links/create_recipe_link.yaml +0 -25
- type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
- type_spec/external/api/recipes/archive_recipes.yaml +0 -20
- type_spec/external/api/recipes/associate_recipe_as_input.yaml +0 -19
- type_spec/external/api/recipes/associate_recipe_as_lot.yaml +0 -19
- type_spec/external/api/recipes/create_recipe.yaml +0 -39
- type_spec/external/api/recipes/create_recipes.yaml +0 -47
- type_spec/external/api/recipes/disassociate_recipe_as_input.yaml +0 -16
- type_spec/external/api/recipes/edit_recipe_inputs.yaml +0 -85
- type_spec/external/api/recipes/get_curve.yaml +0 -21
- type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -39
- type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
- type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
- type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -36
- type_spec/external/api/recipes/get_recipes_data.yaml +0 -244
- type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -42
- type_spec/external/api/recipes/set_recipe_metadata.yaml +0 -20
- type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -52
- type_spec/external/api/recipes/set_recipe_tags.yaml +0 -62
- type_spec/external/api/triggers/run_trigger.yaml +0 -18
- uncountable/integration/types.py +0 -89
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
#
|
|
3
|
-
# ruff: noqa: E402
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
6
5
|
from __future__ import annotations
|
|
7
6
|
import typing # noqa: F401
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
from
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
|
-
from
|
|
13
|
-
from ... import
|
|
14
|
-
from ... import
|
|
15
|
-
from ... import
|
|
16
|
-
from ... import
|
|
17
|
-
from ... import
|
|
18
|
-
from ... import
|
|
19
|
-
from ... import
|
|
12
|
+
from pkgs.serialization import serial_string_enum
|
|
13
|
+
from ... import base_t
|
|
14
|
+
from ... import experiment_groups_t
|
|
15
|
+
from ... import inputs_t
|
|
16
|
+
from ... import outputs_t
|
|
17
|
+
from ... import recipe_metadata_t
|
|
18
|
+
from ... import recipe_tags_t
|
|
19
|
+
from ... import workflows_t
|
|
20
20
|
|
|
21
21
|
__all__: list[str] = [
|
|
22
22
|
"Arguments",
|
|
@@ -26,7 +26,9 @@ __all__: list[str] = [
|
|
|
26
26
|
"ENDPOINT_PATH",
|
|
27
27
|
"Recipe",
|
|
28
28
|
"RecipeInput",
|
|
29
|
+
"RecipeLockStatus",
|
|
29
30
|
"RecipeOutput",
|
|
31
|
+
"RecipeOutputInclusion",
|
|
30
32
|
"RecipeStep",
|
|
31
33
|
"RecipeStepGroup",
|
|
32
34
|
"RecipeStepRelationship",
|
|
@@ -39,45 +41,66 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipes_data"
|
|
|
39
41
|
|
|
40
42
|
|
|
41
43
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
42
|
-
@
|
|
44
|
+
@serial_class(
|
|
45
|
+
named_type_path="sdk.api.recipes.get_recipes_data.Arguments",
|
|
46
|
+
)
|
|
47
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
43
48
|
class Arguments:
|
|
44
|
-
recipe_ids:
|
|
45
|
-
project_id:
|
|
46
|
-
offset:
|
|
47
|
-
limit:
|
|
49
|
+
recipe_ids: list[base_t.ObjectId] | None = None
|
|
50
|
+
project_id: base_t.ObjectId | None = None
|
|
51
|
+
offset: int | None = None
|
|
52
|
+
limit: int | None = None
|
|
53
|
+
empty_output_behavior: RecipeOutputInclusion | None = None
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
57
|
+
@serial_string_enum(
|
|
58
|
+
labels={
|
|
59
|
+
"include_null": "Include Outputs without values",
|
|
60
|
+
"exclude_null": "Exclude Outputs without values",
|
|
61
|
+
},
|
|
62
|
+
)
|
|
63
|
+
class RecipeOutputInclusion(StrEnum):
|
|
64
|
+
INCLUDE_NULL = "include_null"
|
|
65
|
+
EXCLUDE_NULL = "exclude_null"
|
|
48
66
|
|
|
49
67
|
|
|
50
68
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
51
69
|
@serial_class(
|
|
70
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeOutput",
|
|
52
71
|
unconverted_values={"quantity_json"},
|
|
53
72
|
to_string_values={"quantity_dec"},
|
|
54
73
|
)
|
|
55
|
-
@dataclass(kw_only=True)
|
|
74
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
56
75
|
class RecipeOutput:
|
|
57
76
|
id: base_t.ObjectId
|
|
58
77
|
output_id: base_t.ObjectId
|
|
59
78
|
replicate_num: int
|
|
60
|
-
quantity_dec: Decimal
|
|
61
79
|
quantity_json: base_t.JsonValue
|
|
62
|
-
curve_id: base_t.ObjectId
|
|
63
|
-
output_condition_id: base_t.ObjectId
|
|
80
|
+
curve_id: base_t.ObjectId | None
|
|
81
|
+
output_condition_id: base_t.ObjectId | None
|
|
82
|
+
quantity_dec: Decimal | None = None
|
|
64
83
|
|
|
65
84
|
|
|
66
85
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
67
86
|
@serial_class(
|
|
87
|
+
named_type_path="sdk.api.recipes.get_recipes_data.ConditionParameterValue",
|
|
68
88
|
unconverted_values={"quantity_json"},
|
|
69
89
|
to_string_values={"quantity_dec"},
|
|
70
90
|
)
|
|
71
|
-
@dataclass(kw_only=True)
|
|
91
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
72
92
|
class ConditionParameterValue:
|
|
73
93
|
condition_parameter_id: base_t.ObjectId
|
|
74
94
|
condition_parameter_name: str
|
|
75
|
-
quantity_dec: Decimal
|
|
76
95
|
quantity_json: base_t.JsonValue
|
|
96
|
+
quantity_dec: Decimal | None = None
|
|
77
97
|
|
|
78
98
|
|
|
79
99
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
80
|
-
@
|
|
100
|
+
@serial_class(
|
|
101
|
+
named_type_path="sdk.api.recipes.get_recipes_data.SimpleOutputCondition",
|
|
102
|
+
)
|
|
103
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
81
104
|
class SimpleOutputCondition:
|
|
82
105
|
output_condition_id: base_t.ObjectId
|
|
83
106
|
condition_parameter_values: list[ConditionParameterValue]
|
|
@@ -85,43 +108,54 @@ class SimpleOutputCondition:
|
|
|
85
108
|
|
|
86
109
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
87
110
|
@serial_class(
|
|
111
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeInput",
|
|
88
112
|
unconverted_values={"actual_quantity_json", "quantity_json"},
|
|
89
113
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
90
114
|
)
|
|
91
|
-
@dataclass(kw_only=True)
|
|
115
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
92
116
|
class RecipeInput:
|
|
93
117
|
id: base_t.ObjectId
|
|
94
118
|
input_id: base_t.ObjectId
|
|
95
|
-
input_lot_recipe_id:
|
|
119
|
+
input_lot_recipe_id: base_t.ObjectId | None
|
|
96
120
|
recipe_step_id: base_t.ObjectId
|
|
97
|
-
quantity_dec: Decimal
|
|
98
121
|
quantity_json: base_t.JsonValue
|
|
99
|
-
curve_id:
|
|
100
|
-
actual_quantity_dec: Decimal
|
|
122
|
+
curve_id: base_t.ObjectId | None
|
|
101
123
|
actual_quantity_json: base_t.JsonValue
|
|
102
|
-
input_type: str
|
|
103
124
|
behavior: str
|
|
125
|
+
ingredient_role_id: base_t.ObjectId | None
|
|
126
|
+
quantity_dec: Decimal | None = None
|
|
127
|
+
actual_quantity_dec: Decimal | None = None
|
|
104
128
|
|
|
105
129
|
|
|
106
130
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
107
|
-
@
|
|
131
|
+
@serial_class(
|
|
132
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeStep",
|
|
133
|
+
)
|
|
134
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
108
135
|
class RecipeStep:
|
|
109
|
-
name:
|
|
136
|
+
name: str | None
|
|
110
137
|
recipe_step_id: base_t.ObjectId
|
|
111
138
|
recipe_step_number: int
|
|
112
|
-
instructions:
|
|
139
|
+
instructions: str | None = None
|
|
113
140
|
|
|
114
141
|
|
|
115
142
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
116
|
-
@
|
|
143
|
+
@serial_class(
|
|
144
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeStepGroup",
|
|
145
|
+
)
|
|
146
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
117
147
|
class RecipeStepGroup:
|
|
118
|
-
name:
|
|
148
|
+
name: str | None
|
|
119
149
|
recipe_steps: list[RecipeStep]
|
|
120
150
|
|
|
121
151
|
|
|
122
152
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
123
|
-
@
|
|
153
|
+
@serial_class(
|
|
154
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeWorkflowStep",
|
|
155
|
+
)
|
|
156
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
124
157
|
class RecipeWorkflowStep:
|
|
158
|
+
recipe_workflow_step_name: str | None
|
|
125
159
|
recipe_workflow_step_id: base_t.ObjectId
|
|
126
160
|
workflow_step_id: base_t.ObjectId
|
|
127
161
|
recipe_step_groups: list[RecipeStepGroup]
|
|
@@ -129,26 +163,40 @@ class RecipeWorkflowStep:
|
|
|
129
163
|
|
|
130
164
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
131
165
|
@serial_class(
|
|
166
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeStepRelationship",
|
|
132
167
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
133
168
|
)
|
|
134
|
-
@dataclass(kw_only=True)
|
|
169
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
135
170
|
class RecipeStepRelationship:
|
|
136
171
|
step_relationship_id: base_t.ObjectId
|
|
137
|
-
name:
|
|
172
|
+
name: str | None
|
|
138
173
|
source_recipe_workflow_step_id: base_t.ObjectId
|
|
139
174
|
target_recipe_step_id: base_t.ObjectId
|
|
140
|
-
quantity_dec:
|
|
141
|
-
actual_quantity_dec:
|
|
175
|
+
quantity_dec: Decimal | None = None
|
|
176
|
+
actual_quantity_dec: Decimal | None = None
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
180
|
+
@serial_class(
|
|
181
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeLockStatus",
|
|
182
|
+
)
|
|
183
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
184
|
+
class RecipeLockStatus:
|
|
185
|
+
has_locked_inputs: bool
|
|
186
|
+
has_locked_outputs: bool
|
|
142
187
|
|
|
143
188
|
|
|
144
189
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
145
|
-
@
|
|
190
|
+
@serial_class(
|
|
191
|
+
named_type_path="sdk.api.recipes.get_recipes_data.Recipe",
|
|
192
|
+
)
|
|
193
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
146
194
|
class Recipe:
|
|
147
195
|
recipe_id: base_t.ObjectId
|
|
148
196
|
create_datetime: str
|
|
149
197
|
last_modified_datetime: str
|
|
150
198
|
name: str
|
|
151
|
-
notes:
|
|
199
|
+
notes: str | None
|
|
152
200
|
workflow_id: base_t.ObjectId
|
|
153
201
|
metadata: list[recipe_metadata_t.RecipeMetadata]
|
|
154
202
|
inputs: list[RecipeInput]
|
|
@@ -157,12 +205,16 @@ class Recipe:
|
|
|
157
205
|
tag_ids: list[base_t.ObjectId]
|
|
158
206
|
experiment_group_ids: list[base_t.ObjectId]
|
|
159
207
|
step_relationships: list[RecipeStepRelationship]
|
|
160
|
-
|
|
161
|
-
|
|
208
|
+
recipe_lock_status: RecipeLockStatus
|
|
209
|
+
creating_user_id: base_t.ObjectId | None = None
|
|
210
|
+
barcode_value: str | None = None
|
|
162
211
|
|
|
163
212
|
|
|
164
213
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
165
|
-
@
|
|
214
|
+
@serial_class(
|
|
215
|
+
named_type_path="sdk.api.recipes.get_recipes_data.Data",
|
|
216
|
+
)
|
|
217
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
166
218
|
class Data:
|
|
167
219
|
recipes: list[Recipe]
|
|
168
220
|
workflows: list[workflows_t.SimpleWorkflow]
|
|
@@ -170,7 +222,6 @@ class Data:
|
|
|
170
222
|
inputs: list[inputs_t.SimpleInput]
|
|
171
223
|
outputs: list[outputs_t.SimpleOutput]
|
|
172
224
|
output_conditions: list[SimpleOutputCondition]
|
|
173
|
-
users: list[users_t.SimpleUser]
|
|
174
225
|
recipe_tags: list[recipe_tags_t.SimpleRecipeTag]
|
|
175
226
|
experiment_groups: list[experiment_groups_t.SimpleExperimentGroup]
|
|
176
227
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import typing # noqa: F401
|
|
7
|
+
import datetime # noqa: F401
|
|
8
|
+
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from ... import async_batch_t
|
|
13
|
+
from ... import base_t
|
|
14
|
+
from ... import identifier_t
|
|
15
|
+
|
|
16
|
+
__all__: list[str] = [
|
|
17
|
+
"Arguments",
|
|
18
|
+
"Data",
|
|
19
|
+
"ENDPOINT_METHOD",
|
|
20
|
+
"ENDPOINT_PATH",
|
|
21
|
+
"RecipeLockBase",
|
|
22
|
+
"RecipeLockType",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
ENDPOINT_METHOD = "POST"
|
|
26
|
+
ENDPOINT_PATH = "api/external/recipes/lock_recipes"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
30
|
+
class RecipeLockType(StrEnum):
|
|
31
|
+
ALL = "all"
|
|
32
|
+
INPUTS_ONLY = "inputs_only"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
36
|
+
@serial_class(
|
|
37
|
+
named_type_path="sdk.api.recipes.lock_recipes.RecipeLockBase",
|
|
38
|
+
)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
40
|
+
class RecipeLockBase:
|
|
41
|
+
recipe: identifier_t.IdentifierKey
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
45
|
+
@serial_class(
|
|
46
|
+
named_type_path="sdk.api.recipes.lock_recipes.Arguments",
|
|
47
|
+
)
|
|
48
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
49
|
+
class Arguments:
|
|
50
|
+
type: RecipeLockType = RecipeLockType.ALL
|
|
51
|
+
recipes: list[identifier_t.IdentifierKey]
|
|
52
|
+
globally_removable: bool
|
|
53
|
+
lock_samples: bool | None = None
|
|
54
|
+
comments: str | None = None
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
58
|
+
@serial_class(
|
|
59
|
+
named_type_path="sdk.api.recipes.lock_recipes.Data",
|
|
60
|
+
)
|
|
61
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
62
|
+
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
63
|
+
pass
|
|
64
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import typing # noqa: F401
|
|
7
|
+
import datetime # noqa: F401
|
|
8
|
+
from decimal import Decimal # noqa: F401
|
|
9
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from ... import base_t
|
|
12
|
+
from ... import identifier_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"Arguments",
|
|
16
|
+
"Data",
|
|
17
|
+
"ENDPOINT_METHOD",
|
|
18
|
+
"ENDPOINT_PATH",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
ENDPOINT_METHOD = "POST"
|
|
22
|
+
ENDPOINT_PATH = "api/external/recipes/remove_recipe_from_project"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
+
@serial_class(
|
|
27
|
+
named_type_path="sdk.api.recipes.remove_recipe_from_project.Arguments",
|
|
28
|
+
)
|
|
29
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
30
|
+
class Arguments:
|
|
31
|
+
recipe_key: identifier_t.IdentifierKey
|
|
32
|
+
project_key: identifier_t.IdentifierKey
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
36
|
+
@serial_class(
|
|
37
|
+
named_type_path="sdk.api.recipes.remove_recipe_from_project.Data",
|
|
38
|
+
)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
40
|
+
class Data:
|
|
41
|
+
pass
|
|
42
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
#
|
|
3
|
-
# ruff: noqa: E402
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
6
5
|
from __future__ import annotations
|
|
7
6
|
import typing # noqa: F401
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
9
|
+
import dataclasses
|
|
11
10
|
from pkgs.serialization import serial_class
|
|
12
|
-
from ... import
|
|
11
|
+
from ... import base_t
|
|
13
12
|
|
|
14
13
|
__all__: list[str] = [
|
|
15
14
|
"Arguments",
|
|
@@ -25,28 +24,35 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_inputs"
|
|
|
25
24
|
|
|
26
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
27
26
|
@serial_class(
|
|
27
|
+
named_type_path="sdk.api.recipes.set_recipe_inputs.RecipeInputValue",
|
|
28
28
|
to_string_values={"value_numeric"},
|
|
29
29
|
)
|
|
30
|
-
@dataclass(kw_only=True)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
31
31
|
class RecipeInputValue:
|
|
32
32
|
recipe_id: base_t.ObjectId
|
|
33
33
|
input_id: base_t.ObjectId
|
|
34
|
-
recipe_step_id:
|
|
35
|
-
value_numeric:
|
|
36
|
-
value_str:
|
|
37
|
-
set_actual_value:
|
|
38
|
-
lot_recipe_id:
|
|
39
|
-
remove:
|
|
34
|
+
recipe_step_id: base_t.ObjectId | None = None
|
|
35
|
+
value_numeric: Decimal | None = None
|
|
36
|
+
value_str: str | None = None
|
|
37
|
+
set_actual_value: bool | None = None
|
|
38
|
+
lot_recipe_id: base_t.ObjectId | None = None
|
|
39
|
+
remove: bool | None = None
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
43
|
-
@
|
|
43
|
+
@serial_class(
|
|
44
|
+
named_type_path="sdk.api.recipes.set_recipe_inputs.Arguments",
|
|
45
|
+
)
|
|
46
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
44
47
|
class Arguments:
|
|
45
48
|
input_data: list[RecipeInputValue]
|
|
46
49
|
|
|
47
50
|
|
|
48
51
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
49
|
-
@
|
|
52
|
+
@serial_class(
|
|
53
|
+
named_type_path="sdk.api.recipes.set_recipe_inputs.Data",
|
|
54
|
+
)
|
|
55
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
50
56
|
class Data:
|
|
51
57
|
pass
|
|
52
58
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
#
|
|
3
|
-
# ruff: noqa: E402
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
6
5
|
from __future__ import annotations
|
|
7
6
|
import typing # noqa: F401
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
11
|
-
from
|
|
12
|
-
from ... import
|
|
9
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from ... import base_t
|
|
12
|
+
from ... import identifier_t
|
|
13
|
+
from ... import recipe_metadata_t
|
|
13
14
|
|
|
14
15
|
__all__: list[str] = [
|
|
15
16
|
"Arguments",
|
|
@@ -23,14 +24,20 @@ ENDPOINT_PATH = "api/external/recipes/set_recipe_metadata"
|
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
-
@
|
|
27
|
+
@serial_class(
|
|
28
|
+
named_type_path="sdk.api.recipes.set_recipe_metadata.Arguments",
|
|
29
|
+
)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
27
31
|
class Arguments:
|
|
28
32
|
recipe_key: identifier_t.IdentifierKey
|
|
29
33
|
recipe_metadata: list[recipe_metadata_t.MetadataValue]
|
|
30
34
|
|
|
31
35
|
|
|
32
36
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
33
|
-
@
|
|
37
|
+
@serial_class(
|
|
38
|
+
named_type_path="sdk.api.recipes.set_recipe_metadata.Data",
|
|
39
|
+
)
|
|
40
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
34
41
|
class Data:
|
|
35
42
|
pass
|
|
36
43
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import typing # noqa: F401
|
|
7
|
+
import datetime # noqa: F401
|
|
8
|
+
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from pkgs.serialization import serial_union_annotation
|
|
13
|
+
from ... import base_t
|
|
14
|
+
from ... import identifier_t
|
|
15
|
+
|
|
16
|
+
__all__: list[str] = [
|
|
17
|
+
"AnnotationEdit",
|
|
18
|
+
"AnnotationUpdateType",
|
|
19
|
+
"Arguments",
|
|
20
|
+
"Data",
|
|
21
|
+
"ENDPOINT_METHOD",
|
|
22
|
+
"ENDPOINT_PATH",
|
|
23
|
+
"RecipeOutputEditBase",
|
|
24
|
+
"RecipeOutputMergeAnnotations",
|
|
25
|
+
"RecipeOutputReplaceAnnotations",
|
|
26
|
+
"RecipeOutputUpdateAnnotations",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
ENDPOINT_METHOD = "POST"
|
|
30
|
+
ENDPOINT_PATH = "api/external/recipes/set_recipe_output_annotations"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
34
|
+
@serial_class(
|
|
35
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.AnnotationEdit",
|
|
36
|
+
to_string_values={"lower_value", "upper_value"},
|
|
37
|
+
)
|
|
38
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
39
|
+
class AnnotationEdit:
|
|
40
|
+
annotation_type_key: identifier_t.IdentifierKey
|
|
41
|
+
lower_value: Decimal | None = None
|
|
42
|
+
upper_value: Decimal | None = None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
46
|
+
class AnnotationUpdateType(StrEnum):
|
|
47
|
+
MERGE = "merge"
|
|
48
|
+
REPLACE = "replace"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
52
|
+
@serial_class(
|
|
53
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputEditBase",
|
|
54
|
+
)
|
|
55
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
56
|
+
class RecipeOutputEditBase:
|
|
57
|
+
recipe_id: base_t.ObjectId
|
|
58
|
+
output_id: base_t.ObjectId
|
|
59
|
+
experiment_num: int
|
|
60
|
+
annotations: list[AnnotationEdit]
|
|
61
|
+
condition_id: base_t.ObjectId | None = None
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
65
|
+
@serial_class(
|
|
66
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputMergeAnnotations",
|
|
67
|
+
parse_require={"type"},
|
|
68
|
+
)
|
|
69
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
70
|
+
class RecipeOutputMergeAnnotations(RecipeOutputEditBase):
|
|
71
|
+
type: typing.Literal[AnnotationUpdateType.MERGE] = AnnotationUpdateType.MERGE
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
75
|
+
@serial_class(
|
|
76
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputReplaceAnnotations",
|
|
77
|
+
parse_require={"type"},
|
|
78
|
+
)
|
|
79
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
80
|
+
class RecipeOutputReplaceAnnotations(RecipeOutputEditBase):
|
|
81
|
+
type: typing.Literal[AnnotationUpdateType.REPLACE] = AnnotationUpdateType.REPLACE
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
85
|
+
RecipeOutputUpdateAnnotations = typing.Annotated[
|
|
86
|
+
RecipeOutputMergeAnnotations | RecipeOutputReplaceAnnotations,
|
|
87
|
+
serial_union_annotation(
|
|
88
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputUpdateAnnotations",
|
|
89
|
+
discriminator="type",
|
|
90
|
+
discriminator_map={
|
|
91
|
+
"merge": RecipeOutputMergeAnnotations,
|
|
92
|
+
"replace": RecipeOutputReplaceAnnotations,
|
|
93
|
+
},
|
|
94
|
+
),
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
99
|
+
@serial_class(
|
|
100
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.Arguments",
|
|
101
|
+
)
|
|
102
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
103
|
+
class Arguments:
|
|
104
|
+
updates: list[RecipeOutputUpdateAnnotations]
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
108
|
+
@serial_class(
|
|
109
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.Data",
|
|
110
|
+
)
|
|
111
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
112
|
+
class Data:
|
|
113
|
+
pass
|
|
114
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import typing # noqa: F401
|
|
7
|
+
import datetime # noqa: F401
|
|
8
|
+
from decimal import Decimal # noqa: F401
|
|
9
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from ... import base_t
|
|
12
|
+
from ... import response_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"Arguments",
|
|
16
|
+
"Data",
|
|
17
|
+
"ENDPOINT_METHOD",
|
|
18
|
+
"ENDPOINT_PATH",
|
|
19
|
+
"RecipeOutputFileValue",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
ENDPOINT_METHOD = "POST"
|
|
23
|
+
ENDPOINT_PATH = "api/external/recipes/external_set_recipe_output_file"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
27
|
+
@serial_class(
|
|
28
|
+
named_type_path="sdk.api.recipes.set_recipe_output_file.RecipeOutputFileValue",
|
|
29
|
+
)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
31
|
+
class RecipeOutputFileValue:
|
|
32
|
+
recipe_id: base_t.ObjectId
|
|
33
|
+
output_id: base_t.ObjectId
|
|
34
|
+
experiment_num: int
|
|
35
|
+
condition_id: base_t.ObjectId | None = None
|
|
36
|
+
file_id: base_t.ObjectId | None = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
|
+
@serial_class(
|
|
41
|
+
named_type_path="sdk.api.recipes.set_recipe_output_file.Arguments",
|
|
42
|
+
)
|
|
43
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
44
|
+
class Arguments:
|
|
45
|
+
output_file_data: RecipeOutputFileValue
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
49
|
+
@serial_class(
|
|
50
|
+
named_type_path="sdk.api.recipes.set_recipe_output_file.Data",
|
|
51
|
+
)
|
|
52
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
53
|
+
class Data(response_t.Response):
|
|
54
|
+
pass
|
|
55
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|