UncountablePythonSDK 0.0.41__py3-none-any.whl → 0.0.42__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.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/METADATA +5 -1
- {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/RECORD +122 -104
- docs/requirements.txt +3 -3
- examples/invoke_uploader.py +23 -0
- pkgs/argument_parser/argument_parser.py +1 -1
- pkgs/filesystem_utils/__init__.py +17 -0
- pkgs/filesystem_utils/_gdrive_session.py +306 -0
- pkgs/filesystem_utils/_local_session.py +69 -0
- pkgs/filesystem_utils/_sftp_session.py +147 -0
- pkgs/filesystem_utils/file_type_utils.py +61 -0
- pkgs/filesystem_utils/filesystem_session.py +39 -0
- pkgs/type_spec/emit_open_api.py +4 -2
- pkgs/type_spec/emit_open_api_util.py +4 -2
- pkgs/type_spec/emit_python.py +13 -14
- uncountable/core/file_upload.py +13 -3
- uncountable/integration/construct_client.py +1 -1
- uncountable/integration/cron.py +9 -6
- uncountable/integration/entrypoint.py +1 -1
- uncountable/integration/executors/executors.py +24 -0
- uncountable/integration/executors/generic_upload_executor.py +245 -0
- uncountable/integration/executors/script_executor.py +1 -1
- uncountable/integration/job.py +18 -1
- uncountable/integration/secret_retrieval/__init__.py +3 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +40 -0
- uncountable/integration/server.py +1 -1
- uncountable/types/__init__.py +8 -0
- uncountable/types/api/batch/execute_batch.py +5 -5
- uncountable/types/api/batch/execute_batch_load_async.py +3 -3
- uncountable/types/api/chemical/convert_chemical_formats.py +4 -4
- uncountable/types/api/entity/create_entities.py +4 -4
- uncountable/types/api/entity/create_entity.py +4 -4
- uncountable/types/api/entity/get_entities_data.py +4 -4
- uncountable/types/api/entity/list_entities.py +5 -5
- uncountable/types/api/entity/lock_entity.py +3 -3
- uncountable/types/api/entity/resolve_entity_ids.py +4 -4
- uncountable/types/api/entity/set_values.py +3 -3
- uncountable/types/api/entity/transition_entity_phase.py +5 -5
- uncountable/types/api/entity/unlock_entity.py +3 -3
- uncountable/types/api/equipment/associate_equipment_input.py +3 -3
- uncountable/types/api/field_options/upsert_field_options.py +4 -4
- uncountable/types/api/id_source/list_id_source.py +4 -4
- uncountable/types/api/id_source/match_id_source.py +4 -4
- uncountable/types/api/input_groups/get_input_group_names.py +4 -4
- uncountable/types/api/inputs/create_inputs.py +5 -5
- uncountable/types/api/inputs/get_input_data.py +7 -7
- uncountable/types/api/inputs/get_input_names.py +4 -4
- uncountable/types/api/inputs/get_inputs_data.py +7 -7
- uncountable/types/api/inputs/set_input_attribute_values.py +4 -4
- uncountable/types/api/inputs/set_input_category.py +3 -3
- uncountable/types/api/inputs/set_input_subcategories.py +3 -3
- uncountable/types/api/inputs/set_intermediate_type.py +3 -3
- uncountable/types/api/material_families/update_entity_material_families.py +3 -3
- uncountable/types/api/outputs/get_output_data.py +7 -7
- uncountable/types/api/outputs/get_output_names.py +4 -4
- uncountable/types/api/outputs/resolve_output_conditions.py +6 -6
- uncountable/types/api/permissions/set_core_permissions.py +7 -7
- uncountable/types/api/project/get_projects.py +4 -4
- uncountable/types/api/project/get_projects_data.py +4 -4
- uncountable/types/api/recipe_links/create_recipe_link.py +3 -3
- uncountable/types/api/recipe_links/remove_recipe_link.py +3 -3
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +4 -4
- uncountable/types/api/recipes/add_recipe_to_project.py +3 -3
- uncountable/types/api/recipes/archive_recipes.py +3 -3
- uncountable/types/api/recipes/associate_recipe_as_input.py +3 -3
- uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -3
- uncountable/types/api/recipes/create_recipe.py +3 -3
- uncountable/types/api/recipes/create_recipes.py +5 -5
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -3
- uncountable/types/api/recipes/edit_recipe_inputs.py +12 -12
- uncountable/types/api/recipes/get_curve.py +3 -3
- uncountable/types/api/recipes/get_recipe_calculations.py +4 -4
- uncountable/types/api/recipes/get_recipe_links.py +3 -3
- uncountable/types/api/recipes/get_recipe_names.py +4 -4
- uncountable/types/api/recipes/get_recipe_output_metadata.py +4 -4
- uncountable/types/api/recipes/get_recipes_data.py +12 -12
- uncountable/types/api/recipes/lock_recipes.py +4 -4
- uncountable/types/api/recipes/remove_recipe_from_project.py +3 -3
- uncountable/types/api/recipes/set_recipe_inputs.py +4 -4
- uncountable/types/api/recipes/set_recipe_metadata.py +3 -3
- uncountable/types/api/recipes/set_recipe_output_annotations.py +7 -7
- uncountable/types/api/recipes/set_recipe_outputs.py +5 -5
- uncountable/types/api/recipes/set_recipe_tags.py +7 -7
- uncountable/types/api/recipes/unarchive_recipes.py +3 -3
- uncountable/types/api/recipes/unlock_recipes.py +3 -3
- uncountable/types/api/triggers/run_trigger.py +3 -3
- uncountable/types/api/uploader/__init__.py +1 -0
- uncountable/types/api/uploader/invoke_uploader.py +38 -0
- uncountable/types/async_batch_processor.py +36 -0
- uncountable/types/async_batch_t.py +6 -4
- uncountable/types/calculations_t.py +2 -2
- uncountable/types/chemical_structure_t.py +2 -2
- uncountable/types/client_base.py +25 -2
- uncountable/types/curves_t.py +3 -3
- uncountable/types/entity_t.py +2 -2
- uncountable/types/experiment_groups_t.py +2 -2
- uncountable/types/field_values_t.py +5 -5
- uncountable/types/fields_t.py +2 -2
- uncountable/types/generic_upload.py +9 -0
- uncountable/types/generic_upload_t.py +41 -0
- uncountable/types/id_source_t.py +5 -5
- uncountable/types/identifier_t.py +4 -4
- uncountable/types/input_attributes_t.py +2 -2
- uncountable/types/inputs_t.py +2 -2
- uncountable/types/job_definition.py +26 -0
- uncountable/types/job_definition_t.py +203 -0
- uncountable/types/outputs_t.py +2 -2
- uncountable/types/phases_t.py +2 -2
- uncountable/types/recipe_identifiers_t.py +4 -4
- uncountable/types/recipe_links_t.py +2 -2
- uncountable/types/recipe_metadata_t.py +4 -4
- uncountable/types/recipe_output_metadata_t.py +2 -2
- uncountable/types/recipe_tags_t.py +2 -2
- uncountable/types/recipe_workflow_steps_t.py +5 -5
- uncountable/types/recipes_t.py +2 -2
- uncountable/types/response_t.py +2 -2
- uncountable/types/secret_retrieval.py +12 -0
- uncountable/types/secret_retrieval_t.py +69 -0
- uncountable/types/units_t.py +2 -2
- uncountable/types/users_t.py +2 -2
- uncountable/types/workflows_t.py +3 -3
- uncountable/integration/types.py +0 -89
- {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/WHEEL +0 -0
- {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/top_level.txt +0 -0
|
@@ -7,7 +7,7 @@ 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 ... import base_t
|
|
12
12
|
from ... import identifier_t
|
|
13
13
|
from ... import recipe_identifiers_t
|
|
@@ -25,7 +25,7 @@ ENDPOINT_PATH = "api/external/recipes/create_recipe"
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
-
@dataclass(kw_only=True)
|
|
28
|
+
@dataclasses.dataclass(kw_only=True)
|
|
29
29
|
class Arguments:
|
|
30
30
|
material_family_id: base_t.ObjectId
|
|
31
31
|
workflow_id: base_t.ObjectId
|
|
@@ -38,7 +38,7 @@ class Arguments:
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
41
|
-
@dataclass(kw_only=True)
|
|
41
|
+
@dataclasses.dataclass(kw_only=True)
|
|
42
42
|
class Data:
|
|
43
43
|
result_id: base_t.ObjectId
|
|
44
44
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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 ... import base_t
|
|
12
12
|
from ... import recipe_metadata_t
|
|
13
13
|
|
|
@@ -25,7 +25,7 @@ ENDPOINT_PATH = "api/external/recipes/external_create_recipes"
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
-
@dataclass(kw_only=True)
|
|
28
|
+
@dataclasses.dataclass(kw_only=True)
|
|
29
29
|
class CreateRecipeDefinition:
|
|
30
30
|
workflow_id: base_t.ObjectId
|
|
31
31
|
name: typing.Optional[str] = None
|
|
@@ -34,7 +34,7 @@ class CreateRecipeDefinition:
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
37
|
-
@dataclass(kw_only=True)
|
|
37
|
+
@dataclasses.dataclass(kw_only=True)
|
|
38
38
|
class Arguments:
|
|
39
39
|
material_family_id: base_t.ObjectId
|
|
40
40
|
recipe_definitions: list[CreateRecipeDefinition]
|
|
@@ -42,13 +42,13 @@ class Arguments:
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
45
|
-
@dataclass(kw_only=True)
|
|
45
|
+
@dataclasses.dataclass(kw_only=True)
|
|
46
46
|
class CreateRecipeResult:
|
|
47
47
|
recipe_id: base_t.ObjectId
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
51
|
-
@dataclass(kw_only=True)
|
|
51
|
+
@dataclasses.dataclass(kw_only=True)
|
|
52
52
|
class Data:
|
|
53
53
|
recipes: list[CreateRecipeResult]
|
|
54
54
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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 ... import async_batch_t
|
|
12
12
|
from ... import identifier_t
|
|
13
13
|
|
|
@@ -23,13 +23,13 @@ ENDPOINT_PATH = "api/external/recipes/disassociate_recipe_as_input"
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
-
@dataclass(kw_only=True)
|
|
26
|
+
@dataclasses.dataclass(kw_only=True)
|
|
27
27
|
class Arguments:
|
|
28
28
|
recipe_key: identifier_t.IdentifierKey
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
-
@dataclass(kw_only=True)
|
|
32
|
+
@dataclasses.dataclass(kw_only=True)
|
|
33
33
|
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
34
34
|
pass
|
|
35
35
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -8,7 +8,7 @@ import typing # noqa: F401
|
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from pkgs.strenum_compat import StrEnum
|
|
11
|
-
|
|
11
|
+
import dataclasses
|
|
12
12
|
from pkgs.serialization import serial_class
|
|
13
13
|
from pkgs.serialization import serial_union_annotation
|
|
14
14
|
from ... import identifier_t
|
|
@@ -48,7 +48,7 @@ class RecipeInputEditType(StrEnum):
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
51
|
-
@dataclass(kw_only=True)
|
|
51
|
+
@dataclasses.dataclass(kw_only=True)
|
|
52
52
|
class RecipeInputEditBase:
|
|
53
53
|
type: RecipeInputEditType
|
|
54
54
|
|
|
@@ -57,7 +57,7 @@ class RecipeInputEditBase:
|
|
|
57
57
|
@serial_class(
|
|
58
58
|
parse_require={"type"},
|
|
59
59
|
)
|
|
60
|
-
@dataclass(kw_only=True)
|
|
60
|
+
@dataclasses.dataclass(kw_only=True)
|
|
61
61
|
class RecipeInputEditClearInputs(RecipeInputEditBase):
|
|
62
62
|
type: typing.Literal[RecipeInputEditType.CLEAR_INPUTS] = RecipeInputEditType.CLEAR_INPUTS
|
|
63
63
|
|
|
@@ -66,7 +66,7 @@ class RecipeInputEditClearInputs(RecipeInputEditBase):
|
|
|
66
66
|
@serial_class(
|
|
67
67
|
to_string_values={"value_numeric"},
|
|
68
68
|
)
|
|
69
|
-
@dataclass(kw_only=True)
|
|
69
|
+
@dataclasses.dataclass(kw_only=True)
|
|
70
70
|
class RecipeInputEditInputBase(RecipeInputEditBase):
|
|
71
71
|
ingredient_key: identifier_t.IdentifierKey
|
|
72
72
|
quantity_basis: recipe_inputs_t.QuantityBasis = recipe_inputs_t.QuantityBasis.MASS
|
|
@@ -80,7 +80,7 @@ class RecipeInputEditInputBase(RecipeInputEditBase):
|
|
|
80
80
|
@serial_class(
|
|
81
81
|
parse_require={"type"},
|
|
82
82
|
)
|
|
83
|
-
@dataclass(kw_only=True)
|
|
83
|
+
@dataclasses.dataclass(kw_only=True)
|
|
84
84
|
class RecipeInputEditChangeBasisViewed(RecipeInputEditInputBase):
|
|
85
85
|
type: typing.Literal[RecipeInputEditType.CHANGE_BASIS] = RecipeInputEditType.CHANGE_BASIS
|
|
86
86
|
|
|
@@ -89,7 +89,7 @@ class RecipeInputEditChangeBasisViewed(RecipeInputEditInputBase):
|
|
|
89
89
|
@serial_class(
|
|
90
90
|
parse_require={"type"},
|
|
91
91
|
)
|
|
92
|
-
@dataclass(kw_only=True)
|
|
92
|
+
@dataclasses.dataclass(kw_only=True)
|
|
93
93
|
class RecipeInputEditUpsertInput(RecipeInputEditInputBase):
|
|
94
94
|
type: typing.Literal[RecipeInputEditType.UPSERT_INPUT] = RecipeInputEditType.UPSERT_INPUT
|
|
95
95
|
clear_first: bool
|
|
@@ -99,7 +99,7 @@ class RecipeInputEditUpsertInput(RecipeInputEditInputBase):
|
|
|
99
99
|
@serial_class(
|
|
100
100
|
parse_require={"type"},
|
|
101
101
|
)
|
|
102
|
-
@dataclass(kw_only=True)
|
|
102
|
+
@dataclasses.dataclass(kw_only=True)
|
|
103
103
|
class RecipeInputEditAddInput(RecipeInputEditInputBase):
|
|
104
104
|
type: typing.Literal[RecipeInputEditType.ADD_INPUT] = RecipeInputEditType.ADD_INPUT
|
|
105
105
|
|
|
@@ -108,7 +108,7 @@ class RecipeInputEditAddInput(RecipeInputEditInputBase):
|
|
|
108
108
|
@serial_class(
|
|
109
109
|
parse_require={"type"},
|
|
110
110
|
)
|
|
111
|
-
@dataclass(kw_only=True)
|
|
111
|
+
@dataclasses.dataclass(kw_only=True)
|
|
112
112
|
class RecipeInputEditSetLot(RecipeInputEditBase):
|
|
113
113
|
type: typing.Literal[RecipeInputEditType.SET_LOT] = RecipeInputEditType.SET_LOT
|
|
114
114
|
ingredient_key: identifier_t.IdentifierKey
|
|
@@ -119,7 +119,7 @@ class RecipeInputEditSetLot(RecipeInputEditBase):
|
|
|
119
119
|
@serial_class(
|
|
120
120
|
to_string_values={"lower_value", "upper_value"},
|
|
121
121
|
)
|
|
122
|
-
@dataclass(kw_only=True)
|
|
122
|
+
@dataclasses.dataclass(kw_only=True)
|
|
123
123
|
class AnnotationEdit:
|
|
124
124
|
annotation_type_key: identifier_t.IdentifierKey
|
|
125
125
|
lower_value: typing.Optional[Decimal] = None
|
|
@@ -130,7 +130,7 @@ class AnnotationEdit:
|
|
|
130
130
|
@serial_class(
|
|
131
131
|
parse_require={"type"},
|
|
132
132
|
)
|
|
133
|
-
@dataclass(kw_only=True)
|
|
133
|
+
@dataclasses.dataclass(kw_only=True)
|
|
134
134
|
class RecipeInputEditUpdateAnnotations(RecipeInputEditInputBase):
|
|
135
135
|
type: typing.Literal[RecipeInputEditType.UPDATE_ANNOTATIONS] = RecipeInputEditType.UPDATE_ANNOTATIONS
|
|
136
136
|
ingredient_key: identifier_t.IdentifierKey
|
|
@@ -156,7 +156,7 @@ RecipeInputEdit = typing.Annotated[
|
|
|
156
156
|
|
|
157
157
|
|
|
158
158
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
159
|
-
@dataclass(kw_only=True)
|
|
159
|
+
@dataclasses.dataclass(kw_only=True)
|
|
160
160
|
class Arguments:
|
|
161
161
|
recipe_key: identifier_t.IdentifierKey
|
|
162
162
|
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier
|
|
@@ -164,7 +164,7 @@ class Arguments:
|
|
|
164
164
|
|
|
165
165
|
|
|
166
166
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
167
|
-
@dataclass(kw_only=True)
|
|
167
|
+
@dataclasses.dataclass(kw_only=True)
|
|
168
168
|
class Data:
|
|
169
169
|
pass
|
|
170
170
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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 ... import base_t
|
|
12
12
|
from ... import curves_t
|
|
13
13
|
|
|
@@ -23,14 +23,14 @@ 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
|
-
@dataclass(kw_only=True)
|
|
26
|
+
@dataclasses.dataclass(kw_only=True)
|
|
27
27
|
class Arguments:
|
|
28
28
|
recipe_output_id: typing.Optional[base_t.ObjectId] = None
|
|
29
29
|
recipe_input_id: typing.Optional[base_t.ObjectId] = None
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
33
|
-
@dataclass(kw_only=True)
|
|
33
|
+
@dataclasses.dataclass(kw_only=True)
|
|
34
34
|
class Data:
|
|
35
35
|
curve: curves_t.Curve
|
|
36
36
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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
12
|
from ... import base_t
|
|
13
13
|
from ... import calculations_t
|
|
@@ -25,7 +25,7 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_calculations"
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
-
@dataclass(kw_only=True)
|
|
28
|
+
@dataclasses.dataclass(kw_only=True)
|
|
29
29
|
class Arguments:
|
|
30
30
|
recipe_ids: list[base_t.ObjectId]
|
|
31
31
|
calculation_ids: typing.Optional[list[base_t.ObjectId]] = None
|
|
@@ -36,7 +36,7 @@ class Arguments:
|
|
|
36
36
|
unconverted_values={"quantity_json"},
|
|
37
37
|
to_string_values={"quantity_dec"},
|
|
38
38
|
)
|
|
39
|
-
@dataclass(kw_only=True)
|
|
39
|
+
@dataclasses.dataclass(kw_only=True)
|
|
40
40
|
class RecipeCalculation:
|
|
41
41
|
recipe_id: base_t.ObjectId
|
|
42
42
|
calculation_id: base_t.ObjectId
|
|
@@ -45,7 +45,7 @@ class RecipeCalculation:
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
48
|
-
@dataclass(kw_only=True)
|
|
48
|
+
@dataclasses.dataclass(kw_only=True)
|
|
49
49
|
class Data:
|
|
50
50
|
recipe_calculations: list[RecipeCalculation]
|
|
51
51
|
calculations: list[calculations_t.Calculation]
|
|
@@ -7,7 +7,7 @@ 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 ... import base_t
|
|
12
12
|
from ... import recipe_links_t
|
|
13
13
|
|
|
@@ -23,7 +23,7 @@ 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
|
-
@dataclass(kw_only=True)
|
|
26
|
+
@dataclasses.dataclass(kw_only=True)
|
|
27
27
|
class Arguments:
|
|
28
28
|
recipe_ids: list[base_t.ObjectId]
|
|
29
29
|
depth: int = 1
|
|
@@ -31,7 +31,7 @@ class Arguments:
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
34
|
-
@dataclass(kw_only=True)
|
|
34
|
+
@dataclasses.dataclass(kw_only=True)
|
|
35
35
|
class Data:
|
|
36
36
|
recipe_links: list[recipe_links_t.RecipeLink]
|
|
37
37
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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 ... import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -23,20 +23,20 @@ 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
|
-
@dataclass(kw_only=True)
|
|
26
|
+
@dataclasses.dataclass(kw_only=True)
|
|
27
27
|
class Arguments:
|
|
28
28
|
project_id: base_t.ObjectId
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
-
@dataclass(kw_only=True)
|
|
32
|
+
@dataclasses.dataclass(kw_only=True)
|
|
33
33
|
class SimpleRecipe:
|
|
34
34
|
id: base_t.ObjectId
|
|
35
35
|
name: str
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
39
|
-
@dataclass(kw_only=True)
|
|
39
|
+
@dataclasses.dataclass(kw_only=True)
|
|
40
40
|
class Data:
|
|
41
41
|
recipes: list[SimpleRecipe]
|
|
42
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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
12
|
from ... import base_t
|
|
13
13
|
from ... import recipe_output_metadata_t
|
|
@@ -25,7 +25,7 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_output_metadata"
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
-
@dataclass(kw_only=True)
|
|
28
|
+
@dataclasses.dataclass(kw_only=True)
|
|
29
29
|
class Arguments:
|
|
30
30
|
recipe_output_ids: list[base_t.ObjectId]
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@ class Arguments:
|
|
|
35
35
|
unconverted_values={"quantity_json"},
|
|
36
36
|
to_string_values={"quantity_dec"},
|
|
37
37
|
)
|
|
38
|
-
@dataclass(kw_only=True)
|
|
38
|
+
@dataclasses.dataclass(kw_only=True)
|
|
39
39
|
class RecipeOutputMetadata:
|
|
40
40
|
recipe_output_id: base_t.ObjectId
|
|
41
41
|
recipe_output_metadata_field_id: base_t.ObjectId
|
|
@@ -44,7 +44,7 @@ class RecipeOutputMetadata:
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
47
|
-
@dataclass(kw_only=True)
|
|
47
|
+
@dataclasses.dataclass(kw_only=True)
|
|
48
48
|
class Data:
|
|
49
49
|
recipe_output_metadata: list[RecipeOutputMetadata]
|
|
50
50
|
recipe_output_metadata_fields: list[recipe_output_metadata_t.RecipeOutputMetadataField]
|
|
@@ -7,7 +7,7 @@ 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
12
|
from ... import base_t
|
|
13
13
|
from ... import experiment_groups_t
|
|
@@ -38,7 +38,7 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipes_data"
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
41
|
-
@dataclass(kw_only=True)
|
|
41
|
+
@dataclasses.dataclass(kw_only=True)
|
|
42
42
|
class Arguments:
|
|
43
43
|
recipe_ids: typing.Optional[typing.Optional[list[base_t.ObjectId]]] = None
|
|
44
44
|
project_id: typing.Optional[typing.Optional[base_t.ObjectId]] = None
|
|
@@ -51,7 +51,7 @@ class Arguments:
|
|
|
51
51
|
unconverted_values={"quantity_json"},
|
|
52
52
|
to_string_values={"quantity_dec"},
|
|
53
53
|
)
|
|
54
|
-
@dataclass(kw_only=True)
|
|
54
|
+
@dataclasses.dataclass(kw_only=True)
|
|
55
55
|
class RecipeOutput:
|
|
56
56
|
id: base_t.ObjectId
|
|
57
57
|
output_id: base_t.ObjectId
|
|
@@ -67,7 +67,7 @@ class RecipeOutput:
|
|
|
67
67
|
unconverted_values={"quantity_json"},
|
|
68
68
|
to_string_values={"quantity_dec"},
|
|
69
69
|
)
|
|
70
|
-
@dataclass(kw_only=True)
|
|
70
|
+
@dataclasses.dataclass(kw_only=True)
|
|
71
71
|
class ConditionParameterValue:
|
|
72
72
|
condition_parameter_id: base_t.ObjectId
|
|
73
73
|
condition_parameter_name: str
|
|
@@ -76,7 +76,7 @@ class ConditionParameterValue:
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
79
|
-
@dataclass(kw_only=True)
|
|
79
|
+
@dataclasses.dataclass(kw_only=True)
|
|
80
80
|
class SimpleOutputCondition:
|
|
81
81
|
output_condition_id: base_t.ObjectId
|
|
82
82
|
condition_parameter_values: list[ConditionParameterValue]
|
|
@@ -87,7 +87,7 @@ class SimpleOutputCondition:
|
|
|
87
87
|
unconverted_values={"actual_quantity_json", "quantity_json"},
|
|
88
88
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
89
89
|
)
|
|
90
|
-
@dataclass(kw_only=True)
|
|
90
|
+
@dataclasses.dataclass(kw_only=True)
|
|
91
91
|
class RecipeInput:
|
|
92
92
|
id: base_t.ObjectId
|
|
93
93
|
input_id: base_t.ObjectId
|
|
@@ -102,7 +102,7 @@ class RecipeInput:
|
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
105
|
-
@dataclass(kw_only=True)
|
|
105
|
+
@dataclasses.dataclass(kw_only=True)
|
|
106
106
|
class RecipeStep:
|
|
107
107
|
name: typing.Optional[str]
|
|
108
108
|
recipe_step_id: base_t.ObjectId
|
|
@@ -111,14 +111,14 @@ class RecipeStep:
|
|
|
111
111
|
|
|
112
112
|
|
|
113
113
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
114
|
-
@dataclass(kw_only=True)
|
|
114
|
+
@dataclasses.dataclass(kw_only=True)
|
|
115
115
|
class RecipeStepGroup:
|
|
116
116
|
name: typing.Optional[str]
|
|
117
117
|
recipe_steps: list[RecipeStep]
|
|
118
118
|
|
|
119
119
|
|
|
120
120
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
121
|
-
@dataclass(kw_only=True)
|
|
121
|
+
@dataclasses.dataclass(kw_only=True)
|
|
122
122
|
class RecipeWorkflowStep:
|
|
123
123
|
recipe_workflow_step_id: base_t.ObjectId
|
|
124
124
|
workflow_step_id: base_t.ObjectId
|
|
@@ -129,7 +129,7 @@ class RecipeWorkflowStep:
|
|
|
129
129
|
@serial_class(
|
|
130
130
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
131
131
|
)
|
|
132
|
-
@dataclass(kw_only=True)
|
|
132
|
+
@dataclasses.dataclass(kw_only=True)
|
|
133
133
|
class RecipeStepRelationship:
|
|
134
134
|
step_relationship_id: base_t.ObjectId
|
|
135
135
|
name: typing.Optional[str]
|
|
@@ -140,7 +140,7 @@ class RecipeStepRelationship:
|
|
|
140
140
|
|
|
141
141
|
|
|
142
142
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
143
|
-
@dataclass(kw_only=True)
|
|
143
|
+
@dataclasses.dataclass(kw_only=True)
|
|
144
144
|
class Recipe:
|
|
145
145
|
recipe_id: base_t.ObjectId
|
|
146
146
|
create_datetime: str
|
|
@@ -160,7 +160,7 @@ class Recipe:
|
|
|
160
160
|
|
|
161
161
|
|
|
162
162
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
163
|
-
@dataclass(kw_only=True)
|
|
163
|
+
@dataclasses.dataclass(kw_only=True)
|
|
164
164
|
class Data:
|
|
165
165
|
recipes: list[Recipe]
|
|
166
166
|
workflows: list[workflows_t.SimpleWorkflow]
|
|
@@ -8,7 +8,7 @@ import typing # noqa: F401
|
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from pkgs.strenum_compat import StrEnum
|
|
11
|
-
|
|
11
|
+
import dataclasses
|
|
12
12
|
from ... import identifier_t
|
|
13
13
|
|
|
14
14
|
__all__: list[str] = [
|
|
@@ -31,13 +31,13 @@ class RecipeLockType(StrEnum):
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
34
|
-
@dataclass(kw_only=True)
|
|
34
|
+
@dataclasses.dataclass(kw_only=True)
|
|
35
35
|
class RecipeLockBase:
|
|
36
36
|
recipe: identifier_t.IdentifierKey
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
|
-
@dataclass(kw_only=True)
|
|
40
|
+
@dataclasses.dataclass(kw_only=True)
|
|
41
41
|
class Arguments:
|
|
42
42
|
type: RecipeLockType = RecipeLockType.ALL
|
|
43
43
|
recipes: list[identifier_t.IdentifierKey]
|
|
@@ -47,7 +47,7 @@ class Arguments:
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
50
|
-
@dataclass(kw_only=True)
|
|
50
|
+
@dataclasses.dataclass(kw_only=True)
|
|
51
51
|
class Data:
|
|
52
52
|
pass
|
|
53
53
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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 ... import identifier_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -22,14 +22,14 @@ ENDPOINT_PATH = "api/external/recipes/remove_recipe_from_project"
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
25
|
-
@dataclass(kw_only=True)
|
|
25
|
+
@dataclasses.dataclass(kw_only=True)
|
|
26
26
|
class Arguments:
|
|
27
27
|
recipe_key: identifier_t.IdentifierKey
|
|
28
28
|
project_key: identifier_t.IdentifierKey
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
-
@dataclass(kw_only=True)
|
|
32
|
+
@dataclasses.dataclass(kw_only=True)
|
|
33
33
|
class Data:
|
|
34
34
|
pass
|
|
35
35
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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
12
|
from ... import base_t
|
|
13
13
|
|
|
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_inputs"
|
|
|
27
27
|
@serial_class(
|
|
28
28
|
to_string_values={"value_numeric"},
|
|
29
29
|
)
|
|
30
|
-
@dataclass(kw_only=True)
|
|
30
|
+
@dataclasses.dataclass(kw_only=True)
|
|
31
31
|
class RecipeInputValue:
|
|
32
32
|
recipe_id: base_t.ObjectId
|
|
33
33
|
input_id: base_t.ObjectId
|
|
@@ -40,13 +40,13 @@ class RecipeInputValue:
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
43
|
-
@dataclass(kw_only=True)
|
|
43
|
+
@dataclasses.dataclass(kw_only=True)
|
|
44
44
|
class Arguments:
|
|
45
45
|
input_data: list[RecipeInputValue]
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
49
|
-
@dataclass(kw_only=True)
|
|
49
|
+
@dataclasses.dataclass(kw_only=True)
|
|
50
50
|
class Data:
|
|
51
51
|
pass
|
|
52
52
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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 ... import identifier_t
|
|
12
12
|
from ... import recipe_metadata_t
|
|
13
13
|
|
|
@@ -23,14 +23,14 @@ ENDPOINT_PATH = "api/external/recipes/set_recipe_metadata"
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
-
@dataclass(kw_only=True)
|
|
26
|
+
@dataclasses.dataclass(kw_only=True)
|
|
27
27
|
class Arguments:
|
|
28
28
|
recipe_key: identifier_t.IdentifierKey
|
|
29
29
|
recipe_metadata: list[recipe_metadata_t.MetadataValue]
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
33
|
-
@dataclass(kw_only=True)
|
|
33
|
+
@dataclasses.dataclass(kw_only=True)
|
|
34
34
|
class Data:
|
|
35
35
|
pass
|
|
36
36
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -8,7 +8,7 @@ import typing # noqa: F401
|
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from pkgs.strenum_compat import StrEnum
|
|
11
|
-
|
|
11
|
+
import dataclasses
|
|
12
12
|
from pkgs.serialization import serial_class
|
|
13
13
|
from pkgs.serialization import serial_union_annotation
|
|
14
14
|
from ... import base_t
|
|
@@ -35,7 +35,7 @@ ENDPOINT_PATH = "api/external/recipes/set_recipe_output_annotations"
|
|
|
35
35
|
@serial_class(
|
|
36
36
|
to_string_values={"lower_value", "upper_value"},
|
|
37
37
|
)
|
|
38
|
-
@dataclass(kw_only=True)
|
|
38
|
+
@dataclasses.dataclass(kw_only=True)
|
|
39
39
|
class AnnotationEdit:
|
|
40
40
|
annotation_type_key: identifier_t.IdentifierKey
|
|
41
41
|
lower_value: typing.Optional[Decimal] = None
|
|
@@ -49,7 +49,7 @@ class AnnotationUpdateType(StrEnum):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
52
|
-
@dataclass(kw_only=True)
|
|
52
|
+
@dataclasses.dataclass(kw_only=True)
|
|
53
53
|
class RecipeOutputEditBase:
|
|
54
54
|
recipe_id: base_t.ObjectId
|
|
55
55
|
output_id: base_t.ObjectId
|
|
@@ -62,7 +62,7 @@ class RecipeOutputEditBase:
|
|
|
62
62
|
@serial_class(
|
|
63
63
|
parse_require={"type"},
|
|
64
64
|
)
|
|
65
|
-
@dataclass(kw_only=True)
|
|
65
|
+
@dataclasses.dataclass(kw_only=True)
|
|
66
66
|
class RecipeOutputMergeAnnotations(RecipeOutputEditBase):
|
|
67
67
|
type: typing.Literal[AnnotationUpdateType.MERGE] = AnnotationUpdateType.MERGE
|
|
68
68
|
|
|
@@ -71,7 +71,7 @@ class RecipeOutputMergeAnnotations(RecipeOutputEditBase):
|
|
|
71
71
|
@serial_class(
|
|
72
72
|
parse_require={"type"},
|
|
73
73
|
)
|
|
74
|
-
@dataclass(kw_only=True)
|
|
74
|
+
@dataclasses.dataclass(kw_only=True)
|
|
75
75
|
class RecipeOutputReplaceAnnotations(RecipeOutputEditBase):
|
|
76
76
|
type: typing.Literal[AnnotationUpdateType.REPLACE] = AnnotationUpdateType.REPLACE
|
|
77
77
|
|
|
@@ -90,13 +90,13 @@ RecipeOutputUpdateAnnotations = typing.Annotated[
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
93
|
-
@dataclass(kw_only=True)
|
|
93
|
+
@dataclasses.dataclass(kw_only=True)
|
|
94
94
|
class Arguments:
|
|
95
95
|
updates: list[RecipeOutputUpdateAnnotations]
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
99
|
-
@dataclass(kw_only=True)
|
|
99
|
+
@dataclasses.dataclass(kw_only=True)
|
|
100
100
|
class Data:
|
|
101
101
|
pass
|
|
102
102
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -7,7 +7,7 @@ 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
12
|
from ... import base_t
|
|
13
13
|
from ... import recipes_t
|
|
@@ -27,7 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_outputs"
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
30
|
-
@dataclass(kw_only=True)
|
|
30
|
+
@dataclasses.dataclass(kw_only=True)
|
|
31
31
|
class CurveValues:
|
|
32
32
|
x_values: list[typing.Optional[Decimal]]
|
|
33
33
|
y_values: list[typing.Optional[Decimal]]
|
|
@@ -37,7 +37,7 @@ class CurveValues:
|
|
|
37
37
|
@serial_class(
|
|
38
38
|
to_string_values={"value_numeric"},
|
|
39
39
|
)
|
|
40
|
-
@dataclass(kw_only=True)
|
|
40
|
+
@dataclasses.dataclass(kw_only=True)
|
|
41
41
|
class RecipeOutputValue:
|
|
42
42
|
recipe_id: base_t.ObjectId
|
|
43
43
|
output_id: base_t.ObjectId
|
|
@@ -50,13 +50,13 @@ class RecipeOutputValue:
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
53
|
-
@dataclass(kw_only=True)
|
|
53
|
+
@dataclasses.dataclass(kw_only=True)
|
|
54
54
|
class Arguments:
|
|
55
55
|
output_data: list[RecipeOutputValue]
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
59
|
-
@dataclass(kw_only=True)
|
|
59
|
+
@dataclasses.dataclass(kw_only=True)
|
|
60
60
|
class Data(response_t.Response):
|
|
61
61
|
pass
|
|
62
62
|
# DO NOT MODIFY -- This file is generated by type_spec
|