UncountablePythonSDK 0.0.72__py3-none-any.whl → 0.0.73__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.

Files changed (110) hide show
  1. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.73.dist-info}/METADATA +1 -1
  2. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.73.dist-info}/RECORD +110 -110
  3. examples/integration-server/jobs/materials_auto/profile.yaml +1 -1
  4. pkgs/serialization/serial_class.py +5 -0
  5. pkgs/serialization/serial_union.py +3 -0
  6. pkgs/type_spec/builder.py +2 -1
  7. pkgs/type_spec/config.py +5 -0
  8. pkgs/type_spec/emit_python.py +36 -20
  9. pkgs/type_spec/load_types.py +3 -2
  10. uncountable/core/client.py +2 -2
  11. uncountable/integration/entrypoint.py +1 -9
  12. uncountable/integration/queue_runner/worker.py +9 -5
  13. uncountable/integration/server.py +63 -66
  14. uncountable/types/api/batch/execute_batch.py +8 -0
  15. uncountable/types/api/batch/execute_batch_load_async.py +7 -0
  16. uncountable/types/api/chemical/convert_chemical_formats.py +7 -0
  17. uncountable/types/api/entity/create_entities.py +11 -1
  18. uncountable/types/api/entity/create_entity.py +8 -1
  19. uncountable/types/api/entity/get_entities_data.py +10 -0
  20. uncountable/types/api/entity/list_entities.py +8 -0
  21. uncountable/types/api/entity/lock_entity.py +7 -0
  22. uncountable/types/api/entity/resolve_entity_ids.py +10 -0
  23. uncountable/types/api/entity/set_values.py +7 -0
  24. uncountable/types/api/entity/transition_entity_phase.py +8 -0
  25. uncountable/types/api/entity/unlock_entity.py +7 -0
  26. uncountable/types/api/equipment/associate_equipment_input.py +7 -0
  27. uncountable/types/api/field_options/upsert_field_options.py +10 -0
  28. uncountable/types/api/id_source/list_id_source.py +10 -0
  29. uncountable/types/api/id_source/match_id_source.py +10 -0
  30. uncountable/types/api/input_groups/get_input_group_names.py +10 -0
  31. uncountable/types/api/inputs/create_inputs.py +13 -0
  32. uncountable/types/api/inputs/get_input_data.py +19 -0
  33. uncountable/types/api/inputs/get_input_names.py +10 -0
  34. uncountable/types/api/inputs/get_inputs_data.py +19 -0
  35. uncountable/types/api/inputs/set_input_attribute_values.py +7 -0
  36. uncountable/types/api/inputs/set_input_category.py +7 -0
  37. uncountable/types/api/inputs/set_input_subcategories.py +7 -0
  38. uncountable/types/api/inputs/set_intermediate_type.py +7 -0
  39. uncountable/types/api/material_families/update_entity_material_families.py +7 -0
  40. uncountable/types/api/outputs/get_output_data.py +16 -0
  41. uncountable/types/api/outputs/get_output_names.py +10 -0
  42. uncountable/types/api/outputs/resolve_output_conditions.py +13 -0
  43. uncountable/types/api/permissions/set_core_permissions.py +10 -0
  44. uncountable/types/api/project/get_projects.py +10 -0
  45. uncountable/types/api/project/get_projects_data.py +10 -0
  46. uncountable/types/api/recipe_links/create_recipe_link.py +7 -0
  47. uncountable/types/api/recipe_links/remove_recipe_link.py +7 -0
  48. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +10 -0
  49. uncountable/types/api/recipes/add_recipe_to_project.py +7 -0
  50. uncountable/types/api/recipes/archive_recipes.py +7 -0
  51. uncountable/types/api/recipes/associate_recipe_as_input.py +7 -0
  52. uncountable/types/api/recipes/associate_recipe_as_lot.py +7 -0
  53. uncountable/types/api/recipes/clear_recipe_outputs.py +7 -0
  54. uncountable/types/api/recipes/create_recipe.py +7 -0
  55. uncountable/types/api/recipes/create_recipes.py +13 -0
  56. uncountable/types/api/recipes/disassociate_recipe_as_input.py +7 -0
  57. uncountable/types/api/recipes/edit_recipe_inputs.py +20 -0
  58. uncountable/types/api/recipes/get_curve.py +7 -0
  59. uncountable/types/api/recipes/get_recipe_calculations.py +7 -0
  60. uncountable/types/api/recipes/get_recipe_links.py +7 -0
  61. uncountable/types/api/recipes/get_recipe_names.py +10 -0
  62. uncountable/types/api/recipes/get_recipe_output_metadata.py +7 -0
  63. uncountable/types/api/recipes/get_recipes_data.py +25 -0
  64. uncountable/types/api/recipes/lock_recipes.py +10 -0
  65. uncountable/types/api/recipes/remove_recipe_from_project.py +7 -0
  66. uncountable/types/api/recipes/set_recipe_inputs.py +7 -0
  67. uncountable/types/api/recipes/set_recipe_metadata.py +7 -0
  68. uncountable/types/api/recipes/set_recipe_output_annotations.py +13 -0
  69. uncountable/types/api/recipes/set_recipe_output_file.py +10 -0
  70. uncountable/types/api/recipes/set_recipe_outputs.py +10 -0
  71. uncountable/types/api/recipes/set_recipe_tags.py +12 -0
  72. uncountable/types/api/recipes/unarchive_recipes.py +7 -0
  73. uncountable/types/api/recipes/unlock_recipes.py +7 -0
  74. uncountable/types/api/triggers/run_trigger.py +7 -0
  75. uncountable/types/api/uploader/invoke_uploader.py +7 -0
  76. uncountable/types/async_batch_t.py +10 -0
  77. uncountable/types/calculations_t.py +4 -0
  78. uncountable/types/chemical_structure_t.py +1 -0
  79. uncountable/types/client_base.py +2 -2
  80. uncountable/types/client_config_t.py +4 -0
  81. uncountable/types/curves_t.py +4 -0
  82. uncountable/types/entity_t.py +6 -0
  83. uncountable/types/experiment_groups_t.py +4 -0
  84. uncountable/types/field_values_t.py +4 -0
  85. uncountable/types/fields_t.py +4 -0
  86. uncountable/types/generic_upload_t.py +13 -0
  87. uncountable/types/id_source_t.py +13 -0
  88. uncountable/types/identifier_t.py +3 -0
  89. uncountable/types/input_attributes_t.py +1 -0
  90. uncountable/types/inputs_t.py +4 -0
  91. uncountable/types/job_definition_t.py +33 -0
  92. uncountable/types/outputs_t.py +4 -0
  93. uncountable/types/overrides_t.py +7 -0
  94. uncountable/types/phases_t.py +4 -0
  95. uncountable/types/queued_job_t.py +16 -0
  96. uncountable/types/recipe_identifiers_t.py +3 -0
  97. uncountable/types/recipe_links_t.py +4 -0
  98. uncountable/types/recipe_metadata_t.py +5 -0
  99. uncountable/types/recipe_output_metadata_t.py +4 -0
  100. uncountable/types/recipe_tags_t.py +4 -0
  101. uncountable/types/recipe_workflow_steps_t.py +7 -0
  102. uncountable/types/recipes_t.py +4 -0
  103. uncountable/types/response_t.py +1 -0
  104. uncountable/types/secret_retrieval_t.py +6 -0
  105. uncountable/types/units_t.py +4 -0
  106. uncountable/types/users_t.py +4 -0
  107. uncountable/types/webhook_job_t.py +4 -0
  108. uncountable/types/workflows_t.py +7 -0
  109. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.73.dist-info}/WHEEL +0 -0
  110. {UncountablePythonSDK-0.0.72.dist-info → UncountablePythonSDK-0.0.73.dist-info}/top_level.txt +0 -0
