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,31 +1,46 @@
|
|
|
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
|
|
11
|
-
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
import dataclasses
|
|
12
11
|
from pkgs.serialization import serial_class
|
|
13
|
-
from
|
|
14
|
-
from ... import
|
|
15
|
-
from ... import
|
|
12
|
+
from pkgs.serialization import serial_union_annotation
|
|
13
|
+
from ... import base_t
|
|
14
|
+
from ... import identifier_t
|
|
15
|
+
from ... import inputs_t
|
|
16
|
+
from ... import recipe_inputs_t
|
|
17
|
+
from ... import recipe_workflow_steps_t
|
|
16
18
|
|
|
17
19
|
__all__: list[str] = [
|
|
20
|
+
"AnnotationEdit",
|
|
18
21
|
"Arguments",
|
|
19
22
|
"Data",
|
|
20
23
|
"ENDPOINT_METHOD",
|
|
21
24
|
"ENDPOINT_PATH",
|
|
25
|
+
"MixStepMatchStrategy",
|
|
26
|
+
"PlaceholderBase",
|
|
27
|
+
"PlaceholderDisplayMode",
|
|
28
|
+
"PlaceholderType",
|
|
22
29
|
"RecipeInputEdit",
|
|
23
30
|
"RecipeInputEditAddInput",
|
|
31
|
+
"RecipeInputEditAddInstructions",
|
|
24
32
|
"RecipeInputEditBase",
|
|
33
|
+
"RecipeInputEditChangeBasisViewed",
|
|
25
34
|
"RecipeInputEditClearInputs",
|
|
26
35
|
"RecipeInputEditInputBase",
|
|
36
|
+
"RecipeInputEditPlaceholder",
|
|
37
|
+
"RecipeInputEditSetLot",
|
|
38
|
+
"RecipeInputEditSetRole",
|
|
27
39
|
"RecipeInputEditType",
|
|
40
|
+
"RecipeInputEditUpdateAnnotations",
|
|
28
41
|
"RecipeInputEditUpsertInput",
|
|
42
|
+
"RecipeInputPlaceholder",
|
|
43
|
+
"SubcategoryPlaceholder",
|
|
29
44
|
]
|
|
30
45
|
|
|
31
46
|
ENDPOINT_METHOD = "POST"
|
|
@@ -37,62 +52,233 @@ class RecipeInputEditType(StrEnum):
|
|
|
37
52
|
CLEAR_INPUTS = "clear_inputs"
|
|
38
53
|
UPSERT_INPUT = "upsert_input"
|
|
39
54
|
ADD_INPUT = "add_input"
|
|
55
|
+
UPDATE_ANNOTATIONS = "update_annotations"
|
|
56
|
+
SET_LOT = "set_lot"
|
|
57
|
+
CHANGE_BASIS = "change_basis"
|
|
58
|
+
ADD_INSTRUCTIONS = "add_instructions"
|
|
59
|
+
SET_ROLE = "set_role"
|
|
60
|
+
SET_PLACEHOLDER = "set_placeholder"
|
|
40
61
|
|
|
41
62
|
|
|
42
63
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
43
|
-
|
|
64
|
+
class MixStepMatchStrategy(StrEnum):
|
|
65
|
+
FIRST = "first"
|
|
66
|
+
LAST = "last"
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
70
|
+
@serial_class(
|
|
71
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditBase",
|
|
72
|
+
)
|
|
73
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
44
74
|
class RecipeInputEditBase:
|
|
45
75
|
type: RecipeInputEditType
|
|
46
76
|
|
|
47
77
|
|
|
48
78
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
49
79
|
@serial_class(
|
|
80
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditClearInputs",
|
|
50
81
|
parse_require={"type"},
|
|
51
82
|
)
|
|
52
|
-
@dataclass(kw_only=True)
|
|
83
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
53
84
|
class RecipeInputEditClearInputs(RecipeInputEditBase):
|
|
54
85
|
type: typing.Literal[RecipeInputEditType.CLEAR_INPUTS] = RecipeInputEditType.CLEAR_INPUTS
|
|
55
86
|
|
|
56
87
|
|
|
57
88
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
58
89
|
@serial_class(
|
|
90
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditInputBase",
|
|
59
91
|
to_string_values={"value_numeric"},
|
|
60
92
|
)
|
|
61
|
-
@dataclass(kw_only=True)
|
|
93
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
62
94
|
class RecipeInputEditInputBase(RecipeInputEditBase):
|
|
63
95
|
ingredient_key: identifier_t.IdentifierKey
|
|
64
|
-
quantity_basis: recipe_inputs_t.QuantityBasis = recipe_inputs_t.QuantityBasis.MASS
|
|
96
|
+
quantity_basis: recipe_inputs_t.QuantityBasis | None = recipe_inputs_t.QuantityBasis.MASS
|
|
65
97
|
input_value_type: recipe_inputs_t.InputValueType = recipe_inputs_t.InputValueType.VALUE
|
|
66
|
-
value_numeric:
|
|
67
|
-
value_str:
|
|
68
|
-
|
|
98
|
+
value_numeric: Decimal | None = None
|
|
99
|
+
value_str: str | None = None
|
|
100
|
+
behavior: inputs_t.IngredientBehavior | None = None
|
|
101
|
+
calculation_key: identifier_t.IdentifierKey | None = None
|
|
69
102
|
|
|
70
103
|
|
|
71
104
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
72
105
|
@serial_class(
|
|
106
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditChangeBasisViewed",
|
|
73
107
|
parse_require={"type"},
|
|
74
108
|
)
|
|
75
|
-
@dataclass(kw_only=True)
|
|
109
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
110
|
+
class RecipeInputEditChangeBasisViewed(RecipeInputEditInputBase):
|
|
111
|
+
type: typing.Literal[RecipeInputEditType.CHANGE_BASIS] = RecipeInputEditType.CHANGE_BASIS
|
|
112
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
116
|
+
@serial_class(
|
|
117
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditUpsertInput",
|
|
118
|
+
parse_require={"type"},
|
|
119
|
+
)
|
|
120
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
76
121
|
class RecipeInputEditUpsertInput(RecipeInputEditInputBase):
|
|
77
122
|
type: typing.Literal[RecipeInputEditType.UPSERT_INPUT] = RecipeInputEditType.UPSERT_INPUT
|
|
78
123
|
clear_first: bool
|
|
124
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
79
125
|
|
|
80
126
|
|
|
81
127
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
82
128
|
@serial_class(
|
|
129
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditAddInput",
|
|
83
130
|
parse_require={"type"},
|
|
84
131
|
)
|
|
85
|
-
@dataclass(kw_only=True)
|
|
132
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
86
133
|
class RecipeInputEditAddInput(RecipeInputEditInputBase):
|
|
87
134
|
type: typing.Literal[RecipeInputEditType.ADD_INPUT] = RecipeInputEditType.ADD_INPUT
|
|
88
135
|
|
|
89
136
|
|
|
90
137
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
91
|
-
|
|
138
|
+
@serial_class(
|
|
139
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditSetLot",
|
|
140
|
+
parse_require={"type"},
|
|
141
|
+
)
|
|
142
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
143
|
+
class RecipeInputEditSetLot(RecipeInputEditBase):
|
|
144
|
+
type: typing.Literal[RecipeInputEditType.SET_LOT] = RecipeInputEditType.SET_LOT
|
|
145
|
+
ingredient_key: identifier_t.IdentifierKey
|
|
146
|
+
ingredient_lot_recipe_key: identifier_t.IdentifierKey
|
|
147
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
151
|
+
@serial_class(
|
|
152
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditAddInstructions",
|
|
153
|
+
parse_require={"type"},
|
|
154
|
+
)
|
|
155
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
156
|
+
class RecipeInputEditAddInstructions(RecipeInputEditBase):
|
|
157
|
+
type: typing.Literal[RecipeInputEditType.ADD_INSTRUCTIONS] = RecipeInputEditType.ADD_INSTRUCTIONS
|
|
158
|
+
instructions: str
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
162
|
+
@serial_class(
|
|
163
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.AnnotationEdit",
|
|
164
|
+
to_string_values={"lower_value", "upper_value"},
|
|
165
|
+
)
|
|
166
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
167
|
+
class AnnotationEdit:
|
|
168
|
+
annotation_type_key: identifier_t.IdentifierKey
|
|
169
|
+
lower_value: Decimal | None = None
|
|
170
|
+
upper_value: Decimal | None = None
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
174
|
+
@serial_class(
|
|
175
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditUpdateAnnotations",
|
|
176
|
+
parse_require={"type"},
|
|
177
|
+
)
|
|
178
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
179
|
+
class RecipeInputEditUpdateAnnotations(RecipeInputEditInputBase):
|
|
180
|
+
type: typing.Literal[RecipeInputEditType.UPDATE_ANNOTATIONS] = RecipeInputEditType.UPDATE_ANNOTATIONS
|
|
181
|
+
clear_first: bool
|
|
182
|
+
annotations: list[AnnotationEdit]
|
|
183
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
187
|
+
@serial_class(
|
|
188
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditSetRole",
|
|
189
|
+
parse_require={"type"},
|
|
190
|
+
)
|
|
191
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
192
|
+
class RecipeInputEditSetRole(RecipeInputEditBase):
|
|
193
|
+
type: typing.Literal[RecipeInputEditType.SET_ROLE] = RecipeInputEditType.SET_ROLE
|
|
194
|
+
ingredient_key: identifier_t.IdentifierKey
|
|
195
|
+
ingredient_role_key: identifier_t.IdentifierKey | None
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
199
|
+
class PlaceholderType(StrEnum):
|
|
200
|
+
SUBCATEGORY = "subcategory"
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
204
|
+
class PlaceholderDisplayMode(StrEnum):
|
|
205
|
+
INLINE = "inline"
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
209
|
+
@serial_class(
|
|
210
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.PlaceholderBase",
|
|
211
|
+
)
|
|
212
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
213
|
+
class PlaceholderBase:
|
|
214
|
+
type: PlaceholderType
|
|
215
|
+
require_for_creation: bool = True
|
|
216
|
+
display_mode: PlaceholderDisplayMode = PlaceholderDisplayMode.INLINE
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
220
|
+
@serial_class(
|
|
221
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.SubcategoryPlaceholder",
|
|
222
|
+
parse_require={"type"},
|
|
223
|
+
)
|
|
224
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
225
|
+
class SubcategoryPlaceholder(PlaceholderBase):
|
|
226
|
+
type: typing.Literal[PlaceholderType.SUBCATEGORY] = PlaceholderType.SUBCATEGORY
|
|
227
|
+
subcategory_identifier: identifier_t.IdentifierKey
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
231
|
+
RecipeInputPlaceholder = typing.Annotated[
|
|
232
|
+
typing.Union[SubcategoryPlaceholder],
|
|
233
|
+
serial_union_annotation(
|
|
234
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputPlaceholder",
|
|
235
|
+
discriminator="type",
|
|
236
|
+
discriminator_map={
|
|
237
|
+
"subcategory": SubcategoryPlaceholder,
|
|
238
|
+
},
|
|
239
|
+
),
|
|
240
|
+
]
|
|
92
241
|
|
|
93
242
|
|
|
94
243
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
95
|
-
@
|
|
244
|
+
@serial_class(
|
|
245
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditPlaceholder",
|
|
246
|
+
parse_require={"type"},
|
|
247
|
+
)
|
|
248
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
249
|
+
class RecipeInputEditPlaceholder(RecipeInputEditBase):
|
|
250
|
+
type: typing.Literal[RecipeInputEditType.SET_PLACEHOLDER] = RecipeInputEditType.SET_PLACEHOLDER
|
|
251
|
+
ingredient_key: identifier_t.IdentifierKey
|
|
252
|
+
placeholder: RecipeInputPlaceholder
|
|
253
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
257
|
+
RecipeInputEdit = typing.Annotated[
|
|
258
|
+
RecipeInputEditClearInputs | RecipeInputEditUpsertInput | RecipeInputEditAddInput | RecipeInputEditUpdateAnnotations | RecipeInputEditSetLot | RecipeInputEditChangeBasisViewed | RecipeInputEditAddInstructions | RecipeInputEditSetRole | RecipeInputEditPlaceholder,
|
|
259
|
+
serial_union_annotation(
|
|
260
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEdit",
|
|
261
|
+
discriminator="type",
|
|
262
|
+
discriminator_map={
|
|
263
|
+
"clear_inputs": RecipeInputEditClearInputs,
|
|
264
|
+
"upsert_input": RecipeInputEditUpsertInput,
|
|
265
|
+
"add_input": RecipeInputEditAddInput,
|
|
266
|
+
"update_annotations": RecipeInputEditUpdateAnnotations,
|
|
267
|
+
"set_lot": RecipeInputEditSetLot,
|
|
268
|
+
"change_basis": RecipeInputEditChangeBasisViewed,
|
|
269
|
+
"add_instructions": RecipeInputEditAddInstructions,
|
|
270
|
+
"set_role": RecipeInputEditSetRole,
|
|
271
|
+
"set_placeholder": RecipeInputEditPlaceholder,
|
|
272
|
+
},
|
|
273
|
+
),
|
|
274
|
+
]
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
278
|
+
@serial_class(
|
|
279
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.Arguments",
|
|
280
|
+
)
|
|
281
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
96
282
|
class Arguments:
|
|
97
283
|
recipe_key: identifier_t.IdentifierKey
|
|
98
284
|
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier
|
|
@@ -100,7 +286,10 @@ class Arguments:
|
|
|
100
286
|
|
|
101
287
|
|
|
102
288
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
103
|
-
@
|
|
289
|
+
@serial_class(
|
|
290
|
+
named_type_path="sdk.api.recipes.edit_recipe_inputs.Data",
|
|
291
|
+
)
|
|
292
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
104
293
|
class Data:
|
|
105
294
|
pass
|
|
106
295
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
"RecipeColumnCalculationValue",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
ENDPOINT_METHOD = "GET"
|
|
23
|
+
ENDPOINT_PATH = "api/external/recipes/get_column_calculation_values"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
27
|
+
@serial_class(
|
|
28
|
+
named_type_path="sdk.api.recipes.get_column_calculation_values.Arguments",
|
|
29
|
+
)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
31
|
+
class Arguments:
|
|
32
|
+
recipe_keys: list[identifier_t.IdentifierKey]
|
|
33
|
+
calculation_key: identifier_t.IdentifierKey
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
37
|
+
@serial_class(
|
|
38
|
+
named_type_path="sdk.api.recipes.get_column_calculation_values.RecipeColumnCalculationValue",
|
|
39
|
+
to_string_values={"calculation_quantity"},
|
|
40
|
+
)
|
|
41
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
42
|
+
class RecipeColumnCalculationValue:
|
|
43
|
+
recipe_id: base_t.ObjectId
|
|
44
|
+
ingredient_id: base_t.ObjectId
|
|
45
|
+
recipe_step_id: base_t.ObjectId
|
|
46
|
+
recipe_input_id: base_t.ObjectId
|
|
47
|
+
calculation_quantity: Decimal | None = None
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
51
|
+
@serial_class(
|
|
52
|
+
named_type_path="sdk.api.recipes.get_column_calculation_values.Data",
|
|
53
|
+
)
|
|
54
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
55
|
+
class Data:
|
|
56
|
+
values: list[RecipeColumnCalculationValue]
|
|
57
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,15 +1,15 @@
|
|
|
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 curves_t
|
|
13
13
|
|
|
14
14
|
__all__: list[str] = [
|
|
15
15
|
"Arguments",
|
|
@@ -23,14 +23,20 @@ ENDPOINT_PATH = "api/external/recipes/external_get_curve"
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
-
@
|
|
26
|
+
@serial_class(
|
|
27
|
+
named_type_path="sdk.api.recipes.get_curve.Arguments",
|
|
28
|
+
)
|
|
29
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
27
30
|
class Arguments:
|
|
28
|
-
recipe_output_id:
|
|
29
|
-
recipe_input_id:
|
|
31
|
+
recipe_output_id: base_t.ObjectId | None = None
|
|
32
|
+
recipe_input_id: base_t.ObjectId | None = None
|
|
30
33
|
|
|
31
34
|
|
|
32
35
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
33
|
-
@
|
|
36
|
+
@serial_class(
|
|
37
|
+
named_type_path="sdk.api.recipes.get_curve.Data",
|
|
38
|
+
)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
34
40
|
class Data:
|
|
35
41
|
curve: curves_t.Curve
|
|
36
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,16 +1,15 @@
|
|
|
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
|
|
13
|
-
from ... import
|
|
11
|
+
from ... import base_t
|
|
12
|
+
from ... import calculations_t
|
|
14
13
|
|
|
15
14
|
__all__: list[str] = [
|
|
16
15
|
"Arguments",
|
|
@@ -25,27 +24,34 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_calculations"
|
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
-
@
|
|
27
|
+
@serial_class(
|
|
28
|
+
named_type_path="sdk.api.recipes.get_recipe_calculations.Arguments",
|
|
29
|
+
)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
29
31
|
class Arguments:
|
|
30
32
|
recipe_ids: list[base_t.ObjectId]
|
|
31
|
-
calculation_ids:
|
|
33
|
+
calculation_ids: list[base_t.ObjectId] | None = None
|
|
32
34
|
|
|
33
35
|
|
|
34
36
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
37
|
@serial_class(
|
|
38
|
+
named_type_path="sdk.api.recipes.get_recipe_calculations.RecipeCalculation",
|
|
36
39
|
unconverted_values={"quantity_json"},
|
|
37
40
|
to_string_values={"quantity_dec"},
|
|
38
41
|
)
|
|
39
|
-
@dataclass(kw_only=True)
|
|
42
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
40
43
|
class RecipeCalculation:
|
|
41
44
|
recipe_id: base_t.ObjectId
|
|
42
45
|
calculation_id: base_t.ObjectId
|
|
43
|
-
quantity_dec:
|
|
44
|
-
quantity_json:
|
|
46
|
+
quantity_dec: Decimal | None = None
|
|
47
|
+
quantity_json: base_t.JsonValue | None = None
|
|
45
48
|
|
|
46
49
|
|
|
47
50
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
48
|
-
@
|
|
51
|
+
@serial_class(
|
|
52
|
+
named_type_path="sdk.api.recipes.get_recipe_calculations.Data",
|
|
53
|
+
)
|
|
54
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
49
55
|
class Data:
|
|
50
56
|
recipe_calculations: list[RecipeCalculation]
|
|
51
57
|
calculations: list[calculations_t.Calculation]
|
|
@@ -1,15 +1,15 @@
|
|
|
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 recipe_links_t
|
|
13
13
|
|
|
14
14
|
__all__: list[str] = [
|
|
15
15
|
"Arguments",
|
|
@@ -23,15 +23,21 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_links"
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
-
@
|
|
26
|
+
@serial_class(
|
|
27
|
+
named_type_path="sdk.api.recipes.get_recipe_links.Arguments",
|
|
28
|
+
)
|
|
29
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
27
30
|
class Arguments:
|
|
28
31
|
recipe_ids: list[base_t.ObjectId]
|
|
29
32
|
depth: int = 1
|
|
30
|
-
link_types:
|
|
33
|
+
link_types: list[recipe_links_t.RecipeLinkType] | None
|
|
31
34
|
|
|
32
35
|
|
|
33
36
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
34
|
-
@
|
|
37
|
+
@serial_class(
|
|
38
|
+
named_type_path="sdk.api.recipes.get_recipe_links.Data",
|
|
39
|
+
)
|
|
40
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
35
41
|
class Data:
|
|
36
42
|
recipe_links: list[recipe_links_t.RecipeLink]
|
|
37
43
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,14 +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
|
-
|
|
11
|
-
from
|
|
9
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from ... import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
14
14
|
"Arguments",
|
|
@@ -23,20 +23,29 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_names"
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
-
@
|
|
26
|
+
@serial_class(
|
|
27
|
+
named_type_path="sdk.api.recipes.get_recipe_names.Arguments",
|
|
28
|
+
)
|
|
29
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
27
30
|
class Arguments:
|
|
28
31
|
project_id: base_t.ObjectId
|
|
29
32
|
|
|
30
33
|
|
|
31
34
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
-
@
|
|
35
|
+
@serial_class(
|
|
36
|
+
named_type_path="sdk.api.recipes.get_recipe_names.SimpleRecipe",
|
|
37
|
+
)
|
|
38
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
33
39
|
class SimpleRecipe:
|
|
34
40
|
id: base_t.ObjectId
|
|
35
41
|
name: str
|
|
36
42
|
|
|
37
43
|
|
|
38
44
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
39
|
-
@
|
|
45
|
+
@serial_class(
|
|
46
|
+
named_type_path="sdk.api.recipes.get_recipe_names.Data",
|
|
47
|
+
)
|
|
48
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
40
49
|
class Data:
|
|
41
50
|
recipes: list[SimpleRecipe]
|
|
42
51
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,16 +1,15 @@
|
|
|
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
|
|
13
|
-
from ... import
|
|
11
|
+
from ... import base_t
|
|
12
|
+
from ... import recipe_output_metadata_t
|
|
14
13
|
|
|
15
14
|
__all__: list[str] = [
|
|
16
15
|
"Arguments",
|
|
@@ -25,26 +24,33 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_output_metadata"
|
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
-
@
|
|
27
|
+
@serial_class(
|
|
28
|
+
named_type_path="sdk.api.recipes.get_recipe_output_metadata.Arguments",
|
|
29
|
+
)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
29
31
|
class Arguments:
|
|
30
32
|
recipe_output_ids: list[base_t.ObjectId]
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
34
36
|
@serial_class(
|
|
37
|
+
named_type_path="sdk.api.recipes.get_recipe_output_metadata.RecipeOutputMetadata",
|
|
35
38
|
unconverted_values={"quantity_json"},
|
|
36
39
|
to_string_values={"quantity_dec"},
|
|
37
40
|
)
|
|
38
|
-
@dataclass(kw_only=True)
|
|
41
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
39
42
|
class RecipeOutputMetadata:
|
|
40
43
|
recipe_output_id: base_t.ObjectId
|
|
41
44
|
recipe_output_metadata_field_id: base_t.ObjectId
|
|
42
|
-
quantity_dec: Decimal
|
|
43
|
-
quantity_json: base_t.JsonValue
|
|
45
|
+
quantity_dec: Decimal | None = None
|
|
46
|
+
quantity_json: base_t.JsonValue | None = None
|
|
44
47
|
|
|
45
48
|
|
|
46
49
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
47
|
-
@
|
|
50
|
+
@serial_class(
|
|
51
|
+
named_type_path="sdk.api.recipes.get_recipe_output_metadata.Data",
|
|
52
|
+
)
|
|
53
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
48
54
|
class Data:
|
|
49
55
|
recipe_output_metadata: list[RecipeOutputMetadata]
|
|
50
56
|
recipe_output_metadata_fields: list[recipe_output_metadata_t.RecipeOutputMetadataField]
|