UncountablePythonSDK 0.0.7__py3-none-any.whl → 0.0.92__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.
- UncountablePythonSDK-0.0.92.dist-info/METADATA +61 -0
- UncountablePythonSDK-0.0.92.dist-info/RECORD +301 -0
- {UncountablePythonSDK-0.0.7.dist-info → UncountablePythonSDK-0.0.92.dist-info}/WHEEL +1 -1
- {UncountablePythonSDK-0.0.7.dist-info → UncountablePythonSDK-0.0.92.dist-info}/top_level.txt +1 -1
- docs/.gitignore +1 -0
- docs/conf.py +57 -0
- docs/index.md +13 -0
- docs/justfile +12 -0
- docs/quickstart.md +19 -0
- docs/requirements.txt +7 -0
- docs/static/favicons/android-chrome-192x192.png +0 -0
- docs/static/favicons/android-chrome-512x512.png +0 -0
- docs/static/favicons/apple-touch-icon.png +0 -0
- docs/static/favicons/browserconfig.xml +9 -0
- docs/static/favicons/favicon-16x16.png +0 -0
- docs/static/favicons/favicon-32x32.png +0 -0
- docs/static/favicons/manifest.json +18 -0
- docs/static/favicons/mstile-150x150.png +0 -0
- docs/static/favicons/safari-pinned-tab.svg +32 -0
- docs/static/logo_blue.png +0 -0
- examples/async_batch.py +35 -0
- examples/create_entity.py +22 -17
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +50 -0
- examples/integration-server/jobs/materials_auto/example_cron.py +18 -0
- examples/integration-server/jobs/materials_auto/example_wh.py +15 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +43 -0
- examples/integration-server/pyproject.toml +224 -0
- examples/invoke_uploader.py +26 -0
- examples/set_recipe_metadata_file.py +40 -0
- examples/set_recipe_output_file_sdk.py +26 -0
- examples/upload_files.py +18 -0
- pkgs/argument_parser/__init__.py +5 -0
- pkgs/argument_parser/_is_enum.py +1 -6
- pkgs/argument_parser/argument_parser.py +232 -76
- pkgs/argument_parser/case_convert.py +4 -3
- pkgs/filesystem_utils/__init__.py +20 -0
- pkgs/filesystem_utils/_blob_session.py +137 -0
- pkgs/filesystem_utils/_gdrive_session.py +309 -0
- pkgs/filesystem_utils/_local_session.py +69 -0
- pkgs/filesystem_utils/_s3_session.py +117 -0
- pkgs/filesystem_utils/_sftp_session.py +147 -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/opaque_key.py +1 -1
- pkgs/serialization/serial_alias.py +47 -0
- pkgs/serialization/serial_class.py +65 -50
- 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/_get_type_for_serialization.py +1 -3
- pkgs/serialization_util/convert_to_snakecase.py +27 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +118 -73
- pkgs/strenum_compat/strenum_compat.py +1 -9
- pkgs/type_spec/actions_registry/__init__.py +0 -0
- pkgs/type_spec/actions_registry/__main__.py +126 -0
- pkgs/type_spec/actions_registry/emit_typescript.py +182 -0
- pkgs/type_spec/builder.py +475 -89
- pkgs/type_spec/config.py +24 -19
- pkgs/type_spec/emit_io_ts.py +5 -2
- pkgs/type_spec/emit_open_api.py +266 -32
- pkgs/type_spec/emit_open_api_util.py +32 -13
- pkgs/type_spec/emit_python.py +601 -150
- pkgs/type_spec/emit_typescript.py +74 -273
- pkgs/type_spec/emit_typescript_util.py +239 -5
- pkgs/type_spec/load_types.py +55 -10
- pkgs/type_spec/open_api_util.py +30 -41
- pkgs/type_spec/parts/base.py.prepart +4 -3
- pkgs/type_spec/type_info/emit_type_info.py +178 -16
- pkgs/type_spec/util.py +11 -11
- pkgs/type_spec/value_spec/__main__.py +3 -3
- pkgs/type_spec/value_spec/convert_type.py +8 -1
- pkgs/type_spec/value_spec/emit_python.py +13 -4
- uncountable/__init__.py +1 -2
- uncountable/core/__init__.py +12 -2
- uncountable/core/async_batch.py +37 -0
- uncountable/core/client.py +293 -43
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +135 -0
- uncountable/core/types.py +17 -0
- uncountable/integration/__init__.py +0 -0
- uncountable/integration/cli.py +49 -0
- uncountable/integration/construct_client.py +51 -0
- uncountable/integration/cron.py +29 -0
- uncountable/integration/db/__init__.py +0 -0
- uncountable/integration/db/connect.py +18 -0
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +13 -0
- uncountable/integration/executors/__init__.py +0 -0
- uncountable/integration/executors/executors.py +148 -0
- uncountable/integration/executors/generic_upload_executor.py +284 -0
- uncountable/integration/executors/script_executor.py +25 -0
- uncountable/integration/job.py +87 -0
- uncountable/integration/queue_runner/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/__init__.py +24 -0
- uncountable/integration/queue_runner/command_server/command_client.py +68 -0
- uncountable/integration/queue_runner/command_server/command_server.py +64 -0
- uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto +22 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +40 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +38 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +129 -0
- uncountable/integration/queue_runner/command_server/types.py +52 -0
- uncountable/integration/queue_runner/datastore/__init__.py +3 -0
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +93 -0
- uncountable/integration/queue_runner/datastore/interface.py +19 -0
- uncountable/integration/queue_runner/datastore/model.py +17 -0
- uncountable/integration/queue_runner/job_scheduler.py +163 -0
- uncountable/integration/queue_runner/queue_runner.py +26 -0
- uncountable/integration/queue_runner/types.py +7 -0
- uncountable/integration/queue_runner/worker.py +119 -0
- uncountable/integration/scan_profiles.py +67 -0
- uncountable/integration/scheduler.py +150 -0
- uncountable/integration/secret_retrieval/__init__.py +3 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
- uncountable/integration/server.py +117 -0
- uncountable/integration/telemetry.py +209 -0
- uncountable/integration/webhook_server/entrypoint.py +170 -0
- uncountable/types/__init__.py +151 -5
- uncountable/types/api/batch/execute_batch.py +15 -7
- uncountable/types/api/batch/execute_batch_load_async.py +42 -0
- uncountable/types/api/chemical/__init__.py +1 -0
- uncountable/types/api/chemical/convert_chemical_formats.py +63 -0
- uncountable/types/api/entity/create_entities.py +23 -10
- uncountable/types/api/entity/create_entity.py +21 -12
- uncountable/types/api/entity/get_entities_data.py +19 -29
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/entity/list_entities.py +28 -20
- uncountable/types/api/entity/lock_entity.py +45 -0
- uncountable/types/api/entity/resolve_entity_ids.py +19 -7
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +13 -28
- uncountable/types/api/entity/transition_entity_phase.py +80 -0
- 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 +44 -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/__init__.py +1 -0
- uncountable/types/api/id_source/list_id_source.py +56 -0
- uncountable/types/api/id_source/match_id_source.py +54 -0
- uncountable/types/api/input_groups/get_input_group_names.py +18 -7
- uncountable/types/api/inputs/create_inputs.py +25 -24
- uncountable/types/api/inputs/get_input_data.py +37 -31
- uncountable/types/api/inputs/get_input_names.py +20 -9
- uncountable/types/api/inputs/get_inputs_data.py +33 -27
- uncountable/types/api/inputs/set_input_attribute_values.py +18 -13
- 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/material_families/__init__.py +1 -0
- uncountable/types/api/material_families/update_entity_material_families.py +48 -0
- uncountable/types/api/outputs/get_output_data.py +38 -29
- uncountable/types/api/outputs/get_output_names.py +20 -9
- uncountable/types/api/outputs/resolve_output_conditions.py +23 -10
- uncountable/types/api/permissions/__init__.py +1 -0
- uncountable/types/api/permissions/set_core_permissions.py +105 -0
- uncountable/types/api/project/get_projects.py +23 -19
- uncountable/types/api/project/get_projects_data.py +26 -43
- uncountable/types/api/recipe_links/__init__.py +1 -0
- uncountable/types/api/recipe_links/create_recipe_link.py +46 -0
- uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +21 -10
- uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
- uncountable/types/api/recipes/archive_recipes.py +42 -0
- uncountable/types/api/recipes/associate_recipe_as_input.py +44 -0
- uncountable/types/api/recipes/associate_recipe_as_lot.py +43 -0
- uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
- uncountable/types/api/recipes/create_recipe.py +51 -0
- uncountable/types/api/recipes/create_recipes.py +25 -24
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +42 -0
- uncountable/types/api/recipes/edit_recipe_inputs.py +283 -0
- uncountable/types/api/recipes/get_column_calculation_values.py +58 -0
- uncountable/types/api/recipes/get_curve.py +13 -27
- uncountable/types/api/recipes/get_recipe_calculations.py +21 -21
- uncountable/types/api/recipes/get_recipe_links.py +14 -6
- uncountable/types/api/recipes/get_recipe_names.py +18 -7
- uncountable/types/api/recipes/get_recipe_output_metadata.py +18 -19
- uncountable/types/api/recipes/get_recipes_data.py +83 -144
- uncountable/types/api/recipes/lock_recipes.py +63 -0
- uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
- uncountable/types/api/recipes/set_recipe_inputs.py +21 -11
- uncountable/types/api/recipes/set_recipe_metadata.py +43 -0
- uncountable/types/api/recipes/set_recipe_output_annotations.py +115 -0
- uncountable/types/api/recipes/set_recipe_output_file.py +56 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +28 -15
- uncountable/types/api/recipes/set_recipe_tags.py +109 -0
- uncountable/types/api/recipes/unarchive_recipes.py +41 -0
- uncountable/types/api/recipes/unlock_recipes.py +50 -0
- uncountable/types/api/triggers/__init__.py +1 -0
- uncountable/types/api/triggers/run_trigger.py +43 -0
- uncountable/types/api/uploader/__init__.py +1 -0
- uncountable/types/api/uploader/invoke_uploader.py +47 -0
- uncountable/types/async_batch.py +13 -0
- uncountable/types/async_batch_processor.py +384 -0
- uncountable/types/async_batch_t.py +97 -0
- uncountable/types/async_jobs.py +9 -0
- uncountable/types/async_jobs_t.py +53 -0
- uncountable/types/auth_retrieval.py +12 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/base.py +5 -78
- uncountable/types/base_t.py +85 -0
- uncountable/types/calculations.py +8 -0
- uncountable/types/calculations_t.py +27 -0
- uncountable/types/chemical_structure.py +8 -0
- uncountable/types/chemical_structure_t.py +28 -0
- uncountable/types/client_base.py +1115 -76
- uncountable/types/client_config.py +8 -0
- uncountable/types/client_config_t.py +26 -0
- uncountable/types/curves.py +10 -0
- uncountable/types/curves_t.py +51 -0
- uncountable/types/entity.py +8 -266
- uncountable/types/entity_t.py +393 -0
- uncountable/types/experiment_groups.py +8 -0
- uncountable/types/experiment_groups_t.py +27 -0
- uncountable/types/field_values.py +17 -23
- uncountable/types/field_values_t.py +204 -0
- uncountable/types/fields.py +8 -0
- uncountable/types/fields_t.py +28 -0
- uncountable/types/generic_upload.py +15 -0
- uncountable/types/generic_upload_t.py +119 -0
- uncountable/types/id_source.py +12 -0
- uncountable/types/id_source_t.py +68 -0
- uncountable/types/identifier.py +11 -0
- uncountable/types/identifier_t.py +63 -0
- uncountable/types/input_attributes.py +8 -0
- uncountable/types/input_attributes_t.py +30 -0
- uncountable/types/inputs.py +11 -0
- uncountable/types/inputs_t.py +83 -0
- uncountable/types/integration_server.py +9 -0
- uncountable/types/integration_server_t.py +42 -0
- uncountable/types/job_definition.py +27 -0
- uncountable/types/job_definition_t.py +260 -0
- uncountable/types/outputs.py +8 -0
- uncountable/types/outputs_t.py +30 -0
- uncountable/types/overrides.py +10 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +8 -0
- uncountable/types/permissions_t.py +46 -0
- uncountable/types/phases.py +8 -0
- uncountable/types/phases_t.py +27 -0
- uncountable/types/post_base.py +8 -0
- uncountable/types/post_base_t.py +30 -0
- uncountable/types/queued_job.py +16 -0
- uncountable/types/queued_job_t.py +123 -0
- uncountable/types/recipe_identifiers.py +12 -0
- uncountable/types/recipe_identifiers_t.py +76 -0
- uncountable/types/recipe_inputs.py +9 -0
- uncountable/types/recipe_inputs_t.py +30 -0
- uncountable/types/recipe_links.py +4 -44
- uncountable/types/recipe_links_t.py +54 -0
- uncountable/types/recipe_metadata.py +10 -0
- uncountable/types/recipe_metadata_t.py +58 -0
- uncountable/types/recipe_output_metadata.py +8 -0
- uncountable/types/recipe_output_metadata_t.py +28 -0
- uncountable/types/recipe_tags.py +8 -0
- uncountable/types/recipe_tags_t.py +27 -0
- uncountable/types/recipe_workflow_steps.py +14 -0
- uncountable/types/recipe_workflow_steps_t.py +95 -0
- uncountable/types/recipes.py +8 -0
- uncountable/types/recipes_t.py +25 -0
- uncountable/types/response.py +8 -0
- uncountable/types/response_t.py +26 -0
- uncountable/types/secret_retrieval.py +12 -0
- uncountable/types/secret_retrieval_t.py +75 -0
- uncountable/types/units.py +8 -0
- uncountable/types/units_t.py +27 -0
- uncountable/types/users.py +8 -0
- uncountable/types/users_t.py +28 -0
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +37 -0
- uncountable/types/workflows.py +9 -0
- uncountable/types/workflows_t.py +39 -0
- UncountablePythonSDK-0.0.7.dist-info/METADATA +0 -27
- UncountablePythonSDK-0.0.7.dist-info/RECORD +0 -119
- examples/recipe-import/importer.py +0 -39
- type_spec/external/api/batch/execute_batch.yaml +0 -56
- type_spec/external/api/entity/create_entities.yaml +0 -33
- type_spec/external/api/entity/create_entity.yaml +0 -39
- type_spec/external/api/entity/get_entities_data.yaml +0 -55
- type_spec/external/api/entity/list_entities.yaml +0 -62
- type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
- type_spec/external/api/entity/set_values.yaml +0 -45
- type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
- type_spec/external/api/inputs/create_inputs.yaml +0 -61
- type_spec/external/api/inputs/get_input_data.yaml +0 -108
- type_spec/external/api/inputs/get_input_names.yaml +0 -38
- type_spec/external/api/inputs/get_inputs_data.yaml +0 -95
- type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -37
- type_spec/external/api/outputs/get_output_data.yaml +0 -103
- 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/project/get_projects.yaml +0 -52
- type_spec/external/api/project/get_projects_data.yaml +0 -86
- type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
- type_spec/external/api/recipes/create_recipes.yaml +0 -60
- type_spec/external/api/recipes/get_curve.yaml +0 -50
- type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -49
- 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 -49
- type_spec/external/api/recipes/get_recipes_data.yaml +0 -372
- type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -36
- type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -56
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
2
|
# flake8: noqa: F821
|
|
3
|
-
# ruff: noqa: E402
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
4
4
|
# fmt: off
|
|
5
5
|
# isort: skip_file
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
|
-
from ... import
|
|
12
|
+
from ... import base_t
|
|
13
|
+
from ... import experiment_groups_t
|
|
14
|
+
from ... import inputs_t
|
|
15
|
+
from ... import outputs_t
|
|
16
|
+
from ... import recipe_metadata_t
|
|
17
|
+
from ... import recipe_tags_t
|
|
18
|
+
from ... import workflows_t
|
|
13
19
|
|
|
14
20
|
__all__: list[str] = [
|
|
15
21
|
"Arguments",
|
|
@@ -19,242 +25,175 @@ __all__: list[str] = [
|
|
|
19
25
|
"ENDPOINT_PATH",
|
|
20
26
|
"Recipe",
|
|
21
27
|
"RecipeInput",
|
|
22
|
-
"RecipeMetadata",
|
|
23
28
|
"RecipeOutput",
|
|
24
29
|
"RecipeStep",
|
|
25
30
|
"RecipeStepGroup",
|
|
26
31
|
"RecipeStepRelationship",
|
|
27
32
|
"RecipeWorkflowStep",
|
|
28
|
-
"SimpleExperimentGroup",
|
|
29
|
-
"SimpleInput",
|
|
30
|
-
"SimpleOutput",
|
|
31
33
|
"SimpleOutputCondition",
|
|
32
|
-
"SimpleRecipeMetadataField",
|
|
33
|
-
"SimpleRecipeTag",
|
|
34
|
-
"SimpleUnit",
|
|
35
|
-
"SimpleUser",
|
|
36
|
-
"SimpleWorkflow",
|
|
37
|
-
"SimpleWorkflowStep",
|
|
38
34
|
]
|
|
39
35
|
|
|
40
36
|
ENDPOINT_METHOD = "GET"
|
|
41
37
|
ENDPOINT_PATH = "api/external/recipes/external_get_recipes_data"
|
|
42
38
|
|
|
43
39
|
|
|
44
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
45
|
-
@dataclass(kw_only=True)
|
|
46
|
-
class Arguments:
|
|
47
|
-
recipe_ids: typing.Optional[list[int]]
|
|
48
|
-
project_id: typing.Optional[int]
|
|
49
|
-
offset: typing.Optional[int]
|
|
50
|
-
limit: typing.Optional[int]
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
54
|
-
@dataclass(kw_only=True)
|
|
55
|
-
class SimpleRecipeMetadataField:
|
|
56
|
-
metadata_id: int
|
|
57
|
-
name: str
|
|
58
|
-
quantity_type: str
|
|
59
|
-
|
|
60
|
-
|
|
61
40
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
62
41
|
@serial_class(
|
|
63
|
-
|
|
64
|
-
to_string_values={"quantity_dec"},
|
|
42
|
+
named_type_path="sdk.api.recipes.get_recipes_data.Arguments",
|
|
65
43
|
)
|
|
66
|
-
@dataclass(kw_only=True)
|
|
67
|
-
class
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
74
|
-
@dataclass(kw_only=True)
|
|
75
|
-
class SimpleRecipeTag:
|
|
76
|
-
recipe_tag_id: int
|
|
77
|
-
name: str
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
81
|
-
@dataclass(kw_only=True)
|
|
82
|
-
class SimpleExperimentGroup:
|
|
83
|
-
experiment_group_id: int
|
|
84
|
-
name: str
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
88
|
-
@dataclass(kw_only=True)
|
|
89
|
-
class SimpleUnit:
|
|
90
|
-
unit_id: int
|
|
91
|
-
name: str
|
|
44
|
+
@dataclasses.dataclass(kw_only=True)
|
|
45
|
+
class Arguments:
|
|
46
|
+
recipe_ids: typing.Optional[list[base_t.ObjectId]] | None = None
|
|
47
|
+
project_id: typing.Optional[base_t.ObjectId] | None = None
|
|
48
|
+
offset: typing.Optional[int] | None = None
|
|
49
|
+
limit: typing.Optional[int] | None = None
|
|
92
50
|
|
|
93
51
|
|
|
94
52
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
95
53
|
@serial_class(
|
|
54
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeOutput",
|
|
96
55
|
unconverted_values={"quantity_json"},
|
|
97
56
|
to_string_values={"quantity_dec"},
|
|
98
57
|
)
|
|
99
|
-
@dataclass(kw_only=True)
|
|
58
|
+
@dataclasses.dataclass(kw_only=True)
|
|
100
59
|
class RecipeOutput:
|
|
101
|
-
id:
|
|
102
|
-
output_id:
|
|
60
|
+
id: base_t.ObjectId
|
|
61
|
+
output_id: base_t.ObjectId
|
|
103
62
|
replicate_num: int
|
|
104
|
-
quantity_dec: Decimal
|
|
105
63
|
quantity_json: base_t.JsonValue
|
|
106
|
-
curve_id:
|
|
107
|
-
output_condition_id:
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
111
|
-
@dataclass(kw_only=True)
|
|
112
|
-
class SimpleOutput:
|
|
113
|
-
output_id: int
|
|
114
|
-
name: str
|
|
115
|
-
unit: typing.Optional[SimpleUnit]
|
|
116
|
-
quantity_type: str
|
|
64
|
+
curve_id: typing.Optional[base_t.ObjectId]
|
|
65
|
+
output_condition_id: typing.Optional[base_t.ObjectId]
|
|
66
|
+
quantity_dec: Decimal | None = None
|
|
117
67
|
|
|
118
68
|
|
|
119
69
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
120
70
|
@serial_class(
|
|
71
|
+
named_type_path="sdk.api.recipes.get_recipes_data.ConditionParameterValue",
|
|
121
72
|
unconverted_values={"quantity_json"},
|
|
122
73
|
to_string_values={"quantity_dec"},
|
|
123
74
|
)
|
|
124
|
-
@dataclass(kw_only=True)
|
|
75
|
+
@dataclasses.dataclass(kw_only=True)
|
|
125
76
|
class ConditionParameterValue:
|
|
126
|
-
condition_parameter_id:
|
|
77
|
+
condition_parameter_id: base_t.ObjectId
|
|
127
78
|
condition_parameter_name: str
|
|
128
|
-
quantity_dec: Decimal
|
|
129
79
|
quantity_json: base_t.JsonValue
|
|
80
|
+
quantity_dec: Decimal | None = None
|
|
130
81
|
|
|
131
82
|
|
|
132
83
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
133
|
-
@
|
|
84
|
+
@serial_class(
|
|
85
|
+
named_type_path="sdk.api.recipes.get_recipes_data.SimpleOutputCondition",
|
|
86
|
+
)
|
|
87
|
+
@dataclasses.dataclass(kw_only=True)
|
|
134
88
|
class SimpleOutputCondition:
|
|
135
|
-
output_condition_id:
|
|
89
|
+
output_condition_id: base_t.ObjectId
|
|
136
90
|
condition_parameter_values: list[ConditionParameterValue]
|
|
137
91
|
|
|
138
92
|
|
|
139
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
140
|
-
@dataclass(kw_only=True)
|
|
141
|
-
class SimpleWorkflowStep:
|
|
142
|
-
workflow_step_id: int
|
|
143
|
-
name: str
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
147
|
-
@dataclass(kw_only=True)
|
|
148
|
-
class SimpleWorkflow:
|
|
149
|
-
workflow_id: int
|
|
150
|
-
name: str
|
|
151
|
-
workflow_steps: list[SimpleWorkflowStep]
|
|
152
|
-
|
|
153
|
-
|
|
154
93
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
155
94
|
@serial_class(
|
|
95
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeInput",
|
|
156
96
|
unconverted_values={"actual_quantity_json", "quantity_json"},
|
|
157
97
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
158
98
|
)
|
|
159
|
-
@dataclass(kw_only=True)
|
|
99
|
+
@dataclasses.dataclass(kw_only=True)
|
|
160
100
|
class RecipeInput:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
101
|
+
id: base_t.ObjectId
|
|
102
|
+
input_id: base_t.ObjectId
|
|
103
|
+
input_lot_recipe_id: typing.Optional[base_t.ObjectId]
|
|
104
|
+
recipe_step_id: base_t.ObjectId
|
|
165
105
|
quantity_json: base_t.JsonValue
|
|
166
|
-
|
|
106
|
+
curve_id: typing.Optional[base_t.ObjectId]
|
|
167
107
|
actual_quantity_json: base_t.JsonValue
|
|
168
|
-
input_type: str
|
|
169
108
|
behavior: str
|
|
109
|
+
ingredient_role_id: typing.Optional[base_t.ObjectId]
|
|
110
|
+
quantity_dec: Decimal | None = None
|
|
111
|
+
actual_quantity_dec: Decimal | None = None
|
|
170
112
|
|
|
171
113
|
|
|
172
114
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
173
|
-
@
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
name: str
|
|
178
|
-
is_parameter: bool
|
|
179
|
-
intermediate_recipe_id: typing.Optional[int]
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
183
|
-
@dataclass(kw_only=True)
|
|
115
|
+
@serial_class(
|
|
116
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeStep",
|
|
117
|
+
)
|
|
118
|
+
@dataclasses.dataclass(kw_only=True)
|
|
184
119
|
class RecipeStep:
|
|
185
120
|
name: typing.Optional[str]
|
|
186
|
-
recipe_step_id:
|
|
121
|
+
recipe_step_id: base_t.ObjectId
|
|
187
122
|
recipe_step_number: int
|
|
188
|
-
instructions:
|
|
123
|
+
instructions: str | None = None
|
|
189
124
|
|
|
190
125
|
|
|
191
126
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
192
|
-
@
|
|
127
|
+
@serial_class(
|
|
128
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeStepGroup",
|
|
129
|
+
)
|
|
130
|
+
@dataclasses.dataclass(kw_only=True)
|
|
193
131
|
class RecipeStepGroup:
|
|
194
132
|
name: typing.Optional[str]
|
|
195
133
|
recipe_steps: list[RecipeStep]
|
|
196
134
|
|
|
197
135
|
|
|
198
136
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
199
|
-
@
|
|
137
|
+
@serial_class(
|
|
138
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeWorkflowStep",
|
|
139
|
+
)
|
|
140
|
+
@dataclasses.dataclass(kw_only=True)
|
|
200
141
|
class RecipeWorkflowStep:
|
|
201
|
-
recipe_workflow_step_id:
|
|
202
|
-
workflow_step_id:
|
|
142
|
+
recipe_workflow_step_id: base_t.ObjectId
|
|
143
|
+
workflow_step_id: base_t.ObjectId
|
|
203
144
|
recipe_step_groups: list[RecipeStepGroup]
|
|
204
145
|
|
|
205
146
|
|
|
206
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
207
|
-
@dataclass(kw_only=True)
|
|
208
|
-
class SimpleUser:
|
|
209
|
-
user_id: int
|
|
210
|
-
display_name: str
|
|
211
|
-
email: str
|
|
212
|
-
|
|
213
|
-
|
|
214
147
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
215
148
|
@serial_class(
|
|
149
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeStepRelationship",
|
|
216
150
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
217
151
|
)
|
|
218
|
-
@dataclass(kw_only=True)
|
|
152
|
+
@dataclasses.dataclass(kw_only=True)
|
|
219
153
|
class RecipeStepRelationship:
|
|
220
154
|
step_relationship_id: base_t.ObjectId
|
|
221
155
|
name: typing.Optional[str]
|
|
222
156
|
source_recipe_workflow_step_id: base_t.ObjectId
|
|
223
157
|
target_recipe_step_id: base_t.ObjectId
|
|
224
|
-
quantity_dec:
|
|
225
|
-
actual_quantity_dec:
|
|
158
|
+
quantity_dec: Decimal | None = None
|
|
159
|
+
actual_quantity_dec: Decimal | None = None
|
|
226
160
|
|
|
227
161
|
|
|
228
162
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
229
|
-
@
|
|
163
|
+
@serial_class(
|
|
164
|
+
named_type_path="sdk.api.recipes.get_recipes_data.Recipe",
|
|
165
|
+
)
|
|
166
|
+
@dataclasses.dataclass(kw_only=True)
|
|
230
167
|
class Recipe:
|
|
231
|
-
recipe_id:
|
|
168
|
+
recipe_id: base_t.ObjectId
|
|
232
169
|
create_datetime: str
|
|
233
170
|
last_modified_datetime: str
|
|
234
171
|
name: str
|
|
235
172
|
notes: typing.Optional[str]
|
|
236
|
-
workflow_id:
|
|
237
|
-
metadata: list[RecipeMetadata]
|
|
173
|
+
workflow_id: base_t.ObjectId
|
|
174
|
+
metadata: list[recipe_metadata_t.RecipeMetadata]
|
|
238
175
|
inputs: list[RecipeInput]
|
|
239
176
|
outputs: list[RecipeOutput]
|
|
240
177
|
workflow_steps: list[RecipeWorkflowStep]
|
|
241
|
-
tag_ids: list[
|
|
242
|
-
experiment_group_ids: list[
|
|
178
|
+
tag_ids: list[base_t.ObjectId]
|
|
179
|
+
experiment_group_ids: list[base_t.ObjectId]
|
|
243
180
|
step_relationships: list[RecipeStepRelationship]
|
|
244
|
-
creating_user_id:
|
|
245
|
-
barcode_value:
|
|
181
|
+
creating_user_id: base_t.ObjectId | None = None
|
|
182
|
+
barcode_value: str | None = None
|
|
246
183
|
|
|
247
184
|
|
|
248
185
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
249
|
-
@
|
|
186
|
+
@serial_class(
|
|
187
|
+
named_type_path="sdk.api.recipes.get_recipes_data.Data",
|
|
188
|
+
)
|
|
189
|
+
@dataclasses.dataclass(kw_only=True)
|
|
250
190
|
class Data:
|
|
251
191
|
recipes: list[Recipe]
|
|
252
|
-
workflows: list[SimpleWorkflow]
|
|
253
|
-
metadata: list[SimpleRecipeMetadataField]
|
|
254
|
-
inputs: list[SimpleInput]
|
|
255
|
-
outputs: list[SimpleOutput]
|
|
192
|
+
workflows: list[workflows_t.SimpleWorkflow]
|
|
193
|
+
metadata: list[recipe_metadata_t.SimpleRecipeMetadataField]
|
|
194
|
+
inputs: list[inputs_t.SimpleInput]
|
|
195
|
+
outputs: list[outputs_t.SimpleOutput]
|
|
256
196
|
output_conditions: list[SimpleOutputCondition]
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
experiment_groups: list[SimpleExperimentGroup]
|
|
197
|
+
recipe_tags: list[recipe_tags_t.SimpleRecipeTag]
|
|
198
|
+
experiment_groups: list[experiment_groups_t.SimpleExperimentGroup]
|
|
260
199
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
4
|
+
# fmt: off
|
|
5
|
+
# isort: skip_file
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import typing # noqa: F401
|
|
8
|
+
import datetime # noqa: F401
|
|
9
|
+
from decimal import Decimal # noqa: F401
|
|
10
|
+
from pkgs.strenum_compat import StrEnum
|
|
11
|
+
import dataclasses
|
|
12
|
+
from pkgs.serialization import serial_class
|
|
13
|
+
from ... import identifier_t
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"Arguments",
|
|
17
|
+
"Data",
|
|
18
|
+
"ENDPOINT_METHOD",
|
|
19
|
+
"ENDPOINT_PATH",
|
|
20
|
+
"RecipeLockBase",
|
|
21
|
+
"RecipeLockType",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
ENDPOINT_METHOD = "POST"
|
|
25
|
+
ENDPOINT_PATH = "api/external/recipes/lock_recipes"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
29
|
+
class RecipeLockType(StrEnum):
|
|
30
|
+
ALL = "all"
|
|
31
|
+
INPUTS_ONLY = "inputs_only"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
+
@serial_class(
|
|
36
|
+
named_type_path="sdk.api.recipes.lock_recipes.RecipeLockBase",
|
|
37
|
+
)
|
|
38
|
+
@dataclasses.dataclass(kw_only=True)
|
|
39
|
+
class RecipeLockBase:
|
|
40
|
+
recipe: identifier_t.IdentifierKey
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
44
|
+
@serial_class(
|
|
45
|
+
named_type_path="sdk.api.recipes.lock_recipes.Arguments",
|
|
46
|
+
)
|
|
47
|
+
@dataclasses.dataclass(kw_only=True)
|
|
48
|
+
class Arguments:
|
|
49
|
+
type: RecipeLockType = RecipeLockType.ALL
|
|
50
|
+
recipes: list[identifier_t.IdentifierKey]
|
|
51
|
+
globally_removable: bool
|
|
52
|
+
lock_samples: bool | None = None
|
|
53
|
+
comments: str | None = None
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
57
|
+
@serial_class(
|
|
58
|
+
named_type_path="sdk.api.recipes.lock_recipes.Data",
|
|
59
|
+
)
|
|
60
|
+
@dataclasses.dataclass(kw_only=True)
|
|
61
|
+
class Data:
|
|
62
|
+
pass
|
|
63
|
+
# 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
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
4
|
+
# fmt: off
|
|
5
|
+
# isort: skip_file
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import typing # noqa: F401
|
|
8
|
+
import datetime # noqa: F401
|
|
9
|
+
from decimal import Decimal # noqa: F401
|
|
10
|
+
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
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(kw_only=True)
|
|
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(kw_only=True)
|
|
40
|
+
class Data:
|
|
41
|
+
pass
|
|
42
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
2
|
# flake8: noqa: F821
|
|
3
|
-
# ruff: noqa: E402
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
4
4
|
# fmt: off
|
|
5
5
|
# isort: skip_file
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
|
+
from ... import base_t
|
|
12
13
|
|
|
13
14
|
__all__: list[str] = [
|
|
14
15
|
"Arguments",
|
|
@@ -24,26 +25,35 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_inputs"
|
|
|
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_inputs.RecipeInputValue",
|
|
27
29
|
to_string_values={"value_numeric"},
|
|
28
30
|
)
|
|
29
|
-
@dataclass(kw_only=True)
|
|
31
|
+
@dataclasses.dataclass(kw_only=True)
|
|
30
32
|
class RecipeInputValue:
|
|
31
|
-
recipe_id:
|
|
32
|
-
input_id:
|
|
33
|
-
recipe_step_id: typing.Optional[
|
|
34
|
-
value_numeric:
|
|
35
|
-
value_str:
|
|
36
|
-
set_actual_value:
|
|
33
|
+
recipe_id: base_t.ObjectId
|
|
34
|
+
input_id: base_t.ObjectId
|
|
35
|
+
recipe_step_id: typing.Optional[base_t.ObjectId] | None = None
|
|
36
|
+
value_numeric: Decimal | None = None
|
|
37
|
+
value_str: str | None = None
|
|
38
|
+
set_actual_value: bool | None = None
|
|
39
|
+
lot_recipe_id: base_t.ObjectId | None = None
|
|
40
|
+
remove: bool | None = None
|
|
37
41
|
|
|
38
42
|
|
|
39
43
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
|
-
@
|
|
44
|
+
@serial_class(
|
|
45
|
+
named_type_path="sdk.api.recipes.set_recipe_inputs.Arguments",
|
|
46
|
+
)
|
|
47
|
+
@dataclasses.dataclass(kw_only=True)
|
|
41
48
|
class Arguments:
|
|
42
49
|
input_data: list[RecipeInputValue]
|
|
43
50
|
|
|
44
51
|
|
|
45
52
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
46
|
-
@
|
|
53
|
+
@serial_class(
|
|
54
|
+
named_type_path="sdk.api.recipes.set_recipe_inputs.Data",
|
|
55
|
+
)
|
|
56
|
+
@dataclasses.dataclass(kw_only=True)
|
|
47
57
|
class Data:
|
|
48
58
|
pass
|
|
49
59
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
4
|
+
# fmt: off
|
|
5
|
+
# isort: skip_file
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import typing # noqa: F401
|
|
8
|
+
import datetime # noqa: F401
|
|
9
|
+
from decimal import Decimal # noqa: F401
|
|
10
|
+
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from ... import identifier_t
|
|
13
|
+
from ... import recipe_metadata_t
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"Arguments",
|
|
17
|
+
"Data",
|
|
18
|
+
"ENDPOINT_METHOD",
|
|
19
|
+
"ENDPOINT_PATH",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
ENDPOINT_METHOD = "POST"
|
|
23
|
+
ENDPOINT_PATH = "api/external/recipes/set_recipe_metadata"
|
|
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_metadata.Arguments",
|
|
29
|
+
)
|
|
30
|
+
@dataclasses.dataclass(kw_only=True)
|
|
31
|
+
class Arguments:
|
|
32
|
+
recipe_key: identifier_t.IdentifierKey
|
|
33
|
+
recipe_metadata: list[recipe_metadata_t.MetadataValue]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
37
|
+
@serial_class(
|
|
38
|
+
named_type_path="sdk.api.recipes.set_recipe_metadata.Data",
|
|
39
|
+
)
|
|
40
|
+
@dataclasses.dataclass(kw_only=True)
|
|
41
|
+
class Data:
|
|
42
|
+
pass
|
|
43
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
4
|
+
# fmt: off
|
|
5
|
+
# isort: skip_file
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import typing # noqa: F401
|
|
8
|
+
import datetime # noqa: F401
|
|
9
|
+
from decimal import Decimal # noqa: F401
|
|
10
|
+
from pkgs.strenum_compat import StrEnum
|
|
11
|
+
import dataclasses
|
|
12
|
+
from pkgs.serialization import serial_class
|
|
13
|
+
from pkgs.serialization import serial_union_annotation
|
|
14
|
+
from ... import base_t
|
|
15
|
+
from ... import identifier_t
|
|
16
|
+
|
|
17
|
+
__all__: list[str] = [
|
|
18
|
+
"AnnotationEdit",
|
|
19
|
+
"AnnotationUpdateType",
|
|
20
|
+
"Arguments",
|
|
21
|
+
"Data",
|
|
22
|
+
"ENDPOINT_METHOD",
|
|
23
|
+
"ENDPOINT_PATH",
|
|
24
|
+
"RecipeOutputEditBase",
|
|
25
|
+
"RecipeOutputMergeAnnotations",
|
|
26
|
+
"RecipeOutputReplaceAnnotations",
|
|
27
|
+
"RecipeOutputUpdateAnnotations",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
ENDPOINT_METHOD = "POST"
|
|
31
|
+
ENDPOINT_PATH = "api/external/recipes/set_recipe_output_annotations"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
+
@serial_class(
|
|
36
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.AnnotationEdit",
|
|
37
|
+
to_string_values={"lower_value", "upper_value"},
|
|
38
|
+
)
|
|
39
|
+
@dataclasses.dataclass(kw_only=True)
|
|
40
|
+
class AnnotationEdit:
|
|
41
|
+
annotation_type_key: identifier_t.IdentifierKey
|
|
42
|
+
lower_value: Decimal | None = None
|
|
43
|
+
upper_value: Decimal | None = None
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
47
|
+
class AnnotationUpdateType(StrEnum):
|
|
48
|
+
MERGE = "merge"
|
|
49
|
+
REPLACE = "replace"
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
53
|
+
@serial_class(
|
|
54
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputEditBase",
|
|
55
|
+
)
|
|
56
|
+
@dataclasses.dataclass(kw_only=True)
|
|
57
|
+
class RecipeOutputEditBase:
|
|
58
|
+
recipe_id: base_t.ObjectId
|
|
59
|
+
output_id: base_t.ObjectId
|
|
60
|
+
experiment_num: int
|
|
61
|
+
annotations: list[AnnotationEdit]
|
|
62
|
+
condition_id: base_t.ObjectId | None = None
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
66
|
+
@serial_class(
|
|
67
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputMergeAnnotations",
|
|
68
|
+
parse_require={"type"},
|
|
69
|
+
)
|
|
70
|
+
@dataclasses.dataclass(kw_only=True)
|
|
71
|
+
class RecipeOutputMergeAnnotations(RecipeOutputEditBase):
|
|
72
|
+
type: typing.Literal[AnnotationUpdateType.MERGE] = AnnotationUpdateType.MERGE
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
76
|
+
@serial_class(
|
|
77
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputReplaceAnnotations",
|
|
78
|
+
parse_require={"type"},
|
|
79
|
+
)
|
|
80
|
+
@dataclasses.dataclass(kw_only=True)
|
|
81
|
+
class RecipeOutputReplaceAnnotations(RecipeOutputEditBase):
|
|
82
|
+
type: typing.Literal[AnnotationUpdateType.REPLACE] = AnnotationUpdateType.REPLACE
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
86
|
+
RecipeOutputUpdateAnnotations = typing.Annotated[
|
|
87
|
+
typing.Union[RecipeOutputMergeAnnotations, RecipeOutputReplaceAnnotations],
|
|
88
|
+
serial_union_annotation(
|
|
89
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputUpdateAnnotations",
|
|
90
|
+
discriminator="type",
|
|
91
|
+
discriminator_map={
|
|
92
|
+
"merge": RecipeOutputMergeAnnotations,
|
|
93
|
+
"replace": RecipeOutputReplaceAnnotations,
|
|
94
|
+
},
|
|
95
|
+
),
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
100
|
+
@serial_class(
|
|
101
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.Arguments",
|
|
102
|
+
)
|
|
103
|
+
@dataclasses.dataclass(kw_only=True)
|
|
104
|
+
class Arguments:
|
|
105
|
+
updates: list[RecipeOutputUpdateAnnotations]
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
109
|
+
@serial_class(
|
|
110
|
+
named_type_path="sdk.api.recipes.set_recipe_output_annotations.Data",
|
|
111
|
+
)
|
|
112
|
+
@dataclasses.dataclass(kw_only=True)
|
|
113
|
+
class Data:
|
|
114
|
+
pass
|
|
115
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|