@@ -38,6 +38,9 @@ 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
+ @serial_class(
42
+ named_type_path="sdk.api.recipes.get_recipes_data.Arguments",
43
+ )
41
44
  @dataclasses.dataclass(kw_only=True)
42
45
  class Arguments:
43
46
  recipe_ids: typing.Optional[typing.Optional[list[base_t.ObjectId]]] = None
@@ -48,6 +51,7 @@ class Arguments:
48
51
 
49
52
  # DO NOT MODIFY -- This file is generated by type_spec
50
53
  @serial_class(
54
+ named_type_path="sdk.api.recipes.get_recipes_data.RecipeOutput",
51
55
  unconverted_values={"quantity_json"},
52
56
  to_string_values={"quantity_dec"},
53
57
  )
@@ -64,6 +68,7 @@ class RecipeOutput:
64
68
 
65
69
  # DO NOT MODIFY -- This file is generated by type_spec
66
70
  @serial_class(
71
+ named_type_path="sdk.api.recipes.get_recipes_data.ConditionParameterValue",
67
72
  unconverted_values={"quantity_json"},
68
73
  to_string_values={"quantity_dec"},
69
74
  )
@@ -76,6 +81,9 @@ class ConditionParameterValue:
76
81
 
77
82
 
78
83
  # DO NOT MODIFY -- This file is generated by type_spec
