UncountablePythonSDK 0.0.52__py3-none-any.whl → 0.0.131__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of UncountablePythonSDK might be problematic. Click here for more details.
- docs/conf.py +54 -7
- docs/index.md +107 -4
- docs/integration_examples/create_ingredient.md +43 -0
- docs/integration_examples/create_output.md +56 -0
- docs/integration_examples/index.md +6 -0
- docs/justfile +2 -2
- docs/requirements.txt +6 -4
- examples/async_batch.py +3 -3
- examples/basic_auth.py +7 -0
- examples/create_entity.py +3 -1
- examples/create_ingredient_sdk.py +34 -0
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +4 -2
- examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
- examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
- examples/integration-server/jobs/materials_auto/example_http.py +47 -0
- examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
- examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
- examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
- examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
- examples/integration-server/pyproject.toml +224 -0
- examples/invoke_uploader.py +4 -1
- examples/oauth.py +7 -0
- examples/set_recipe_metadata_file.py +40 -0
- examples/set_recipe_output_file_sdk.py +26 -0
- examples/upload_files.py +1 -2
- pkgs/argument_parser/__init__.py +9 -0
- pkgs/argument_parser/_is_namedtuple.py +3 -0
- pkgs/argument_parser/argument_parser.py +217 -70
- pkgs/filesystem_utils/__init__.py +1 -0
- pkgs/filesystem_utils/_blob_session.py +144 -0
- pkgs/filesystem_utils/_gdrive_session.py +10 -7
- pkgs/filesystem_utils/_s3_session.py +15 -13
- pkgs/filesystem_utils/_sftp_session.py +11 -7
- pkgs/filesystem_utils/file_type_utils.py +30 -10
- pkgs/py.typed +0 -0
- pkgs/serialization/__init__.py +7 -2
- pkgs/serialization/annotation.py +64 -0
- pkgs/serialization/missing_sentry.py +1 -1
- pkgs/serialization/opaque_key.py +1 -1
- pkgs/serialization/serial_alias.py +47 -0
- pkgs/serialization/serial_class.py +47 -26
- pkgs/serialization/serial_generic.py +16 -0
- pkgs/serialization/serial_union.py +17 -14
- pkgs/serialization/yaml.py +4 -1
- pkgs/serialization_util/__init__.py +6 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +15 -5
- pkgs/type_spec/actions_registry/__main__.py +0 -4
- pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
- pkgs/type_spec/builder.py +354 -119
- pkgs/type_spec/builder_types.py +9 -0
- pkgs/type_spec/config.py +51 -11
- pkgs/type_spec/cross_output_links.py +99 -0
- pkgs/type_spec/emit_io_ts.py +1 -1
- pkgs/type_spec/emit_open_api.py +127 -36
- pkgs/type_spec/emit_open_api_util.py +5 -6
- pkgs/type_spec/emit_python.py +329 -121
- pkgs/type_spec/emit_typescript.py +117 -256
- pkgs/type_spec/emit_typescript_util.py +291 -2
- pkgs/type_spec/load_types.py +18 -4
- pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
- pkgs/type_spec/open_api_util.py +29 -4
- pkgs/type_spec/parts/base.py.prepart +13 -10
- pkgs/type_spec/parts/base.ts.prepart +4 -0
- pkgs/type_spec/type_info/__main__.py +3 -1
- pkgs/type_spec/type_info/emit_type_info.py +124 -29
- pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
- pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
- pkgs/type_spec/util.py +4 -4
- pkgs/type_spec/value_spec/__main__.py +26 -9
- pkgs/type_spec/value_spec/convert_type.py +21 -1
- pkgs/type_spec/value_spec/emit_python.py +25 -7
- pkgs/type_spec/value_spec/types.py +1 -1
- uncountable/core/async_batch.py +1 -1
- uncountable/core/client.py +142 -39
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +52 -18
- uncountable/integration/cli.py +142 -0
- uncountable/integration/construct_client.py +8 -8
- uncountable/integration/cron.py +11 -37
- uncountable/integration/db/connect.py +12 -2
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +8 -37
- uncountable/integration/executors/executors.py +125 -2
- uncountable/integration/executors/generic_upload_executor.py +87 -29
- uncountable/integration/executors/script_executor.py +3 -3
- uncountable/integration/http_server/__init__.py +5 -0
- uncountable/integration/http_server/types.py +69 -0
- uncountable/integration/job.py +242 -12
- uncountable/integration/queue_runner/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/__init__.py +28 -0
- uncountable/integration/queue_runner/command_server/command_client.py +133 -0
- uncountable/integration/queue_runner/command_server/command_server.py +142 -0
- uncountable/integration/queue_runner/command_server/constants.py +4 -0
- uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
- uncountable/integration/queue_runner/command_server/types.py +75 -0
- uncountable/integration/queue_runner/datastore/__init__.py +3 -0
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
- uncountable/integration/queue_runner/datastore/interface.py +29 -0
- uncountable/integration/queue_runner/datastore/model.py +24 -0
- uncountable/integration/queue_runner/job_scheduler.py +200 -0
- uncountable/integration/queue_runner/queue_runner.py +34 -0
- uncountable/integration/queue_runner/types.py +7 -0
- uncountable/integration/queue_runner/worker.py +116 -0
- uncountable/integration/scan_profiles.py +67 -0
- uncountable/integration/scheduler.py +199 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +26 -4
- uncountable/integration/server.py +94 -69
- uncountable/integration/telemetry.py +150 -34
- uncountable/integration/webhook_server/entrypoint.py +97 -0
- uncountable/types/__init__.py +78 -1
- uncountable/types/api/batch/execute_batch.py +13 -6
- uncountable/types/api/batch/execute_batch_load_async.py +9 -3
- uncountable/types/api/chemical/convert_chemical_formats.py +17 -5
- uncountable/types/api/condition_parameters/__init__.py +1 -0
- uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
- uncountable/types/api/entity/create_entities.py +19 -7
- uncountable/types/api/entity/create_entity.py +17 -8
- uncountable/types/api/entity/create_or_update_entity.py +48 -0
- uncountable/types/api/entity/export_entities.py +59 -0
- uncountable/types/api/entity/get_entities_data.py +13 -4
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/entity/list_aggregate.py +79 -0
- uncountable/types/api/entity/list_entities.py +42 -10
- uncountable/types/api/entity/lock_entity.py +11 -4
- uncountable/types/api/entity/lookup_entity.py +116 -0
- uncountable/types/api/entity/resolve_entity_ids.py +15 -6
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +10 -3
- uncountable/types/api/entity/transition_entity_phase.py +22 -7
- uncountable/types/api/entity/unlock_entity.py +10 -3
- uncountable/types/api/equipment/associate_equipment_input.py +9 -3
- uncountable/types/api/field_options/upsert_field_options.py +17 -7
- uncountable/types/api/files/__init__.py +1 -0
- uncountable/types/api/files/download_file.py +77 -0
- uncountable/types/api/id_source/list_id_source.py +16 -7
- uncountable/types/api/id_source/match_id_source.py +14 -5
- uncountable/types/api/input_groups/get_input_group_names.py +13 -4
- uncountable/types/api/inputs/create_inputs.py +23 -9
- uncountable/types/api/inputs/get_input_data.py +30 -12
- uncountable/types/api/inputs/get_input_names.py +16 -7
- uncountable/types/api/inputs/get_inputs_data.py +25 -7
- uncountable/types/api/inputs/set_input_attribute_values.py +12 -6
- uncountable/types/api/inputs/set_input_category.py +12 -5
- uncountable/types/api/inputs/set_input_subcategories.py +10 -3
- uncountable/types/api/inputs/set_intermediate_type.py +11 -4
- uncountable/types/api/integrations/__init__.py +1 -0
- uncountable/types/api/integrations/publish_realtime_data.py +41 -0
- uncountable/types/api/integrations/push_notification.py +49 -0
- uncountable/types/api/integrations/register_sockets_token.py +41 -0
- uncountable/types/api/listing/__init__.py +1 -0
- uncountable/types/api/listing/fetch_listing.py +58 -0
- uncountable/types/api/material_families/update_entity_material_families.py +10 -4
- uncountable/types/api/notebooks/__init__.py +1 -0
- uncountable/types/api/notebooks/add_notebook_content.py +119 -0
- uncountable/types/api/outputs/get_output_data.py +28 -13
- uncountable/types/api/outputs/get_output_names.py +15 -6
- uncountable/types/api/outputs/get_output_organization.py +173 -0
- uncountable/types/api/outputs/resolve_output_conditions.py +20 -8
- uncountable/types/api/permissions/set_core_permissions.py +26 -10
- uncountable/types/api/project/get_projects.py +16 -7
- uncountable/types/api/project/get_projects_data.py +17 -8
- uncountable/types/api/recipe_links/create_recipe_link.py +12 -5
- uncountable/types/api/recipe_links/remove_recipe_link.py +11 -4
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +16 -7
- uncountable/types/api/recipes/add_recipe_to_project.py +10 -3
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/archive_recipes.py +11 -4
- uncountable/types/api/recipes/associate_recipe_as_input.py +12 -5
- uncountable/types/api/recipes/associate_recipe_as_lot.py +10 -3
- uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
- uncountable/types/api/recipes/create_mix_order.py +44 -0
- uncountable/types/api/recipes/create_recipe.py +15 -9
- uncountable/types/api/recipes/create_recipes.py +21 -9
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +10 -3
- uncountable/types/api/recipes/edit_recipe_inputs.py +134 -22
- uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
- uncountable/types/api/recipes/get_curve.py +11 -5
- uncountable/types/api/recipes/get_recipe_calculations.py +13 -7
- uncountable/types/api/recipes/get_recipe_links.py +10 -4
- uncountable/types/api/recipes/get_recipe_names.py +13 -4
- uncountable/types/api/recipes/get_recipe_output_metadata.py +12 -6
- uncountable/types/api/recipes/get_recipes_data.py +87 -33
- uncountable/types/api/recipes/lock_recipes.py +19 -8
- uncountable/types/api/recipes/remove_recipe_from_project.py +10 -3
- uncountable/types/api/recipes/set_recipe_inputs.py +16 -10
- uncountable/types/api/recipes/set_recipe_metadata.py +10 -3
- uncountable/types/api/recipes/set_recipe_output_annotations.py +24 -12
- uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +35 -12
- uncountable/types/api/recipes/set_recipe_tags.py +26 -9
- uncountable/types/api/recipes/set_recipe_total.py +59 -0
- uncountable/types/api/recipes/unarchive_recipes.py +10 -3
- uncountable/types/api/recipes/unlock_recipes.py +14 -6
- uncountable/types/api/runsheet/__init__.py +1 -0
- uncountable/types/api/runsheet/complete_async_upload.py +41 -0
- uncountable/types/api/triggers/run_trigger.py +11 -4
- uncountable/types/api/uploader/complete_async_parse.py +46 -0
- uncountable/types/api/uploader/invoke_uploader.py +13 -6
- uncountable/types/api/user/__init__.py +1 -0
- uncountable/types/api/user/get_current_user_info.py +40 -0
- uncountable/types/async_batch.py +2 -1
- uncountable/types/async_batch_processor.py +618 -18
- uncountable/types/async_batch_t.py +54 -7
- uncountable/types/async_jobs.py +8 -0
- uncountable/types/async_jobs_t.py +52 -0
- uncountable/types/auth_retrieval.py +11 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/base.py +0 -1
- uncountable/types/base_t.py +13 -11
- uncountable/types/calculations.py +0 -1
- uncountable/types/calculations_t.py +5 -2
- uncountable/types/chemical_structure.py +0 -1
- uncountable/types/chemical_structure_t.py +6 -5
- uncountable/types/client_base.py +751 -70
- uncountable/types/client_config.py +1 -1
- uncountable/types/client_config_t.py +17 -3
- uncountable/types/curves.py +0 -1
- uncountable/types/curves_t.py +10 -7
- uncountable/types/data.py +12 -0
- uncountable/types/data_t.py +103 -0
- uncountable/types/entity.py +4 -1
- uncountable/types/entity_t.py +125 -7
- uncountable/types/experiment_groups.py +0 -1
- uncountable/types/experiment_groups_t.py +5 -2
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +34 -0
- uncountable/types/field_values.py +19 -1
- uncountable/types/field_values_t.py +246 -9
- uncountable/types/fields.py +0 -1
- uncountable/types/fields_t.py +5 -2
- uncountable/types/generic_upload.py +6 -1
- uncountable/types/generic_upload_t.py +88 -9
- uncountable/types/id_source.py +0 -1
- uncountable/types/id_source_t.py +26 -7
- uncountable/types/identifier.py +0 -1
- uncountable/types/identifier_t.py +13 -5
- uncountable/types/input_attributes.py +0 -1
- uncountable/types/input_attributes_t.py +4 -4
- uncountable/types/inputs.py +1 -1
- uncountable/types/inputs_t.py +24 -4
- uncountable/types/integration_server.py +8 -0
- uncountable/types/integration_server_t.py +46 -0
- uncountable/types/integration_session.py +10 -0
- uncountable/types/integration_session_t.py +60 -0
- uncountable/types/integrations.py +10 -0
- uncountable/types/integrations_t.py +62 -0
- uncountable/types/job_definition.py +4 -6
- uncountable/types/job_definition_t.py +96 -65
- uncountable/types/listing.py +9 -0
- uncountable/types/listing_t.py +51 -0
- uncountable/types/notices.py +8 -0
- uncountable/types/notices_t.py +37 -0
- uncountable/types/notifications.py +11 -0
- uncountable/types/notifications_t.py +74 -0
- uncountable/types/outputs.py +0 -1
- uncountable/types/outputs_t.py +6 -3
- uncountable/types/overrides.py +9 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +0 -1
- uncountable/types/permissions_t.py +1 -2
- uncountable/types/phases.py +0 -1
- uncountable/types/phases_t.py +5 -2
- uncountable/types/post_base.py +0 -1
- uncountable/types/post_base_t.py +1 -2
- uncountable/types/queued_job.py +17 -0
- uncountable/types/queued_job_t.py +140 -0
- uncountable/types/recipe_identifiers.py +0 -1
- uncountable/types/recipe_identifiers_t.py +21 -8
- uncountable/types/recipe_inputs.py +0 -1
- uncountable/types/recipe_inputs_t.py +1 -2
- uncountable/types/recipe_links.py +0 -1
- uncountable/types/recipe_links_t.py +7 -4
- uncountable/types/recipe_metadata.py +0 -1
- uncountable/types/recipe_metadata_t.py +14 -9
- uncountable/types/recipe_output_metadata.py +0 -1
- uncountable/types/recipe_output_metadata_t.py +5 -2
- uncountable/types/recipe_tags.py +0 -1
- uncountable/types/recipe_tags_t.py +5 -2
- uncountable/types/recipe_workflow_steps.py +0 -1
- uncountable/types/recipe_workflow_steps_t.py +14 -7
- uncountable/types/recipes.py +0 -1
- uncountable/types/recipes_t.py +6 -2
- uncountable/types/response.py +0 -1
- uncountable/types/response_t.py +3 -2
- uncountable/types/secret_retrieval.py +0 -1
- uncountable/types/secret_retrieval_t.py +13 -7
- uncountable/types/sockets.py +20 -0
- uncountable/types/sockets_t.py +169 -0
- uncountable/types/structured_filters.py +25 -0
- uncountable/types/structured_filters_t.py +248 -0
- uncountable/types/units.py +0 -1
- uncountable/types/units_t.py +5 -2
- uncountable/types/uploader.py +24 -0
- uncountable/types/uploader_t.py +222 -0
- uncountable/types/users.py +0 -1
- uncountable/types/users_t.py +5 -2
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +48 -0
- uncountable/types/workflows.py +0 -1
- uncountable/types/workflows_t.py +10 -4
- uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
- uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
- {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
- UncountablePythonSDK-0.0.52.dist-info/METADATA +0 -56
- UncountablePythonSDK-0.0.52.dist-info/RECORD +0 -246
- docs/quickstart.md +0 -19
- uncountable/core/version.py +0 -11
- {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -0
|
@@ -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,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -8,6 +7,7 @@ import typing # noqa: F401
|
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
9
|
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import base_t
|
|
12
12
|
from ... import curves_t
|
|
13
13
|
|
|
@@ -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,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -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
|
-
@dataclasses.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,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -8,6 +7,7 @@ import typing # noqa: F401
|
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
9
|
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import base_t
|
|
12
12
|
from ... import recipe_links_t
|
|
13
13
|
|
|
@@ -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,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -8,6 +7,7 @@ import typing # noqa: F401
|
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
9
|
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -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,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -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
|
-
@dataclasses.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]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -7,8 +6,10 @@ from __future__ import annotations
|
|
|
7
6
|
import typing # noqa: F401
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
10
|
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
|
+
from pkgs.serialization import serial_string_enum
|
|
12
13
|
from ... import base_t
|
|
13
14
|
from ... import experiment_groups_t
|
|
14
15
|
from ... import inputs_t
|
|
@@ -25,7 +26,9 @@ __all__: list[str] = [
|
|
|
25
26
|
"ENDPOINT_PATH",
|
|
26
27
|
"Recipe",
|
|
27
28
|
"RecipeInput",
|
|
29
|
+
"RecipeLockStatus",
|
|
28
30
|
"RecipeOutput",
|
|
31
|
+
"RecipeOutputInclusion",
|
|
29
32
|
"RecipeStep",
|
|
30
33
|
"RecipeStepGroup",
|
|
31
34
|
"RecipeStepRelationship",
|
|
@@ -38,45 +41,66 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipes_data"
|
|
|
38
41
|
|
|
39
42
|
|
|
40
43
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
41
|
-
@
|
|
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]
|
|
42
48
|
class Arguments:
|
|
43
|
-
recipe_ids:
|
|
44
|
-
project_id:
|
|
45
|
-
offset:
|
|
46
|
-
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"
|
|
47
66
|
|
|
48
67
|
|
|
49
68
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
50
69
|
@serial_class(
|
|
70
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeOutput",
|
|
51
71
|
unconverted_values={"quantity_json"},
|
|
52
72
|
to_string_values={"quantity_dec"},
|
|
53
73
|
)
|
|
54
|
-
@dataclasses.dataclass(kw_only=True)
|
|
74
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
55
75
|
class RecipeOutput:
|
|
56
76
|
id: base_t.ObjectId
|
|
57
77
|
output_id: base_t.ObjectId
|
|
58
78
|
replicate_num: int
|
|
59
79
|
quantity_json: base_t.JsonValue
|
|
60
|
-
curve_id:
|
|
61
|
-
output_condition_id:
|
|
62
|
-
quantity_dec:
|
|
80
|
+
curve_id: base_t.ObjectId | None
|
|
81
|
+
output_condition_id: base_t.ObjectId | None
|
|
82
|
+
quantity_dec: Decimal | None = None
|
|
63
83
|
|
|
64
84
|
|
|
65
85
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
66
86
|
@serial_class(
|
|
87
|
+
named_type_path="sdk.api.recipes.get_recipes_data.ConditionParameterValue",
|
|
67
88
|
unconverted_values={"quantity_json"},
|
|
68
89
|
to_string_values={"quantity_dec"},
|
|
69
90
|
)
|
|
70
|
-
@dataclasses.dataclass(kw_only=True)
|
|
91
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
71
92
|
class ConditionParameterValue:
|
|
72
93
|
condition_parameter_id: base_t.ObjectId
|
|
73
94
|
condition_parameter_name: str
|
|
74
95
|
quantity_json: base_t.JsonValue
|
|
75
|
-
quantity_dec:
|
|
96
|
+
quantity_dec: Decimal | None = None
|
|
76
97
|
|
|
77
98
|
|
|
78
99
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
79
|
-
@
|
|
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]
|
|
80
104
|
class SimpleOutputCondition:
|
|
81
105
|
output_condition_id: base_t.ObjectId
|
|
82
106
|
condition_parameter_values: list[ConditionParameterValue]
|
|
@@ -84,42 +108,54 @@ class SimpleOutputCondition:
|
|
|
84
108
|
|
|
85
109
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
86
110
|
@serial_class(
|
|
111
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeInput",
|
|
87
112
|
unconverted_values={"actual_quantity_json", "quantity_json"},
|
|
88
113
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
89
114
|
)
|
|
90
|
-
@dataclasses.dataclass(kw_only=True)
|
|
115
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
91
116
|
class RecipeInput:
|
|
92
117
|
id: base_t.ObjectId
|
|
93
118
|
input_id: base_t.ObjectId
|
|
94
|
-
input_lot_recipe_id:
|
|
119
|
+
input_lot_recipe_id: base_t.ObjectId | None
|
|
95
120
|
recipe_step_id: base_t.ObjectId
|
|
96
121
|
quantity_json: base_t.JsonValue
|
|
97
|
-
curve_id:
|
|
122
|
+
curve_id: base_t.ObjectId | None
|
|
98
123
|
actual_quantity_json: base_t.JsonValue
|
|
99
124
|
behavior: str
|
|
100
|
-
|
|
101
|
-
|
|
125
|
+
ingredient_role_id: base_t.ObjectId | None
|
|
126
|
+
quantity_dec: Decimal | None = None
|
|
127
|
+
actual_quantity_dec: Decimal | None = None
|
|
102
128
|
|
|
103
129
|
|
|
104
130
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
105
|
-
@
|
|
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]
|
|
106
135
|
class RecipeStep:
|
|
107
|
-
name:
|
|
136
|
+
name: str | None
|
|
108
137
|
recipe_step_id: base_t.ObjectId
|
|
109
138
|
recipe_step_number: int
|
|
110
|
-
instructions:
|
|
139
|
+
instructions: str | None = None
|
|
111
140
|
|
|
112
141
|
|
|
113
142
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
114
|
-
@
|
|
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]
|
|
115
147
|
class RecipeStepGroup:
|
|
116
|
-
name:
|
|
148
|
+
name: str | None
|
|
117
149
|
recipe_steps: list[RecipeStep]
|
|
118
150
|
|
|
119
151
|
|
|
120
152
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
121
|
-
@
|
|
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]
|
|
122
157
|
class RecipeWorkflowStep:
|
|
158
|
+
recipe_workflow_step_name: str | None
|
|
123
159
|
recipe_workflow_step_id: base_t.ObjectId
|
|
124
160
|
workflow_step_id: base_t.ObjectId
|
|
125
161
|
recipe_step_groups: list[RecipeStepGroup]
|
|
@@ -127,26 +163,40 @@ class RecipeWorkflowStep:
|
|
|
127
163
|
|
|
128
164
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
129
165
|
@serial_class(
|
|
166
|
+
named_type_path="sdk.api.recipes.get_recipes_data.RecipeStepRelationship",
|
|
130
167
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
131
168
|
)
|
|
132
|
-
@dataclasses.dataclass(kw_only=True)
|
|
169
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
133
170
|
class RecipeStepRelationship:
|
|
134
171
|
step_relationship_id: base_t.ObjectId
|
|
135
|
-
name:
|
|
172
|
+
name: str | None
|
|
136
173
|
source_recipe_workflow_step_id: base_t.ObjectId
|
|
137
174
|
target_recipe_step_id: base_t.ObjectId
|
|
138
|
-
quantity_dec:
|
|
139
|
-
actual_quantity_dec:
|
|
175
|
+
quantity_dec: Decimal | None = None
|
|
176
|
+
actual_quantity_dec: Decimal | None = None
|
|
140
177
|
|
|
141
178
|
|
|
142
179
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
143
|
-
@
|
|
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
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
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]
|
|
144
194
|
class Recipe:
|
|
145
195
|
recipe_id: base_t.ObjectId
|
|
146
196
|
create_datetime: str
|
|
147
197
|
last_modified_datetime: str
|
|
148
198
|
name: str
|
|
149
|
-
notes:
|
|
199
|
+
notes: str | None
|
|
150
200
|
workflow_id: base_t.ObjectId
|
|
151
201
|
metadata: list[recipe_metadata_t.RecipeMetadata]
|
|
152
202
|
inputs: list[RecipeInput]
|
|
@@ -155,12 +205,16 @@ class Recipe:
|
|
|
155
205
|
tag_ids: list[base_t.ObjectId]
|
|
156
206
|
experiment_group_ids: list[base_t.ObjectId]
|
|
157
207
|
step_relationships: list[RecipeStepRelationship]
|
|
158
|
-
|
|
159
|
-
|
|
208
|
+
recipe_lock_status: RecipeLockStatus
|
|
209
|
+
creating_user_id: base_t.ObjectId | None = None
|
|
210
|
+
barcode_value: str | None = None
|
|
160
211
|
|
|
161
212
|
|
|
162
213
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
163
|
-
@
|
|
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]
|
|
164
218
|
class Data:
|
|
165
219
|
recipes: list[Recipe]
|
|
166
220
|
workflows: list[workflows_t.SimpleWorkflow]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -7,8 +6,11 @@ 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
|
|
11
10
|
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from ... import async_batch_t
|
|
13
|
+
from ... import base_t
|
|
12
14
|
from ... import identifier_t
|
|
13
15
|
|
|
14
16
|
__all__: list[str] = [
|
|
@@ -31,23 +33,32 @@ class RecipeLockType(StrEnum):
|
|
|
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.lock_recipes.RecipeLockBase",
|
|
38
|
+
)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
35
40
|
class RecipeLockBase:
|
|
36
41
|
recipe: identifier_t.IdentifierKey
|
|
37
42
|
|
|
38
43
|
|
|
39
44
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
|
-
@
|
|
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]
|
|
41
49
|
class Arguments:
|
|
42
50
|
type: RecipeLockType = RecipeLockType.ALL
|
|
43
51
|
recipes: list[identifier_t.IdentifierKey]
|
|
44
52
|
globally_removable: bool
|
|
45
|
-
lock_samples:
|
|
46
|
-
comments:
|
|
53
|
+
lock_samples: bool | None = None
|
|
54
|
+
comments: str | None = None
|
|
47
55
|
|
|
48
56
|
|
|
49
57
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
50
|
-
@
|
|
51
|
-
|
|
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):
|
|
52
63
|
pass
|
|
53
64
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -8,6 +7,8 @@ import typing # noqa: F401
|
|
|
8
7
|
import datetime # noqa: F401
|
|
9
8
|
from decimal import Decimal # noqa: F401
|
|
10
9
|
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from ... import base_t
|
|
11
12
|
from ... import identifier_t
|
|
12
13
|
|
|
13
14
|
__all__: list[str] = [
|
|
@@ -22,14 +23,20 @@ ENDPOINT_PATH = "api/external/recipes/remove_recipe_from_project"
|
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
25
|
-
@
|
|
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]
|
|
26
30
|
class Arguments:
|
|
27
31
|
recipe_key: identifier_t.IdentifierKey
|
|
28
32
|
project_key: identifier_t.IdentifierKey
|
|
29
33
|
|
|
30
34
|
|
|
31
35
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
-
@
|
|
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]
|
|
33
40
|
class Data:
|
|
34
41
|
pass
|
|
35
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
# flake8: noqa: F821
|
|
3
2
|
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
@@ -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
|
-
@dataclasses.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
|