UncountablePythonSDK 0.0.110__py3-none-any.whl → 0.0.112__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 +2 -2
- docs/justfile +1 -1
- examples/create_ingredient_sdk.py +34 -0
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +35 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +9 -0
- examples/integration-server/pyproject.toml +2 -2
- pkgs/argument_parser/argument_parser.py +9 -6
- pkgs/type_spec/builder.py +19 -2
- pkgs/type_spec/emit_python.py +9 -3
- pkgs/type_spec/emit_typescript_util.py +16 -1
- pkgs/type_spec/parts/base.py.prepart +4 -0
- pkgs/type_spec/type_info/emit_type_info.py +12 -3
- pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
- pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +294 -0
- pkgs/type_spec/value_spec/convert_type.py +13 -0
- uncountable/core/client.py +7 -4
- uncountable/integration/executors/generic_upload_executor.py +3 -2
- uncountable/integration/job.py +24 -1
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +3 -2
- uncountable/integration/scheduler.py +4 -3
- uncountable/types/__init__.py +4 -0
- uncountable/types/api/batch/execute_batch.py +4 -4
- uncountable/types/api/batch/execute_batch_load_async.py +2 -2
- uncountable/types/api/chemical/convert_chemical_formats.py +3 -3
- 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 +3 -3
- uncountable/types/api/entity/create_entity.py +3 -3
- uncountable/types/api/entity/create_or_update_entity.py +3 -2
- uncountable/types/api/entity/get_entities_data.py +3 -3
- uncountable/types/api/entity/grant_entity_permissions.py +3 -2
- uncountable/types/api/entity/list_entities.py +4 -4
- uncountable/types/api/entity/lock_entity.py +3 -2
- uncountable/types/api/entity/lookup_entity.py +5 -5
- uncountable/types/api/entity/resolve_entity_ids.py +3 -3
- uncountable/types/api/entity/set_entity_field_values.py +3 -2
- uncountable/types/api/entity/set_values.py +3 -2
- uncountable/types/api/entity/transition_entity_phase.py +5 -4
- uncountable/types/api/entity/unlock_entity.py +3 -2
- uncountable/types/api/equipment/associate_equipment_input.py +2 -2
- uncountable/types/api/field_options/upsert_field_options.py +4 -3
- uncountable/types/api/files/download_file.py +4 -3
- uncountable/types/api/id_source/list_id_source.py +3 -3
- uncountable/types/api/id_source/match_id_source.py +3 -3
- uncountable/types/api/input_groups/get_input_group_names.py +3 -3
- uncountable/types/api/inputs/create_inputs.py +6 -4
- uncountable/types/api/inputs/get_input_data.py +6 -6
- uncountable/types/api/inputs/get_input_names.py +3 -3
- uncountable/types/api/inputs/get_inputs_data.py +6 -6
- uncountable/types/api/inputs/set_input_attribute_values.py +3 -3
- uncountable/types/api/inputs/set_input_category.py +3 -2
- uncountable/types/api/inputs/set_input_subcategories.py +3 -2
- uncountable/types/api/inputs/set_intermediate_type.py +3 -2
- uncountable/types/api/material_families/update_entity_material_families.py +2 -2
- uncountable/types/api/outputs/get_output_data.py +6 -6
- uncountable/types/api/outputs/get_output_names.py +3 -3
- uncountable/types/api/outputs/resolve_output_conditions.py +5 -5
- uncountable/types/api/permissions/set_core_permissions.py +7 -6
- uncountable/types/api/project/get_projects.py +3 -3
- uncountable/types/api/project/get_projects_data.py +3 -3
- uncountable/types/api/recipe_links/create_recipe_link.py +3 -2
- uncountable/types/api/recipe_links/remove_recipe_link.py +3 -2
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -3
- uncountable/types/api/recipes/add_recipe_to_project.py +3 -2
- uncountable/types/api/recipes/add_time_series_data.py +4 -3
- uncountable/types/api/recipes/archive_recipes.py +3 -2
- uncountable/types/api/recipes/associate_recipe_as_input.py +3 -2
- uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -2
- uncountable/types/api/recipes/clear_recipe_outputs.py +3 -2
- uncountable/types/api/recipes/create_recipe.py +2 -2
- uncountable/types/api/recipes/create_recipes.py +4 -4
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -2
- uncountable/types/api/recipes/edit_recipe_inputs.py +18 -16
- uncountable/types/api/recipes/get_column_calculation_values.py +3 -3
- uncountable/types/api/recipes/get_curve.py +2 -2
- uncountable/types/api/recipes/get_recipe_calculations.py +3 -3
- uncountable/types/api/recipes/get_recipe_links.py +2 -2
- uncountable/types/api/recipes/get_recipe_names.py +3 -3
- uncountable/types/api/recipes/get_recipe_output_metadata.py +3 -3
- uncountable/types/api/recipes/get_recipes_data.py +11 -11
- uncountable/types/api/recipes/lock_recipes.py +4 -3
- uncountable/types/api/recipes/remove_recipe_from_project.py +3 -2
- uncountable/types/api/recipes/set_recipe_inputs.py +3 -3
- uncountable/types/api/recipes/set_recipe_metadata.py +3 -2
- uncountable/types/api/recipes/set_recipe_output_annotations.py +6 -6
- uncountable/types/api/recipes/set_recipe_output_file.py +3 -3
- uncountable/types/api/recipes/set_recipe_outputs.py +4 -4
- uncountable/types/api/recipes/set_recipe_tags.py +6 -6
- uncountable/types/api/recipes/unarchive_recipes.py +3 -2
- uncountable/types/api/recipes/unlock_recipes.py +3 -2
- 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 +3 -2
- uncountable/types/api/uploader/invoke_uploader.py +2 -2
- uncountable/types/async_batch_processor.py +74 -0
- uncountable/types/async_batch_t.py +7 -5
- uncountable/types/auth_retrieval_t.py +4 -3
- uncountable/types/base_t.py +4 -0
- uncountable/types/calculations_t.py +1 -1
- uncountable/types/chemical_structure_t.py +2 -1
- uncountable/types/client_base.py +48 -0
- uncountable/types/client_config_t.py +2 -1
- uncountable/types/curves_t.py +2 -2
- uncountable/types/data_t.py +22 -21
- uncountable/types/entity_t.py +9 -3
- uncountable/types/experiment_groups_t.py +1 -1
- uncountable/types/field_values_t.py +20 -20
- uncountable/types/fields_t.py +1 -1
- uncountable/types/generic_upload_t.py +7 -6
- uncountable/types/id_source_t.py +5 -4
- uncountable/types/identifier_t.py +3 -3
- uncountable/types/input_attributes_t.py +1 -1
- uncountable/types/inputs_t.py +1 -1
- uncountable/types/integration_server_t.py +2 -1
- uncountable/types/job_definition_t.py +14 -13
- uncountable/types/outputs_t.py +1 -1
- uncountable/types/overrides_t.py +3 -2
- uncountable/types/phases_t.py +1 -1
- uncountable/types/queued_job_t.py +7 -7
- uncountable/types/recipe_identifiers_t.py +3 -3
- uncountable/types/recipe_links_t.py +1 -1
- uncountable/types/recipe_metadata_t.py +3 -3
- uncountable/types/recipe_output_metadata_t.py +1 -1
- uncountable/types/recipe_tags_t.py +1 -1
- uncountable/types/recipe_workflow_steps_t.py +5 -4
- uncountable/types/recipes_t.py +2 -1
- uncountable/types/response_t.py +2 -1
- uncountable/types/secret_retrieval_t.py +4 -3
- uncountable/types/units_t.py +1 -1
- uncountable/types/users_t.py +1 -1
- uncountable/types/webhook_job_t.py +4 -3
- uncountable/types/workflows_t.py +2 -2
- {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/METADATA +2 -1
- {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/RECORD +136 -128
- {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/WHEEL +1 -1
- {uncountablepythonsdk-0.0.110.dist-info → uncountablepythonsdk-0.0.112.dist-info}/top_level.txt +0 -0
|
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/outputs/external_resolve_output_conditions"
|
|
|
30
30
|
named_type_path="sdk.api.outputs.resolve_output_conditions.ConditionParameterValueRecord",
|
|
31
31
|
to_string_values={"value_numeric"},
|
|
32
32
|
)
|
|
33
|
-
@dataclasses.dataclass(kw_only=True)
|
|
33
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
34
34
|
class ConditionParameterValueRecord:
|
|
35
35
|
condition_parameter_id: base_t.ObjectId
|
|
36
36
|
value_numeric: Decimal | None = None
|
|
@@ -41,7 +41,7 @@ class ConditionParameterValueRecord:
|
|
|
41
41
|
@serial_class(
|
|
42
42
|
named_type_path="sdk.api.outputs.resolve_output_conditions.ConditionRequest",
|
|
43
43
|
)
|
|
44
|
-
@dataclasses.dataclass(kw_only=True)
|
|
44
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
45
45
|
class ConditionRequest:
|
|
46
46
|
conditions: list[ConditionParameterValueRecord]
|
|
47
47
|
|
|
@@ -50,7 +50,7 @@ class ConditionRequest:
|
|
|
50
50
|
@serial_class(
|
|
51
51
|
named_type_path="sdk.api.outputs.resolve_output_conditions.Arguments",
|
|
52
52
|
)
|
|
53
|
-
@dataclasses.dataclass(kw_only=True)
|
|
53
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
54
54
|
class Arguments:
|
|
55
55
|
requested_conditions: list[ConditionRequest]
|
|
56
56
|
|
|
@@ -59,7 +59,7 @@ class Arguments:
|
|
|
59
59
|
@serial_class(
|
|
60
60
|
named_type_path="sdk.api.outputs.resolve_output_conditions.ConditionResponse",
|
|
61
61
|
)
|
|
62
|
-
@dataclasses.dataclass(kw_only=True)
|
|
62
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
63
63
|
class ConditionResponse:
|
|
64
64
|
conditions: list[ConditionParameterValueRecord]
|
|
65
65
|
output_condition_id: base_t.ObjectId
|
|
@@ -69,7 +69,7 @@ class ConditionResponse:
|
|
|
69
69
|
@serial_class(
|
|
70
70
|
named_type_path="sdk.api.outputs.resolve_output_conditions.Data",
|
|
71
71
|
)
|
|
72
|
-
@dataclasses.dataclass(kw_only=True)
|
|
72
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
73
73
|
class Data:
|
|
74
74
|
resolved_conditions: list[ConditionResponse]
|
|
75
75
|
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from pkgs.serialization import serial_alias_annotation
|
|
12
|
+
from ... import base_t
|
|
12
13
|
from ... import identifier_t
|
|
13
14
|
from ... import permissions_t
|
|
14
15
|
from ... import post_base_t
|
|
@@ -34,7 +35,7 @@ ENDPOINT_PATH = "api/external/permissions/external_set_core_permissions"
|
|
|
34
35
|
named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeProject",
|
|
35
36
|
parse_require={"type"},
|
|
36
37
|
)
|
|
37
|
-
@dataclasses.dataclass(kw_only=True)
|
|
38
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
38
39
|
class PermissionsScopeProject:
|
|
39
40
|
type: typing.Literal["project"] = "project"
|
|
40
41
|
project_key: identifier_t.IdentifierKey
|
|
@@ -45,7 +46,7 @@ class PermissionsScopeProject:
|
|
|
45
46
|
named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeRecipe",
|
|
46
47
|
parse_require={"type"},
|
|
47
48
|
)
|
|
48
|
-
@dataclasses.dataclass(kw_only=True)
|
|
49
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
49
50
|
class PermissionsScopeRecipe:
|
|
50
51
|
type: typing.Literal["recipe"] = "recipe"
|
|
51
52
|
recipe_key: identifier_t.IdentifierKey
|
|
@@ -56,7 +57,7 @@ class PermissionsScopeRecipe:
|
|
|
56
57
|
named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeMaterialFamily",
|
|
57
58
|
parse_require={"type"},
|
|
58
59
|
)
|
|
59
|
-
@dataclasses.dataclass(kw_only=True)
|
|
60
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
60
61
|
class PermissionsScopeMaterialFamily:
|
|
61
62
|
type: typing.Literal["material_family"] = "material_family"
|
|
62
63
|
material_family_key: identifier_t.IdentifierKey
|
|
@@ -67,7 +68,7 @@ class PermissionsScopeMaterialFamily:
|
|
|
67
68
|
named_type_path="sdk.api.permissions.set_core_permissions.PermissionsScopeAllMaterialFamilies",
|
|
68
69
|
parse_require={"type"},
|
|
69
70
|
)
|
|
70
|
-
@dataclasses.dataclass(kw_only=True)
|
|
71
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
71
72
|
class PermissionsScopeAllMaterialFamilies:
|
|
72
73
|
type: typing.Literal["all_material_families"] = "all_material_families"
|
|
73
74
|
|
|
@@ -85,7 +86,7 @@ PermissionsScope = typing.Annotated[
|
|
|
85
86
|
@serial_class(
|
|
86
87
|
named_type_path="sdk.api.permissions.set_core_permissions.Arguments",
|
|
87
88
|
)
|
|
88
|
-
@dataclasses.dataclass(kw_only=True)
|
|
89
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
89
90
|
class Arguments:
|
|
90
91
|
scope: PermissionsScope
|
|
91
92
|
permissions_types: list[permissions_t.CorePermissionType]
|
|
@@ -98,7 +99,7 @@ class Arguments:
|
|
|
98
99
|
@serial_class(
|
|
99
100
|
named_type_path="sdk.api.permissions.set_core_permissions.Data",
|
|
100
101
|
)
|
|
101
|
-
@dataclasses.dataclass(kw_only=True)
|
|
102
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
102
103
|
class Data:
|
|
103
104
|
pass
|
|
104
105
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/project/external_get_projects"
|
|
|
27
27
|
@serial_class(
|
|
28
28
|
named_type_path="sdk.api.project.get_projects.Arguments",
|
|
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 Arguments:
|
|
32
32
|
all_material_families: bool
|
|
33
33
|
material_family_id: base_t.ObjectId | None
|
|
@@ -37,7 +37,7 @@ class Arguments:
|
|
|
37
37
|
@serial_class(
|
|
38
38
|
named_type_path="sdk.api.project.get_projects.Project",
|
|
39
39
|
)
|
|
40
|
-
@dataclasses.dataclass(kw_only=True)
|
|
40
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
41
41
|
class Project:
|
|
42
42
|
id: base_t.ObjectId
|
|
43
43
|
name: str
|
|
@@ -50,7 +50,7 @@ class Project:
|
|
|
50
50
|
@serial_class(
|
|
51
51
|
named_type_path="sdk.api.project.get_projects.Data",
|
|
52
52
|
)
|
|
53
|
-
@dataclasses.dataclass(kw_only=True)
|
|
53
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
54
54
|
class Data:
|
|
55
55
|
projects: list[Project]
|
|
56
56
|
phases: list[phases_t.Phase]
|
|
@@ -29,7 +29,7 @@ ENDPOINT_PATH = "api/external/project/external_get_projects_data"
|
|
|
29
29
|
@serial_class(
|
|
30
30
|
named_type_path="sdk.api.project.get_projects_data.Arguments",
|
|
31
31
|
)
|
|
32
|
-
@dataclasses.dataclass(kw_only=True)
|
|
32
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
33
33
|
class Arguments:
|
|
34
34
|
project_ids: list[base_t.ObjectId]
|
|
35
35
|
offset: int | None = None
|
|
@@ -40,7 +40,7 @@ class Arguments:
|
|
|
40
40
|
@serial_class(
|
|
41
41
|
named_type_path="sdk.api.project.get_projects_data.ProjectDetailed",
|
|
42
42
|
)
|
|
43
|
-
@dataclasses.dataclass(kw_only=True)
|
|
43
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
44
44
|
class ProjectDetailed:
|
|
45
45
|
id: base_t.ObjectId
|
|
46
46
|
name: str
|
|
@@ -54,7 +54,7 @@ class ProjectDetailed:
|
|
|
54
54
|
@serial_class(
|
|
55
55
|
named_type_path="sdk.api.project.get_projects_data.Data",
|
|
56
56
|
)
|
|
57
|
-
@dataclasses.dataclass(kw_only=True)
|
|
57
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
58
58
|
class Data:
|
|
59
59
|
projects: list[ProjectDetailed]
|
|
60
60
|
phases: list[phases_t.Phase]
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
12
13
|
from ... import identifier_t
|
|
13
14
|
from ... import recipe_links_t
|
|
14
15
|
|
|
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/recipe_links/create_recipe_link"
|
|
|
27
28
|
@serial_class(
|
|
28
29
|
named_type_path="sdk.api.recipe_links.create_recipe_link.Arguments",
|
|
29
30
|
)
|
|
30
|
-
@dataclasses.dataclass(kw_only=True)
|
|
31
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
31
32
|
class Arguments:
|
|
32
33
|
recipe_from_key: identifier_t.IdentifierKey
|
|
33
34
|
recipe_to_key: identifier_t.IdentifierKey
|
|
@@ -39,7 +40,7 @@ class Arguments:
|
|
|
39
40
|
@serial_class(
|
|
40
41
|
named_type_path="sdk.api.recipe_links.create_recipe_link.Data",
|
|
41
42
|
)
|
|
42
|
-
@dataclasses.dataclass(kw_only=True)
|
|
43
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
43
44
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
44
45
|
pass
|
|
45
46
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
12
13
|
from ... import identifier_t
|
|
13
14
|
from ... import recipe_links_t
|
|
14
15
|
|
|
@@ -27,7 +28,7 @@ ENDPOINT_PATH = "api/external/recipe_links/remove_recipe_link"
|
|
|
27
28
|
@serial_class(
|
|
28
29
|
named_type_path="sdk.api.recipe_links.remove_recipe_link.Arguments",
|
|
29
30
|
)
|
|
30
|
-
@dataclasses.dataclass(kw_only=True)
|
|
31
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
31
32
|
class Arguments:
|
|
32
33
|
recipe_from_key: identifier_t.IdentifierKey
|
|
33
34
|
recipe_to_key: identifier_t.IdentifierKey
|
|
@@ -38,7 +39,7 @@ class Arguments:
|
|
|
38
39
|
@serial_class(
|
|
39
40
|
named_type_path="sdk.api.recipe_links.remove_recipe_link.Data",
|
|
40
41
|
)
|
|
41
|
-
@dataclasses.dataclass(kw_only=True)
|
|
42
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
42
43
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
43
44
|
pass
|
|
44
45
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -26,7 +26,7 @@ ENDPOINT_PATH = "api/external/recipe_metadata/external_get_recipe_metadata_data"
|
|
|
26
26
|
@serial_class(
|
|
27
27
|
named_type_path="sdk.api.recipe_metadata.get_recipe_metadata_data.Arguments",
|
|
28
28
|
)
|
|
29
|
-
@dataclasses.dataclass(kw_only=True)
|
|
29
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
30
30
|
class Arguments:
|
|
31
31
|
material_family_id: base_t.ObjectId
|
|
32
32
|
recipe_metadata_ids: list[base_t.ObjectId] | None
|
|
@@ -38,7 +38,7 @@ class Arguments:
|
|
|
38
38
|
@serial_class(
|
|
39
39
|
named_type_path="sdk.api.recipe_metadata.get_recipe_metadata_data.FullRecipeMetadataField",
|
|
40
40
|
)
|
|
41
|
-
@dataclasses.dataclass(kw_only=True)
|
|
41
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
42
42
|
class FullRecipeMetadataField:
|
|
43
43
|
recipe_metadata_id: base_t.ObjectId
|
|
44
44
|
name: str
|
|
@@ -49,7 +49,7 @@ class FullRecipeMetadataField:
|
|
|
49
49
|
@serial_class(
|
|
50
50
|
named_type_path="sdk.api.recipe_metadata.get_recipe_metadata_data.Data",
|
|
51
51
|
)
|
|
52
|
-
@dataclasses.dataclass(kw_only=True)
|
|
52
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
53
53
|
class Data:
|
|
54
54
|
recipe_metadata: list[FullRecipeMetadataField]
|
|
55
55
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -8,6 +8,7 @@ import datetime # noqa: F401
|
|
|
8
8
|
from decimal import Decimal # noqa: F401
|
|
9
9
|
import dataclasses
|
|
10
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] = [
|
|
@@ -25,7 +26,7 @@ ENDPOINT_PATH = "api/external/recipes/add_recipe_to_project"
|
|
|
25
26
|
@serial_class(
|
|
26
27
|
named_type_path="sdk.api.recipes.add_recipe_to_project.Arguments",
|
|
27
28
|
)
|
|
28
|
-
@dataclasses.dataclass(kw_only=True)
|
|
29
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
29
30
|
class Arguments:
|
|
30
31
|
recipe_key: identifier_t.IdentifierKey
|
|
31
32
|
project_key: identifier_t.IdentifierKey
|
|
@@ -35,7 +36,7 @@ class Arguments:
|
|
|
35
36
|
@serial_class(
|
|
36
37
|
named_type_path="sdk.api.recipes.add_recipe_to_project.Data",
|
|
37
38
|
)
|
|
38
|
-
@dataclasses.dataclass(kw_only=True)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
39
40
|
class Data:
|
|
40
41
|
pass
|
|
41
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -10,6 +10,7 @@ from enum import StrEnum
|
|
|
10
10
|
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
from ... import async_batch_t
|
|
13
|
+
from ... import base_t
|
|
13
14
|
from ... import identifier_t
|
|
14
15
|
|
|
15
16
|
__all__: list[str] = [
|
|
@@ -36,7 +37,7 @@ class OnTimepointConflict(StrEnum):
|
|
|
36
37
|
named_type_path="sdk.api.recipes.add_time_series_data.TimeSeriesDatum",
|
|
37
38
|
to_string_values={"value"},
|
|
38
39
|
)
|
|
39
|
-
@dataclasses.dataclass(kw_only=True)
|
|
40
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
40
41
|
class TimeSeriesDatum:
|
|
41
42
|
timestamp: datetime.datetime
|
|
42
43
|
value: Decimal | None = None
|
|
@@ -46,7 +47,7 @@ class TimeSeriesDatum:
|
|
|
46
47
|
@serial_class(
|
|
47
48
|
named_type_path="sdk.api.recipes.add_time_series_data.Arguments",
|
|
48
49
|
)
|
|
49
|
-
@dataclasses.dataclass(kw_only=True)
|
|
50
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
50
51
|
class Arguments:
|
|
51
52
|
time_series_segment_key: identifier_t.IdentifierKey
|
|
52
53
|
time_series_data: list[TimeSeriesDatum]
|
|
@@ -57,7 +58,7 @@ class Arguments:
|
|
|
57
58
|
@serial_class(
|
|
58
59
|
named_type_path="sdk.api.recipes.add_time_series_data.Data",
|
|
59
60
|
)
|
|
60
|
-
@dataclasses.dataclass(kw_only=True)
|
|
61
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
61
62
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
62
63
|
pass
|
|
63
64
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -8,6 +8,7 @@ import datetime # noqa: F401
|
|
|
8
8
|
from decimal import Decimal # noqa: F401
|
|
9
9
|
import dataclasses
|
|
10
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] = [
|
|
@@ -25,7 +26,7 @@ ENDPOINT_PATH = "api/external/recipes/archive"
|
|
|
25
26
|
@serial_class(
|
|
26
27
|
named_type_path="sdk.api.recipes.archive_recipes.Arguments",
|
|
27
28
|
)
|
|
28
|
-
@dataclasses.dataclass(kw_only=True)
|
|
29
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
29
30
|
class Arguments:
|
|
30
31
|
recipes: list[identifier_t.IdentifierKey]
|
|
31
32
|
reason: str | None = None
|
|
@@ -35,7 +36,7 @@ class Arguments:
|
|
|
35
36
|
@serial_class(
|
|
36
37
|
named_type_path="sdk.api.recipes.archive_recipes.Data",
|
|
37
38
|
)
|
|
38
|
-
@dataclasses.dataclass(kw_only=True)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
39
40
|
class Data:
|
|
40
41
|
pass
|
|
41
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
12
13
|
from ... import identifier_t
|
|
13
14
|
|
|
14
15
|
__all__: list[str] = [
|
|
@@ -26,7 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/associate_recipe_as_input"
|
|
|
26
27
|
@serial_class(
|
|
27
28
|
named_type_path="sdk.api.recipes.associate_recipe_as_input.Arguments",
|
|
28
29
|
)
|
|
29
|
-
@dataclasses.dataclass(kw_only=True)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
30
31
|
class Arguments:
|
|
31
32
|
recipe_key: identifier_t.IdentifierKey
|
|
32
33
|
input_key: identifier_t.IdentifierKey | None = None
|
|
@@ -37,7 +38,7 @@ class Arguments:
|
|
|
37
38
|
@serial_class(
|
|
38
39
|
named_type_path="sdk.api.recipes.associate_recipe_as_input.Data",
|
|
39
40
|
)
|
|
40
|
-
@dataclasses.dataclass(kw_only=True)
|
|
41
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
41
42
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
42
43
|
pass
|
|
43
44
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
12
13
|
from ... import identifier_t
|
|
13
14
|
|
|
14
15
|
__all__: list[str] = [
|
|
@@ -26,7 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/associate_recipe_as_lot"
|
|
|
26
27
|
@serial_class(
|
|
27
28
|
named_type_path="sdk.api.recipes.associate_recipe_as_lot.Arguments",
|
|
28
29
|
)
|
|
29
|
-
@dataclasses.dataclass(kw_only=True)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
30
31
|
class Arguments:
|
|
31
32
|
recipe_key: identifier_t.IdentifierKey
|
|
32
33
|
ingredient_key: identifier_t.IdentifierKey
|
|
@@ -36,7 +37,7 @@ class Arguments:
|
|
|
36
37
|
@serial_class(
|
|
37
38
|
named_type_path="sdk.api.recipes.associate_recipe_as_lot.Data",
|
|
38
39
|
)
|
|
39
|
-
@dataclasses.dataclass(kw_only=True)
|
|
40
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
40
41
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
41
42
|
pass
|
|
42
43
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
12
13
|
from ... import identifier_t
|
|
13
14
|
|
|
14
15
|
__all__: list[str] = [
|
|
@@ -26,7 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/clear_recipe_outputs"
|
|
|
26
27
|
@serial_class(
|
|
27
28
|
named_type_path="sdk.api.recipes.clear_recipe_outputs.Arguments",
|
|
28
29
|
)
|
|
29
|
-
@dataclasses.dataclass(kw_only=True)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
30
31
|
class Arguments:
|
|
31
32
|
recipe_key: identifier_t.IdentifierKey
|
|
32
33
|
|
|
@@ -35,7 +36,7 @@ class Arguments:
|
|
|
35
36
|
@serial_class(
|
|
36
37
|
named_type_path="sdk.api.recipes.clear_recipe_outputs.Data",
|
|
37
38
|
)
|
|
38
|
-
@dataclasses.dataclass(kw_only=True)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
39
40
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
40
41
|
pass
|
|
41
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -28,7 +28,7 @@ ENDPOINT_PATH = "api/external/recipes/create_recipe"
|
|
|
28
28
|
@serial_class(
|
|
29
29
|
named_type_path="sdk.api.recipes.create_recipe.Arguments",
|
|
30
30
|
)
|
|
31
|
-
@dataclasses.dataclass(kw_only=True)
|
|
31
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
32
32
|
class Arguments:
|
|
33
33
|
material_family_id: base_t.ObjectId
|
|
34
34
|
workflow_id: base_t.ObjectId
|
|
@@ -44,7 +44,7 @@ class Arguments:
|
|
|
44
44
|
@serial_class(
|
|
45
45
|
named_type_path="sdk.api.recipes.create_recipe.Data",
|
|
46
46
|
)
|
|
47
|
-
@dataclasses.dataclass(kw_only=True)
|
|
47
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
48
48
|
class Data:
|
|
49
49
|
result_id: base_t.ObjectId
|
|
50
50
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -28,7 +28,7 @@ ENDPOINT_PATH = "api/external/recipes/external_create_recipes"
|
|
|
28
28
|
@serial_class(
|
|
29
29
|
named_type_path="sdk.api.recipes.create_recipes.CreateRecipeDefinition",
|
|
30
30
|
)
|
|
31
|
-
@dataclasses.dataclass(kw_only=True)
|
|
31
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
32
32
|
class CreateRecipeDefinition:
|
|
33
33
|
workflow_id: base_t.ObjectId
|
|
34
34
|
name: str | None = None
|
|
@@ -40,7 +40,7 @@ class CreateRecipeDefinition:
|
|
|
40
40
|
@serial_class(
|
|
41
41
|
named_type_path="sdk.api.recipes.create_recipes.Arguments",
|
|
42
42
|
)
|
|
43
|
-
@dataclasses.dataclass(kw_only=True)
|
|
43
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
44
44
|
class Arguments:
|
|
45
45
|
material_family_id: base_t.ObjectId
|
|
46
46
|
recipe_definitions: list[CreateRecipeDefinition]
|
|
@@ -51,7 +51,7 @@ class Arguments:
|
|
|
51
51
|
@serial_class(
|
|
52
52
|
named_type_path="sdk.api.recipes.create_recipes.CreateRecipeResult",
|
|
53
53
|
)
|
|
54
|
-
@dataclasses.dataclass(kw_only=True)
|
|
54
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
55
55
|
class CreateRecipeResult:
|
|
56
56
|
recipe_id: base_t.ObjectId
|
|
57
57
|
|
|
@@ -60,7 +60,7 @@ class CreateRecipeResult:
|
|
|
60
60
|
@serial_class(
|
|
61
61
|
named_type_path="sdk.api.recipes.create_recipes.Data",
|
|
62
62
|
)
|
|
63
|
-
@dataclasses.dataclass(kw_only=True)
|
|
63
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
64
64
|
class Data:
|
|
65
65
|
recipes: list[CreateRecipeResult]
|
|
66
66
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -9,6 +9,7 @@ from decimal import Decimal # noqa: F401
|
|
|
9
9
|
import dataclasses
|
|
10
10
|
from pkgs.serialization import serial_class
|
|
11
11
|
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
12
13
|
from ... import identifier_t
|
|
13
14
|
|
|
14
15
|
__all__: list[str] = [
|
|
@@ -26,7 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/disassociate_recipe_as_input"
|
|
|
26
27
|
@serial_class(
|
|
27
28
|
named_type_path="sdk.api.recipes.disassociate_recipe_as_input.Arguments",
|
|
28
29
|
)
|
|
29
|
-
@dataclasses.dataclass(kw_only=True)
|
|
30
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
30
31
|
class Arguments:
|
|
31
32
|
recipe_key: identifier_t.IdentifierKey
|
|
32
33
|
|
|
@@ -35,7 +36,7 @@ class Arguments:
|
|
|
35
36
|
@serial_class(
|
|
36
37
|
named_type_path="sdk.api.recipes.disassociate_recipe_as_input.Data",
|
|
37
38
|
)
|
|
38
|
-
@dataclasses.dataclass(kw_only=True)
|
|
39
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
39
40
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
40
41
|
pass
|
|
41
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -10,6 +10,7 @@ from enum import StrEnum
|
|
|
10
10
|
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
from pkgs.serialization import serial_union_annotation
|
|
13
|
+
from ... import base_t
|
|
13
14
|
from ... import identifier_t
|
|
14
15
|
from ... import inputs_t
|
|
15
16
|
from ... import recipe_inputs_t
|
|
@@ -69,7 +70,7 @@ class MixStepMatchStrategy(StrEnum):
|
|
|
69
70
|
@serial_class(
|
|
70
71
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditBase",
|
|
71
72
|
)
|
|
72
|
-
@dataclasses.dataclass(kw_only=True)
|
|
73
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
73
74
|
class RecipeInputEditBase:
|
|
74
75
|
type: RecipeInputEditType
|
|
75
76
|
|
|
@@ -79,7 +80,7 @@ class RecipeInputEditBase:
|
|
|
79
80
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditClearInputs",
|
|
80
81
|
parse_require={"type"},
|
|
81
82
|
)
|
|
82
|
-
@dataclasses.dataclass(kw_only=True)
|
|
83
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
83
84
|
class RecipeInputEditClearInputs(RecipeInputEditBase):
|
|
84
85
|
type: typing.Literal[RecipeInputEditType.CLEAR_INPUTS] = RecipeInputEditType.CLEAR_INPUTS
|
|
85
86
|
|
|
@@ -89,7 +90,7 @@ class RecipeInputEditClearInputs(RecipeInputEditBase):
|
|
|
89
90
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditInputBase",
|
|
90
91
|
to_string_values={"value_numeric"},
|
|
91
92
|
)
|
|
92
|
-
@dataclasses.dataclass(kw_only=True)
|
|
93
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
93
94
|
class RecipeInputEditInputBase(RecipeInputEditBase):
|
|
94
95
|
ingredient_key: identifier_t.IdentifierKey
|
|
95
96
|
quantity_basis: recipe_inputs_t.QuantityBasis = recipe_inputs_t.QuantityBasis.MASS
|
|
@@ -105,7 +106,7 @@ class RecipeInputEditInputBase(RecipeInputEditBase):
|
|
|
105
106
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditChangeBasisViewed",
|
|
106
107
|
parse_require={"type"},
|
|
107
108
|
)
|
|
108
|
-
@dataclasses.dataclass(kw_only=True)
|
|
109
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
109
110
|
class RecipeInputEditChangeBasisViewed(RecipeInputEditInputBase):
|
|
110
111
|
type: typing.Literal[RecipeInputEditType.CHANGE_BASIS] = RecipeInputEditType.CHANGE_BASIS
|
|
111
112
|
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
@@ -116,7 +117,7 @@ class RecipeInputEditChangeBasisViewed(RecipeInputEditInputBase):
|
|
|
116
117
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditUpsertInput",
|
|
117
118
|
parse_require={"type"},
|
|
118
119
|
)
|
|
119
|
-
@dataclasses.dataclass(kw_only=True)
|
|
120
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
120
121
|
class RecipeInputEditUpsertInput(RecipeInputEditInputBase):
|
|
121
122
|
type: typing.Literal[RecipeInputEditType.UPSERT_INPUT] = RecipeInputEditType.UPSERT_INPUT
|
|
122
123
|
clear_first: bool
|
|
@@ -128,7 +129,7 @@ class RecipeInputEditUpsertInput(RecipeInputEditInputBase):
|
|
|
128
129
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditAddInput",
|
|
129
130
|
parse_require={"type"},
|
|
130
131
|
)
|
|
131
|
-
@dataclasses.dataclass(kw_only=True)
|
|
132
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
132
133
|
class RecipeInputEditAddInput(RecipeInputEditInputBase):
|
|
133
134
|
type: typing.Literal[RecipeInputEditType.ADD_INPUT] = RecipeInputEditType.ADD_INPUT
|
|
134
135
|
|
|
@@ -138,11 +139,12 @@ class RecipeInputEditAddInput(RecipeInputEditInputBase):
|
|
|
138
139
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditSetLot",
|
|
139
140
|
parse_require={"type"},
|
|
140
141
|
)
|
|
141
|
-
@dataclasses.dataclass(kw_only=True)
|
|
142
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
142
143
|
class RecipeInputEditSetLot(RecipeInputEditBase):
|
|
143
144
|
type: typing.Literal[RecipeInputEditType.SET_LOT] = RecipeInputEditType.SET_LOT
|
|
144
145
|
ingredient_key: identifier_t.IdentifierKey
|
|
145
146
|
ingredient_lot_recipe_key: identifier_t.IdentifierKey
|
|
147
|
+
mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
|
|
146
148
|
|
|
147
149
|
|
|
148
150
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -150,7 +152,7 @@ class RecipeInputEditSetLot(RecipeInputEditBase):
|
|
|
150
152
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditAddInstructions",
|
|
151
153
|
parse_require={"type"},
|
|
152
154
|
)
|
|
153
|
-
@dataclasses.dataclass(kw_only=True)
|
|
155
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
154
156
|
class RecipeInputEditAddInstructions(RecipeInputEditBase):
|
|
155
157
|
type: typing.Literal[RecipeInputEditType.ADD_INSTRUCTIONS] = RecipeInputEditType.ADD_INSTRUCTIONS
|
|
156
158
|
instructions: str
|
|
@@ -161,7 +163,7 @@ class RecipeInputEditAddInstructions(RecipeInputEditBase):
|
|
|
161
163
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.AnnotationEdit",
|
|
162
164
|
to_string_values={"lower_value", "upper_value"},
|
|
163
165
|
)
|
|
164
|
-
@dataclasses.dataclass(kw_only=True)
|
|
166
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
165
167
|
class AnnotationEdit:
|
|
166
168
|
annotation_type_key: identifier_t.IdentifierKey
|
|
167
169
|
lower_value: Decimal | None = None
|
|
@@ -173,7 +175,7 @@ class AnnotationEdit:
|
|
|
173
175
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditUpdateAnnotations",
|
|
174
176
|
parse_require={"type"},
|
|
175
177
|
)
|
|
176
|
-
@dataclasses.dataclass(kw_only=True)
|
|
178
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
177
179
|
class RecipeInputEditUpdateAnnotations(RecipeInputEditInputBase):
|
|
178
180
|
type: typing.Literal[RecipeInputEditType.UPDATE_ANNOTATIONS] = RecipeInputEditType.UPDATE_ANNOTATIONS
|
|
179
181
|
clear_first: bool
|
|
@@ -186,7 +188,7 @@ class RecipeInputEditUpdateAnnotations(RecipeInputEditInputBase):
|
|
|
186
188
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditSetRole",
|
|
187
189
|
parse_require={"type"},
|
|
188
190
|
)
|
|
189
|
-
@dataclasses.dataclass(kw_only=True)
|
|
191
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
190
192
|
class RecipeInputEditSetRole(RecipeInputEditBase):
|
|
191
193
|
type: typing.Literal[RecipeInputEditType.SET_ROLE] = RecipeInputEditType.SET_ROLE
|
|
192
194
|
ingredient_key: identifier_t.IdentifierKey
|
|
@@ -207,7 +209,7 @@ class PlaceholderDisplayMode(StrEnum):
|
|
|
207
209
|
@serial_class(
|
|
208
210
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.PlaceholderBase",
|
|
209
211
|
)
|
|
210
|
-
@dataclasses.dataclass(kw_only=True)
|
|
212
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
211
213
|
class PlaceholderBase:
|
|
212
214
|
type: PlaceholderType
|
|
213
215
|
require_for_creation: bool = True
|
|
@@ -219,7 +221,7 @@ class PlaceholderBase:
|
|
|
219
221
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.SubcategoryPlaceholder",
|
|
220
222
|
parse_require={"type"},
|
|
221
223
|
)
|
|
222
|
-
@dataclasses.dataclass(kw_only=True)
|
|
224
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
223
225
|
class SubcategoryPlaceholder(PlaceholderBase):
|
|
224
226
|
type: typing.Literal[PlaceholderType.SUBCATEGORY] = PlaceholderType.SUBCATEGORY
|
|
225
227
|
subcategory_identifier: identifier_t.IdentifierKey
|
|
@@ -243,7 +245,7 @@ RecipeInputPlaceholder = typing.Annotated[
|
|
|
243
245
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditPlaceholder",
|
|
244
246
|
parse_require={"type"},
|
|
245
247
|
)
|
|
246
|
-
@dataclasses.dataclass(kw_only=True)
|
|
248
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
247
249
|
class RecipeInputEditPlaceholder(RecipeInputEditBase):
|
|
248
250
|
type: typing.Literal[RecipeInputEditType.SET_PLACEHOLDER] = RecipeInputEditType.SET_PLACEHOLDER
|
|
249
251
|
ingredient_key: identifier_t.IdentifierKey
|
|
@@ -276,7 +278,7 @@ RecipeInputEdit = typing.Annotated[
|
|
|
276
278
|
@serial_class(
|
|
277
279
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.Arguments",
|
|
278
280
|
)
|
|
279
|
-
@dataclasses.dataclass(kw_only=True)
|
|
281
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
280
282
|
class Arguments:
|
|
281
283
|
recipe_key: identifier_t.IdentifierKey
|
|
282
284
|
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier
|
|
@@ -287,7 +289,7 @@ class Arguments:
|
|
|
287
289
|
@serial_class(
|
|
288
290
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.Data",
|
|
289
291
|
)
|
|
290
|
-
@dataclasses.dataclass(kw_only=True)
|
|
292
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
291
293
|
class Data:
|
|
292
294
|
pass
|
|
293
295
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/get_column_calculation_values"
|
|
|
27
27
|
@serial_class(
|
|
28
28
|
named_type_path="sdk.api.recipes.get_column_calculation_values.Arguments",
|
|
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 Arguments:
|
|
32
32
|
recipe_keys: list[identifier_t.IdentifierKey]
|
|
33
33
|
calculation_key: identifier_t.IdentifierKey
|
|
@@ -38,7 +38,7 @@ class Arguments:
|
|
|
38
38
|
named_type_path="sdk.api.recipes.get_column_calculation_values.RecipeColumnCalculationValue",
|
|
39
39
|
to_string_values={"calculation_quantity"},
|
|
40
40
|
)
|
|
41
|
-
@dataclasses.dataclass(kw_only=True)
|
|
41
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
42
42
|
class RecipeColumnCalculationValue:
|
|
43
43
|
recipe_id: base_t.ObjectId
|
|
44
44
|
ingredient_id: base_t.ObjectId
|
|
@@ -51,7 +51,7 @@ class RecipeColumnCalculationValue:
|
|
|
51
51
|
@serial_class(
|
|
52
52
|
named_type_path="sdk.api.recipes.get_column_calculation_values.Data",
|
|
53
53
|
)
|
|
54
|
-
@dataclasses.dataclass(kw_only=True)
|
|
54
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
55
55
|
class Data:
|
|
56
56
|
values: list[RecipeColumnCalculationValue]
|
|
57
57
|
# DO NOT MODIFY -- This file is generated by type_spec
|