84
+ @serial_class(
85
+ named_type_path="sdk.api.recipes.get_recipes_data.SimpleOutputCondition",
86
+ )
79
87
  @dataclasses.dataclass(kw_only=True)
80
88
  class SimpleOutputCondition:
81
89
  output_condition_id: base_t.ObjectId
@@ -84,6 +92,7 @@ class SimpleOutputCondition:
84
92
 
85
93
  # DO NOT MODIFY -- This file is generated by type_spec
86
94
  @serial_class(
95
+ named_type_path="sdk.api.recipes.get_recipes_data.RecipeInput",
87
96
  unconverted_values={"actual_quantity_json", "quantity_json"},
88
97
  to_string_values={"actual_quantity_dec", "quantity_dec"},
89
98
  )
@@ -103,6 +112,9 @@ class RecipeInput:
103
112
 
104
113
 
105
114
  # DO NOT MODIFY -- This file is generated by type_spec
115
+ @serial_class(
116
+ named_type_path="sdk.api.recipes.get_recipes_data.RecipeStep",
117
+ )
106
118
  @dataclasses.dataclass(kw_only=True)
107
119
  class RecipeStep:
108
120
  name: typing.Optional[str]
@@ -112,6 +124,9 @@ class RecipeStep:
112
124
 
113
125
 
114
126
  # DO NOT MODIFY -- This file is generated by type_spec
127
+ @serial_class(
128
+ named_type_path="sdk.api.recipes.get_recipes_data.RecipeStepGroup",
129
+ )
115
130
  @dataclasses.dataclass(kw_only=True)
116
131
  class RecipeStepGroup:
117
132
  name: typing.Optional[str]
@@ -119,6 +134,9 @@ class RecipeStepGroup:
119
134
 
120
135
 
121
136
  # DO NOT MODIFY -- This file is generated by type_spec
137
+ @serial_class(
138
+ named_type_path="sdk.api.recipes.get_recipes_data.RecipeWorkflowStep",
139
+ )
122
140
  @dataclasses.dataclass(kw_only=True)
123
141
  class RecipeWorkflowStep:
124
142
  recipe_workflow_step_id: base_t.ObjectId
@@ -128,6 +146,7 @@ class RecipeWorkflowStep:
128
146
 
129
147
  # DO NOT MODIFY -- This file is generated by type_spec
130
148
  @serial_class(
149
+ named_type_path="sdk.api.recipes.get_recipes_data.RecipeStepRelationship",
131
150
  to_string_values={"actual_quantity_dec", "quantity_dec"},
132
151
  )
133
152
  @dataclasses.dataclass(kw_only=True)
@@ -141,6 +160,9 @@ class RecipeStepRelationship:
141
160
 
142
161
 
143
162
  # DO NOT MODIFY -- This file is generated by type_spec
163
+ @serial_class(
164
+ named_type_path="sdk.api.recipes.get_recipes_data.Recipe",
165
+ )
144
166
  @dataclasses.dataclass(kw_only=True)
145
167
  class Recipe:
146
168
  recipe_id: base_t.ObjectId
@@ -161,6 +183,9 @@ class Recipe:
161
183
 
162
184
 
163
185
  # DO NOT MODIFY -- This file is generated by type_spec
186
+ @serial_class(
187
+ named_type_path="sdk.api.recipes.get_recipes_data.Data",
188
+ )
164
189
  @dataclasses.dataclass(kw_only=True)
165
190
  class Data:
166
191
  recipes: list[Recipe]
@@ -9,6 +9,7 @@ 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
+ from pkgs.serialization import serial_class
12
13
  from ... import identifier_t
13
14
 
14
15
  __all__: list[str] = [
@@ -31,12 +32,18 @@ class RecipeLockType(StrEnum):
31
32
 
32
33
 
33
34
  # DO NOT MODIFY -- This file is generated by type_spec
35
+ @serial_class(
36
+ named_type_path="sdk.api.recipes.lock_recipes.RecipeLockBase",
37
+ )
34
38
  @dataclasses.dataclass(kw_only=True)
35
39
  class RecipeLockBase:
36
40
  recipe: identifier_t.IdentifierKey
37
41
 
38
42
 
39
43
  # DO NOT MODIFY -- This file is generated by type_spec
44
+ @serial_class(
45
+ named_type_path="sdk.api.recipes.lock_recipes.Arguments",
46
+ )
40
47
  @dataclasses.dataclass(kw_only=True)
41
48
  class Arguments:
42
49
  type: RecipeLockType = RecipeLockType.ALL
@@ -47,6 +54,9 @@ class Arguments:
47
54
 
48
55
 
49
56
  # DO NOT MODIFY -- This file is generated by type_spec
57
+ @serial_class(
58
+ named_type_path="sdk.api.recipes.lock_recipes.Data",
59
+ )
50
60
  @dataclasses.dataclass(kw_only=True)
51
61
  class Data:
52
62
  pass
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from ... import identifier_t
12
13
 
13
14
  __all__: list[str] = [
@@ -22,6 +23,9 @@ 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
26
+ @serial_class(
27
+ named_type_path="sdk.api.recipes.remove_recipe_from_project.Arguments",
28
+ )
25
29
  @dataclasses.dataclass(kw_only=True)
26
30
  class Arguments:
27
31
  recipe_key: identifier_t.IdentifierKey
@@ -29,6 +33,9 @@ class Arguments:
29
33
 
30
34
 
31
35
  # DO NOT MODIFY -- This file is generated by type_spec
36
+ @serial_class(
37
+ named_type_path="sdk.api.recipes.remove_recipe_from_project.Data",
38
+ )
32
39
  @dataclasses.dataclass(kw_only=True)
33
40
  class Data:
34
41
  pass
@@ -25,6 +25,7 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_inputs"
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
27
  @serial_class(
28
+ named_type_path="sdk.api.recipes.set_recipe_inputs.RecipeInputValue",
28
29
  to_string_values={"value_numeric"},
29
30
  )
30
31
  @dataclasses.dataclass(kw_only=True)
@@ -40,12 +41,18 @@ class RecipeInputValue:
40
41
 
41
42
 
42
43
  # DO NOT MODIFY -- This file is generated by type_spec
44
+ @serial_class(
45
+ named_type_path="sdk.api.recipes.set_recipe_inputs.Arguments",
46
+ )
43
47
  @dataclasses.dataclass(kw_only=True)
44
48
  class Arguments:
45
49
  input_data: list[RecipeInputValue]
46
50
 
47
51
 
48
52
  # DO NOT MODIFY -- This file is generated by type_spec
53
+ @serial_class(
54
+ named_type_path="sdk.api.recipes.set_recipe_inputs.Data",
55
+ )
49
56
  @dataclasses.dataclass(kw_only=True)
50
57
  class Data:
51
58
  pass
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from ... import identifier_t
12
13
  from ... import recipe_metadata_t
13
14
 
@@ -23,6 +24,9 @@ ENDPOINT_PATH = "api/external/recipes/set_recipe_metadata"
23
24
 
24
25
 
25
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
+ @serial_class(
28
+ named_type_path="sdk.api.recipes.set_recipe_metadata.Arguments",
29
+ )
26
30
  @dataclasses.dataclass(kw_only=True)
27
31
  class Arguments:
28
32
  recipe_key: identifier_t.IdentifierKey
@@ -30,6 +34,9 @@ class Arguments:
30
34
 
31
35
 
32
36
  # DO NOT MODIFY -- This file is generated by type_spec
37
+ @serial_class(
38
+ named_type_path="sdk.api.recipes.set_recipe_metadata.Data",
39
+ )
33
40
  @dataclasses.dataclass(kw_only=True)
34
41
  class Data:
35
42
  pass
@@ -33,6 +33,7 @@ ENDPOINT_PATH = "api/external/recipes/set_recipe_output_annotations"
33
33
 
34
34
  # DO NOT MODIFY -- This file is generated by type_spec
35
35
  @serial_class(
36
+ named_type_path="sdk.api.recipes.set_recipe_output_annotations.AnnotationEdit",
36
37
  to_string_values={"lower_value", "upper_value"},
37
38
  )
38
39
  @dataclasses.dataclass(kw_only=True)
@@ -49,6 +50,9 @@ class AnnotationUpdateType(StrEnum):
49
50
 
50
51
 
51
52
  # DO NOT MODIFY -- This file is generated by type_spec
53
+ @serial_class(
54
+ named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputEditBase",
55
+ )
52
56
  @dataclasses.dataclass(kw_only=True)
53
57
  class RecipeOutputEditBase:
54
58
  recipe_id: base_t.ObjectId
@@ -60,6 +64,7 @@ class RecipeOutputEditBase:
60
64
 
61
65
  # DO NOT MODIFY -- This file is generated by type_spec
62
66
  @serial_class(
67
+ named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputMergeAnnotations",
63
68
  parse_require={"type"},
64
69
  )
65
70
  @dataclasses.dataclass(kw_only=True)
@@ -69,6 +74,7 @@ class RecipeOutputMergeAnnotations(RecipeOutputEditBase):
69
74
 
70
75
  # DO NOT MODIFY -- This file is generated by type_spec
71
76
  @serial_class(
77
+ named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputReplaceAnnotations",
72
78
  parse_require={"type"},
73
79
  )
74
80
  @dataclasses.dataclass(kw_only=True)
@@ -80,6 +86,7 @@ class RecipeOutputReplaceAnnotations(RecipeOutputEditBase):
80
86
  RecipeOutputUpdateAnnotations = typing.Annotated[
81
87
  typing.Union[RecipeOutputMergeAnnotations, RecipeOutputReplaceAnnotations],
82
88
  serial_union_annotation(
89
+ named_type_path="sdk.api.recipes.set_recipe_output_annotations.RecipeOutputUpdateAnnotations",
83
90
  discriminator="type",
84
91
  discriminator_map={
85
92
  "merge": RecipeOutputMergeAnnotations,
@@ -90,12 +97,18 @@ RecipeOutputUpdateAnnotations = typing.Annotated[
90
97
 
91
98
 
92
99
  # DO NOT MODIFY -- This file is generated by type_spec
100
+ @serial_class(
101
+ named_type_path="sdk.api.recipes.set_recipe_output_annotations.Arguments",
102
+ )
93
103
  @dataclasses.dataclass(kw_only=True)
94
104
  class Arguments:
95
105
  updates: list[RecipeOutputUpdateAnnotations]
96
106
 
97
107
 
98
108
  # DO NOT MODIFY -- This file is generated by type_spec
109
+ @serial_class(
110
+ named_type_path="sdk.api.recipes.set_recipe_output_annotations.Data",
111
+ )
99
112
  @dataclasses.dataclass(kw_only=True)
100
113
  class Data:
101
114
  pass
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from ... import base_t
12
13
  from ... import response_t
13
14
 
@@ -24,6 +25,9 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_output_file"
24
25
 
25
26
 
26
27
  # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.recipes.set_recipe_output_file.RecipeOutputFileValue",
30
+ )
27
31
  @dataclasses.dataclass(kw_only=True)
28
32
  class RecipeOutputFileValue:
29
33
  recipe_id: base_t.ObjectId
@@ -34,12 +38,18 @@ class RecipeOutputFileValue:
34
38
 
35
39
 
36
40
  # DO NOT MODIFY -- This file is generated by type_spec
41
+ @serial_class(
42
+ named_type_path="sdk.api.recipes.set_recipe_output_file.Arguments",
43
+ )
37
44
  @dataclasses.dataclass(kw_only=True)
38
45
  class Arguments:
39
46
  output_file_data: RecipeOutputFileValue
40
47
 
41
48
 
42
49
  # DO NOT MODIFY -- This file is generated by type_spec
50
+ @serial_class(
51
+ named_type_path="sdk.api.recipes.set_recipe_output_file.Data",
52
+ )
43
53
  @dataclasses.dataclass(kw_only=True)
44
54
  class Data(response_t.Response):
45
55
  pass
@@ -28,6 +28,9 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_outputs"
28
28
 
29
29
 
30
30
  # DO NOT MODIFY -- This file is generated by type_spec
31
+ @serial_class(
32
+ named_type_path="sdk.api.recipes.set_recipe_outputs.CurveValues",
33
+ )
31
34
  @dataclasses.dataclass(kw_only=True)
32
35
  class CurveValues:
33
36
  x_values: list[typing.Optional[Decimal]]
@@ -36,6 +39,7 @@ class CurveValues:
36
39
 
37
40
  # DO NOT MODIFY -- This file is generated by type_spec
38
41
  @serial_class(
42
+ named_type_path="sdk.api.recipes.set_recipe_outputs.RecipeOutputValue",
39
43
  to_string_values={"value_numeric"},
40
44
  )
41
45
  @dataclasses.dataclass(kw_only=True)
@@ -52,12 +56,18 @@ class RecipeOutputValue:
52
56
 
53
57
 
54
58
  # DO NOT MODIFY -- This file is generated by type_spec
59
+ @serial_class(
60
+ named_type_path="sdk.api.recipes.set_recipe_outputs.Arguments",
61
+ )
55
62
  @dataclasses.dataclass(kw_only=True)
56
63
  class Arguments:
57
64
  output_data: list[RecipeOutputValue]
58
65
 
59
66
 
60
67
  # DO NOT MODIFY -- This file is generated by type_spec
68
+ @serial_class(
69
+ named_type_path="sdk.api.recipes.set_recipe_outputs.Data",
70
+ )
61
71
  @dataclasses.dataclass(kw_only=True)
62
72
  class Data(response_t.Response):
63
73
  pass
@@ -38,6 +38,9 @@ class RecipeTagUpdateType(StrEnum):
38
38
 
39
39
 
40
40
  # DO NOT MODIFY -- This file is generated by type_spec
41
+ @serial_class(
42
+ named_type_path="sdk.api.recipes.set_recipe_tags.RecipeTagUpdateBase",
43
+ )
41
44
  @dataclasses.dataclass(kw_only=True)
42
45
  class RecipeTagUpdateBase:
43
46
  type: RecipeTagUpdateType
@@ -45,6 +48,7 @@ class RecipeTagUpdateBase:
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.set_recipe_tags.RecipeTagAppend",
48
52
  parse_require={"type"},
49
53
  )
50
54
  @dataclasses.dataclass(kw_only=True)
@@ -55,6 +59,7 @@ class RecipeTagAppend(RecipeTagUpdateBase):
55
59
 
56
60
  # DO NOT MODIFY -- This file is generated by type_spec
57
61
  @serial_class(
62
+ named_type_path="sdk.api.recipes.set_recipe_tags.RecipeTagRemove",
58
63
  parse_require={"type"},
59
64
  )
60
65
  @dataclasses.dataclass(kw_only=True)
@@ -65,6 +70,7 @@ class RecipeTagRemove(RecipeTagUpdateBase):
65
70
 
66
71
  # DO NOT MODIFY -- This file is generated by type_spec
67
72
  @serial_class(
73
+ named_type_path="sdk.api.recipes.set_recipe_tags.RecipeTagOverride",
68
74
  parse_require={"type"},
69
75
  )
70
76
  @dataclasses.dataclass(kw_only=True)
@@ -78,6 +84,9 @@ RecipeTagUpdate = typing.Union[RecipeTagAppend, RecipeTagRemove, RecipeTagOverri
78
84
 
79
85
 
80
86
  # DO NOT MODIFY -- This file is generated by type_spec
87
+ @serial_class(
88
+ named_type_path="sdk.api.recipes.set_recipe_tags.Arguments",
89
+ )
81
90
  @dataclasses.dataclass(kw_only=True)
82
91
  class Arguments:
83
92
  recipe_key: identifier_t.IdentifierKey
@@ -85,6 +94,9 @@ class Arguments:
85
94
 
86
95
 
87
96
  # DO NOT MODIFY -- This file is generated by type_spec
97
+ @serial_class(
98
+ named_type_path="sdk.api.recipes.set_recipe_tags.Data",
99
+ )
88
100
  @dataclasses.dataclass(kw_only=True)
89
101
  class Data:
90
102
  pass
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from ... import identifier_t
12
13
 
13
14
  __all__: list[str] = [
@@ -22,12 +23,18 @@ ENDPOINT_PATH = "api/external/recipes/unarchive"
22
23
 
23
24
 
24
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
+ @serial_class(
27
+ named_type_path="sdk.api.recipes.unarchive_recipes.Arguments",
28
+ )
25
29
  @dataclasses.dataclass(kw_only=True)
26
30
  class Arguments:
27
31
  recipes: list[identifier_t.IdentifierKey]
28
32
 
29
33
 
30
34
  # DO NOT MODIFY -- This file is generated by type_spec
35
+ @serial_class(
36
+ named_type_path="sdk.api.recipes.unarchive_recipes.Data",
37
+ )
31
38
  @dataclasses.dataclass(kw_only=True)
32
39
  class Data:
33
40
  pass
@@ -9,6 +9,7 @@ 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
+ from pkgs.serialization import serial_class
12
13
  from ... import identifier_t
13
14
 
14
15
  __all__: list[str] = [
@@ -29,6 +30,9 @@ class RecipeUnlockType(StrEnum):
29
30
 
30
31
 
31
32
  # DO NOT MODIFY -- This file is generated by type_spec
33
+ @serial_class(
34
+ named_type_path="sdk.api.recipes.unlock_recipes.Arguments",
35
+ )
32
36
  @dataclasses.dataclass(kw_only=True)
33
37
  class Arguments:
34
38
  type: RecipeUnlockType = RecipeUnlockType.STANDARD
@@ -37,6 +41,9 @@ class Arguments:
37
41
 
38
42
 
39
43
  # DO NOT MODIFY -- This file is generated by type_spec
44
+ @serial_class(
45
+ named_type_path="sdk.api.recipes.unlock_recipes.Data",
46
+ )
40
47
  @dataclasses.dataclass(kw_only=True)
41
48
  class Data:
42
49
  pass
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from ... import entity_t
12
13
  from ... import response_t
13
14
 
@@ -23,6 +24,9 @@ ENDPOINT_PATH = "api/external/triggers/run_trigger"
23
24
 
24
25
 
25
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
+ @serial_class(
28
+ named_type_path="sdk.api.triggers.run_trigger.Arguments",
29
+ )
26
30
  @dataclasses.dataclass(kw_only=True)
27
31
  class Arguments:
28
32
  trigger_ref_name: str
@@ -30,6 +34,9 @@ class Arguments:
30
34
 
31
35
 
32
36
  # DO NOT MODIFY -- This file is generated by type_spec
37
+ @serial_class(
38
+ named_type_path="sdk.api.triggers.run_trigger.Data",
39
+ )
33
40
  @dataclasses.dataclass(kw_only=True)
34
41
  class Data(response_t.Response):
35
42
  pass
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from ... import async_batch_t
12
13
  from ... import base_t
13
14
  from ... import generic_upload_t
@@ -25,6 +26,9 @@ ENDPOINT_PATH = "api/external/uploader/invoke_uploader"
25
26
 
26
27
 
27
28
  # DO NOT MODIFY -- This file is generated by type_spec
29
+ @serial_class(
30
+ named_type_path="sdk.api.uploader.invoke_uploader.Arguments",
31
+ )
28
32
  @dataclasses.dataclass(kw_only=True)
29
33
  class Arguments:
30
34
  file_id: base_t.ObjectId
@@ -33,6 +37,9 @@ class Arguments:
33
37
 
34
38
 
35
39
  # DO NOT MODIFY -- This file is generated by type_spec
40
+ @serial_class(
41
+ named_type_path="sdk.api.uploader.invoke_uploader.Data",
42
+ )
36
43
  @dataclasses.dataclass(kw_only=True)
37
44
  class Data(async_batch_t.AsyncBatchActionReturn):
38
45
  pass
@@ -38,6 +38,7 @@ class AsyncBatchRequestPath(StrEnum):
38
38
 
39
39
  # DO NOT MODIFY -- This file is generated by type_spec
40
40
  @serial_class(
41
+ named_type_path="sdk.async_batch.AsyncBatchRequest",
41
42
  unconverted_values={"data"},
42
43
  )
43
44
  @dataclasses.dataclass(kw_only=True)
@@ -49,6 +50,9 @@ class AsyncBatchRequest:
49
50
 
50
51
 
51
52
  # DO NOT MODIFY -- This file is generated by type_spec
53
+ @serial_class(
54
+ named_type_path="sdk.async_batch.AsyncBatchActionReturn",
55
+ )
52
56
  @dataclasses.dataclass(kw_only=True)
53
57
  class AsyncBatchActionReturn:
54
58
  modification_made: bool
@@ -56,6 +60,9 @@ class AsyncBatchActionReturn:
56
60
 
57
61
 
58
62
  # DO NOT MODIFY -- This file is generated by type_spec
63
+ @serial_class(
64
+ named_type_path="sdk.async_batch.SavedAsyncBatchActionReturn",
65
+ )
59
66
  @dataclasses.dataclass(kw_only=True)
60
67
  class SavedAsyncBatchActionReturn:
61
68
  identifier: str
@@ -63,6 +70,9 @@ class SavedAsyncBatchActionReturn:
63
70
 
64
71
 
65
72
  # DO NOT MODIFY -- This file is generated by type_spec
73
+ @serial_class(
74
+ named_type_path="sdk.async_batch.QueuedAsyncBatchRequest",
75
+ )
66
76
  @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
67
77
  class QueuedAsyncBatchRequest:
68
78
  path: AsyncBatchRequestPath
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
  from . import base_t
12
13
 
13
14
  __all__: list[str] = [
@@ -16,6 +17,9 @@ __all__: list[str] = [
16
17
 
17
18
 
18
19
  # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.calculations.Calculation",
22
+ )
19
23
  @dataclasses.dataclass(kw_only=True)
20
24
  class Calculation:
21
25
  id: base_t.ObjectId
@@ -17,6 +17,7 @@ __all__: list[str] = [
17
17
 
18
18
  # DO NOT MODIFY -- This file is generated by type_spec
19
19
  @serial_class(
20
+ named_type_path="sdk.chemical_structure.ChemicalStructure",
20
21
  to_string_values={"molecular_weight"},
21
22
  )
22
23
  @dataclasses.dataclass(kw_only=True)
@@ -257,7 +257,7 @@ class ClientMethods(ABC):
257
257
  self,
258
258
  *,
259
259
  definition_id: base_t.ObjectId,
260
- entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL], typing.Literal[entity_t.EntityType.INGREDIENT_TAG_MAP], typing.Literal[entity_t.EntityType.INGREDIENT_TAG]],
260
+ entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL], typing.Literal[entity_t.EntityType.INGREDIENT_TAG_MAP], typing.Literal[entity_t.EntityType.INGREDIENT_TAG], typing.Literal[entity_t.EntityType.OUTPUT]],
261
261
  entities_to_create: list[create_entities_t.EntityToCreate],
262
262
  ) -> create_entities_t.Data:
263
263
  """Creates new Uncountable entities
@@ -282,7 +282,7 @@ class ClientMethods(ABC):
282
282
  self,
283
283
  *,
284
284
  definition_id: base_t.ObjectId,
285
- entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL], typing.Literal[entity_t.EntityType.INGREDIENT_TAG_MAP], typing.Literal[entity_t.EntityType.INGREDIENT_TAG]],
285
+ entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL], typing.Literal[entity_t.EntityType.INGREDIENT_TAG_MAP], typing.Literal[entity_t.EntityType.INGREDIENT_TAG], typing.Literal[entity_t.EntityType.OUTPUT]],
286
286
  field_values: typing.Optional[typing.Optional[list[field_values_t.FieldRefNameValue]]] = None,
287
287
  ) -> create_entity_t.Data:
288
288
  """Creates a new Uncountable entity
@@ -8,6 +8,7 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  import dataclasses
11
+ from pkgs.serialization import serial_class
11
12
 
12
13
  __all__: list[str] = [
13
14
  "ClientConfigOptions",
@@ -15,6 +16,9 @@ __all__: list[str] = [
15
16
 
16
17
 
17
18
  # DO NOT MODIFY -- This file is generated by type_spec
19
+ @serial_class(
20
+ named_type_path="sdk.client_config.ClientConfigOptions",
21
+ )
18
22
  @dataclasses.dataclass(kw_only=True)
19
23
  class ClientConfigOptions:
20
24
  allow_insecure_tls: bool = False
@@ -26,6 +26,9 @@ class CurveAxisType(StrEnum):
26
26
 
27
27
 
28
28
  # DO NOT MODIFY -- This file is generated by type_spec
29
+ @serial_class(
30
+ named_type_path="sdk.curves.Curve",
31
+ )
29
32
  @dataclasses.dataclass(kw_only=True)
30
33
  class Curve:
31
34
  id: base_t.ObjectId
@@ -37,6 +40,7 @@ class Curve:
37
40
 
38
41
  # DO NOT MODIFY -- This file is generated by type_spec
39
42
  @serial_class(
43
+ named_type_path="sdk.curves.CurveValue",
40
44
  to_string_values={"quantity"},
41
45
  )
42
46
  @dataclasses.dataclass(kw_only=True)
@@ -9,6 +9,7 @@ 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
+ from pkgs.serialization import serial_class
12
13
  from pkgs.serialization import serial_string_enum
13
14
  from . import base_t
14
15
 
@@ -122,6 +123,7 @@ __all__: list[str] = [
122
123
  "recipe_workflow_step": "Recipe Workflow Step",
123
124
  "recipe_tag": "Recipe Tag",
124
125
  "recipe_metadata": "Experiment Metadata",
126
+ "recipe_metadata_mapping": "Experiment Metadata Mapping",
125
127
  "metadata_value": "Metadata Value",
126
128
  "review": "Review",
127
129
  "review_entity_user_status": "Review Entity User Status",
@@ -275,6 +277,7 @@ class EntityType(StrEnum):
275
277
  RECIPE_WORKFLOW_STEP = "recipe_workflow_step"
276
278
  RECIPE_TAG = "recipe_tag"
277
279
  RECIPE_METADATA = "recipe_metadata"
280
+ RECIPE_METADATA_MAPPING = "recipe_metadata_mapping"
278
281
  METADATA_VALUE = "metadata_value"
279
282
  REVIEW = "review"
280
283
  REVIEW_ENTITY_USER_STATUS = "review_entity_user_status"
@@ -327,6 +330,9 @@ class EntityType(StrEnum):
327
330
 
328
331
 
329
332
  # DO NOT MODIFY -- This file is generated by type_spec
333
+ @serial_class(
334
+ named_type_path="sdk.entity.Entity",
335
+ )
330
336
  @dataclasses.dataclass(kw_only=True)
331
337
  class Entity:
332
338
  id: base_t.ObjectId