UncountablePythonSDK 0.0.7__py3-none-any.whl → 0.0.9__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.7.dist-info → UncountablePythonSDK-0.0.9.dist-info}/METADATA +4 -2
- UncountablePythonSDK-0.0.9.dist-info/RECORD +145 -0
- pkgs/argument_parser/argument_parser.py +2 -2
- pkgs/serialization/missing_sentry.py +1 -1
- pkgs/serialization_util/serialization_helpers.py +3 -0
- pkgs/type_spec/emit_open_api.py +34 -17
- pkgs/type_spec/emit_open_api_util.py +4 -9
- pkgs/type_spec/emit_python.py +8 -5
- pkgs/type_spec/open_api_util.py +13 -12
- type_spec/external/api/entity/create_entities.yaml +1 -1
- type_spec/external/api/entity/create_entity.yaml +1 -1
- type_spec/external/api/entity/get_entities_data.yaml +4 -30
- type_spec/external/api/entity/list_entities.yaml +4 -14
- type_spec/external/api/entity/resolve_entity_ids.yaml +2 -2
- type_spec/external/api/entity/set_values.yaml +3 -30
- type_spec/external/api/input_groups/get_input_group_names.yaml +2 -2
- type_spec/external/api/inputs/create_inputs.yaml +6 -19
- type_spec/external/api/inputs/get_input_data.yaml +11 -24
- type_spec/external/api/inputs/get_input_names.yaml +4 -4
- type_spec/external/api/inputs/get_inputs_data.yaml +7 -20
- type_spec/external/api/inputs/set_input_attribute_values.yaml +3 -7
- type_spec/external/api/outputs/get_output_data.yaml +9 -20
- type_spec/external/api/outputs/get_output_names.yaml +2 -2
- type_spec/external/api/project/get_projects.yaml +6 -16
- type_spec/external/api/project/get_projects_data.yaml +10 -46
- type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +5 -5
- type_spec/external/api/recipes/create_recipes.yaml +5 -18
- type_spec/external/api/recipes/get_curve.yaml +2 -34
- type_spec/external/api/recipes/get_recipe_calculations.yaml +7 -17
- type_spec/external/api/recipes/get_recipe_links.yaml +1 -1
- type_spec/external/api/recipes/get_recipe_names.yaml +2 -2
- type_spec/external/api/recipes/get_recipe_output_metadata.yaml +4 -17
- type_spec/external/api/recipes/get_recipes_data.yaml +31 -165
- type_spec/external/api/recipes/set_recipe_inputs.yaml +3 -3
- type_spec/external/api/recipes/set_recipe_outputs.yaml +4 -8
- uncountable/integration/__init__.py +0 -0
- uncountable/integration/construct_client.py +30 -0
- uncountable/integration/cron.py +29 -0
- uncountable/integration/db/__init__.py +0 -0
- uncountable/integration/db/connect.py +8 -0
- uncountable/integration/entrypoint.py +41 -0
- uncountable/integration/executors/__init__.py +0 -0
- uncountable/integration/executors/script_executor.py +18 -0
- uncountable/integration/job.py +39 -0
- uncountable/integration/server.py +86 -0
- uncountable/integration/types.py +89 -0
- uncountable/types/__init__.py +30 -0
- uncountable/types/api/entity/create_entities.py +2 -1
- uncountable/types/api/entity/create_entity.py +1 -1
- uncountable/types/api/entity/get_entities_data.py +6 -26
- uncountable/types/api/entity/list_entities.py +5 -12
- uncountable/types/api/entity/resolve_entity_ids.py +4 -2
- uncountable/types/api/entity/set_values.py +7 -29
- uncountable/types/api/input_groups/get_input_group_names.py +3 -2
- uncountable/types/api/inputs/create_inputs.py +8 -20
- uncountable/types/api/inputs/get_input_data.py +12 -25
- uncountable/types/api/inputs/get_input_names.py +5 -4
- uncountable/types/api/inputs/get_inputs_data.py +8 -21
- uncountable/types/api/inputs/set_input_attribute_values.py +5 -7
- uncountable/types/api/outputs/get_output_data.py +10 -17
- uncountable/types/api/outputs/get_output_names.py +3 -2
- uncountable/types/api/project/get_projects.py +8 -14
- uncountable/types/api/project/get_projects_data.py +13 -40
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +6 -5
- uncountable/types/api/recipes/create_recipes.py +6 -18
- uncountable/types/api/recipes/get_curve.py +4 -26
- uncountable/types/api/recipes/get_recipe_calculations.py +8 -15
- uncountable/types/api/recipes/get_recipe_links.py +2 -1
- uncountable/types/api/recipes/get_recipe_names.py +3 -2
- uncountable/types/api/recipes/get_recipe_output_metadata.py +5 -13
- uncountable/types/api/recipes/get_recipes_data.py +36 -122
- uncountable/types/api/recipes/set_recipe_inputs.py +4 -3
- uncountable/types/api/recipes/set_recipe_outputs.py +7 -8
- uncountable/types/calculations.py +23 -0
- uncountable/types/client_base.py +43 -43
- uncountable/types/curves.py +47 -0
- uncountable/types/entity.py +4 -1
- uncountable/types/experiment_groups.py +23 -0
- uncountable/types/field_values.py +37 -0
- uncountable/types/fields.py +24 -0
- uncountable/types/input_attributes.py +29 -0
- uncountable/types/inputs.py +61 -0
- uncountable/types/outputs.py +26 -0
- uncountable/types/phases.py +23 -0
- uncountable/types/recipe_links.py +3 -2
- uncountable/types/recipe_metadata.py +50 -0
- uncountable/types/recipe_output_metadata.py +24 -0
- uncountable/types/recipe_tags.py +23 -0
- uncountable/types/response.py +25 -0
- uncountable/types/units.py +23 -0
- uncountable/types/users.py +24 -0
- uncountable/types/workflows.py +32 -0
- UncountablePythonSDK-0.0.7.dist-info/RECORD +0 -119
- {UncountablePythonSDK-0.0.7.dist-info → UncountablePythonSDK-0.0.9.dist-info}/WHEEL +0 -0
- {UncountablePythonSDK-0.0.7.dist-info → UncountablePythonSDK-0.0.9.dist-info}/top_level.txt +0 -0
|
@@ -10,6 +10,13 @@ from decimal import Decimal # noqa: F401
|
|
|
10
10
|
from dataclasses import dataclass
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
from ... import base as base_t
|
|
13
|
+
from ... import experiment_groups as experiment_groups_t
|
|
14
|
+
from ... import inputs as inputs_t
|
|
15
|
+
from ... import outputs as outputs_t
|
|
16
|
+
from ... import recipe_metadata as recipe_metadata_t
|
|
17
|
+
from ... import recipe_tags as recipe_tags_t
|
|
18
|
+
from ... import users as users_t
|
|
19
|
+
from ... import workflows as workflows_t
|
|
13
20
|
|
|
14
21
|
__all__: list[str] = [
|
|
15
22
|
"Arguments",
|
|
@@ -19,22 +26,12 @@ __all__: list[str] = [
|
|
|
19
26
|
"ENDPOINT_PATH",
|
|
20
27
|
"Recipe",
|
|
21
28
|
"RecipeInput",
|
|
22
|
-
"RecipeMetadata",
|
|
23
29
|
"RecipeOutput",
|
|
24
30
|
"RecipeStep",
|
|
25
31
|
"RecipeStepGroup",
|
|
26
32
|
"RecipeStepRelationship",
|
|
27
33
|
"RecipeWorkflowStep",
|
|
28
|
-
"SimpleExperimentGroup",
|
|
29
|
-
"SimpleInput",
|
|
30
|
-
"SimpleOutput",
|
|
31
34
|
"SimpleOutputCondition",
|
|
32
|
-
"SimpleRecipeMetadataField",
|
|
33
|
-
"SimpleRecipeTag",
|
|
34
|
-
"SimpleUnit",
|
|
35
|
-
"SimpleUser",
|
|
36
|
-
"SimpleWorkflow",
|
|
37
|
-
"SimpleWorkflowStep",
|
|
38
35
|
]
|
|
39
36
|
|
|
40
37
|
ENDPOINT_METHOD = "GET"
|
|
@@ -44,51 +41,10 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipes_data"
|
|
|
44
41
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
45
42
|
@dataclass(kw_only=True)
|
|
46
43
|
class Arguments:
|
|
47
|
-
recipe_ids: typing.Optional[list[
|
|
48
|
-
project_id: typing.Optional[
|
|
49
|
-
offset: typing.Optional[int]
|
|
50
|
-
limit: typing.Optional[int]
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
54
|
-
@dataclass(kw_only=True)
|
|
55
|
-
class SimpleRecipeMetadataField:
|
|
56
|
-
metadata_id: int
|
|
57
|
-
name: str
|
|
58
|
-
quantity_type: str
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
62
|
-
@serial_class(
|
|
63
|
-
unconverted_values={"quantity_json"},
|
|
64
|
-
to_string_values={"quantity_dec"},
|
|
65
|
-
)
|
|
66
|
-
@dataclass(kw_only=True)
|
|
67
|
-
class RecipeMetadata:
|
|
68
|
-
metadata_id: int
|
|
69
|
-
quantity_dec: Decimal
|
|
70
|
-
quantity_json: base_t.JsonValue
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
74
|
-
@dataclass(kw_only=True)
|
|
75
|
-
class SimpleRecipeTag:
|
|
76
|
-
recipe_tag_id: int
|
|
77
|
-
name: str
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
81
|
-
@dataclass(kw_only=True)
|
|
82
|
-
class SimpleExperimentGroup:
|
|
83
|
-
experiment_group_id: int
|
|
84
|
-
name: str
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
88
|
-
@dataclass(kw_only=True)
|
|
89
|
-
class SimpleUnit:
|
|
90
|
-
unit_id: int
|
|
91
|
-
name: str
|
|
44
|
+
recipe_ids: typing.Optional[typing.Optional[list[base_t.ObjectId]]] = None
|
|
45
|
+
project_id: typing.Optional[typing.Optional[base_t.ObjectId]] = None
|
|
46
|
+
offset: typing.Optional[typing.Optional[int]] = None
|
|
47
|
+
limit: typing.Optional[typing.Optional[int]] = None
|
|
92
48
|
|
|
93
49
|
|
|
94
50
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -98,22 +54,13 @@ class SimpleUnit:
|
|
|
98
54
|
)
|
|
99
55
|
@dataclass(kw_only=True)
|
|
100
56
|
class RecipeOutput:
|
|
101
|
-
id:
|
|
102
|
-
output_id:
|
|
57
|
+
id: base_t.ObjectId
|
|
58
|
+
output_id: base_t.ObjectId
|
|
103
59
|
replicate_num: int
|
|
104
60
|
quantity_dec: Decimal
|
|
105
61
|
quantity_json: base_t.JsonValue
|
|
106
|
-
curve_id:
|
|
107
|
-
output_condition_id:
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
111
|
-
@dataclass(kw_only=True)
|
|
112
|
-
class SimpleOutput:
|
|
113
|
-
output_id: int
|
|
114
|
-
name: str
|
|
115
|
-
unit: typing.Optional[SimpleUnit]
|
|
116
|
-
quantity_type: str
|
|
62
|
+
curve_id: base_t.ObjectId
|
|
63
|
+
output_condition_id: base_t.ObjectId
|
|
117
64
|
|
|
118
65
|
|
|
119
66
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -123,7 +70,7 @@ class SimpleOutput:
|
|
|
123
70
|
)
|
|
124
71
|
@dataclass(kw_only=True)
|
|
125
72
|
class ConditionParameterValue:
|
|
126
|
-
condition_parameter_id:
|
|
73
|
+
condition_parameter_id: base_t.ObjectId
|
|
127
74
|
condition_parameter_name: str
|
|
128
75
|
quantity_dec: Decimal
|
|
129
76
|
quantity_json: base_t.JsonValue
|
|
@@ -132,25 +79,10 @@ class ConditionParameterValue:
|
|
|
132
79
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
133
80
|
@dataclass(kw_only=True)
|
|
134
81
|
class SimpleOutputCondition:
|
|
135
|
-
output_condition_id:
|
|
82
|
+
output_condition_id: base_t.ObjectId
|
|
136
83
|
condition_parameter_values: list[ConditionParameterValue]
|
|
137
84
|
|
|
138
85
|
|
|
139
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
140
|
-
@dataclass(kw_only=True)
|
|
141
|
-
class SimpleWorkflowStep:
|
|
142
|
-
workflow_step_id: int
|
|
143
|
-
name: str
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
147
|
-
@dataclass(kw_only=True)
|
|
148
|
-
class SimpleWorkflow:
|
|
149
|
-
workflow_id: int
|
|
150
|
-
name: str
|
|
151
|
-
workflow_steps: list[SimpleWorkflowStep]
|
|
152
|
-
|
|
153
|
-
|
|
154
86
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
155
87
|
@serial_class(
|
|
156
88
|
unconverted_values={"actual_quantity_json", "quantity_json"},
|
|
@@ -158,9 +90,9 @@ class SimpleWorkflow:
|
|
|
158
90
|
)
|
|
159
91
|
@dataclass(kw_only=True)
|
|
160
92
|
class RecipeInput:
|
|
161
|
-
input_id:
|
|
162
|
-
input_lot_recipe_id: typing.Optional[
|
|
163
|
-
recipe_step_id:
|
|
93
|
+
input_id: base_t.ObjectId
|
|
94
|
+
input_lot_recipe_id: typing.Optional[base_t.ObjectId]
|
|
95
|
+
recipe_step_id: base_t.ObjectId
|
|
164
96
|
quantity_dec: Decimal
|
|
165
97
|
quantity_json: base_t.JsonValue
|
|
166
98
|
actual_quantity_dec: Decimal
|
|
@@ -169,21 +101,11 @@ class RecipeInput:
|
|
|
169
101
|
behavior: str
|
|
170
102
|
|
|
171
103
|
|
|
172
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
173
|
-
@dataclass(kw_only=True)
|
|
174
|
-
class SimpleInput:
|
|
175
|
-
input_id: int
|
|
176
|
-
quantity_type: str
|
|
177
|
-
name: str
|
|
178
|
-
is_parameter: bool
|
|
179
|
-
intermediate_recipe_id: typing.Optional[int]
|
|
180
|
-
|
|
181
|
-
|
|
182
104
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
183
105
|
@dataclass(kw_only=True)
|
|
184
106
|
class RecipeStep:
|
|
185
107
|
name: typing.Optional[str]
|
|
186
|
-
recipe_step_id:
|
|
108
|
+
recipe_step_id: base_t.ObjectId
|
|
187
109
|
recipe_step_number: int
|
|
188
110
|
instructions: typing.Optional[str] = None
|
|
189
111
|
|
|
@@ -198,19 +120,11 @@ class RecipeStepGroup:
|
|
|
198
120
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
199
121
|
@dataclass(kw_only=True)
|
|
200
122
|
class RecipeWorkflowStep:
|
|
201
|
-
recipe_workflow_step_id:
|
|
202
|
-
workflow_step_id:
|
|
123
|
+
recipe_workflow_step_id: base_t.ObjectId
|
|
124
|
+
workflow_step_id: base_t.ObjectId
|
|
203
125
|
recipe_step_groups: list[RecipeStepGroup]
|
|
204
126
|
|
|
205
127
|
|
|
206
|
-
# DO NOT MODIFY -- This file is generated by type_spec
|
|
207
|
-
@dataclass(kw_only=True)
|
|
208
|
-
class SimpleUser:
|
|
209
|
-
user_id: int
|
|
210
|
-
display_name: str
|
|
211
|
-
email: str
|
|
212
|
-
|
|
213
|
-
|
|
214
128
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
215
129
|
@serial_class(
|
|
216
130
|
to_string_values={"actual_quantity_dec", "quantity_dec"},
|
|
@@ -228,20 +142,20 @@ class RecipeStepRelationship:
|
|
|
228
142
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
229
143
|
@dataclass(kw_only=True)
|
|
230
144
|
class Recipe:
|
|
231
|
-
recipe_id:
|
|
145
|
+
recipe_id: base_t.ObjectId
|
|
232
146
|
create_datetime: str
|
|
233
147
|
last_modified_datetime: str
|
|
234
148
|
name: str
|
|
235
149
|
notes: typing.Optional[str]
|
|
236
|
-
workflow_id:
|
|
237
|
-
metadata: list[RecipeMetadata]
|
|
150
|
+
workflow_id: base_t.ObjectId
|
|
151
|
+
metadata: list[recipe_metadata_t.RecipeMetadata]
|
|
238
152
|
inputs: list[RecipeInput]
|
|
239
153
|
outputs: list[RecipeOutput]
|
|
240
154
|
workflow_steps: list[RecipeWorkflowStep]
|
|
241
|
-
tag_ids: list[
|
|
242
|
-
experiment_group_ids: list[
|
|
155
|
+
tag_ids: list[base_t.ObjectId]
|
|
156
|
+
experiment_group_ids: list[base_t.ObjectId]
|
|
243
157
|
step_relationships: list[RecipeStepRelationship]
|
|
244
|
-
creating_user_id: typing.Optional[
|
|
158
|
+
creating_user_id: typing.Optional[base_t.ObjectId] = None
|
|
245
159
|
barcode_value: typing.Optional[str] = None
|
|
246
160
|
|
|
247
161
|
|
|
@@ -249,12 +163,12 @@ class Recipe:
|
|
|
249
163
|
@dataclass(kw_only=True)
|
|
250
164
|
class Data:
|
|
251
165
|
recipes: list[Recipe]
|
|
252
|
-
workflows: list[SimpleWorkflow]
|
|
253
|
-
metadata: list[SimpleRecipeMetadataField]
|
|
254
|
-
inputs: list[SimpleInput]
|
|
255
|
-
outputs: list[SimpleOutput]
|
|
166
|
+
workflows: list[workflows_t.SimpleWorkflow]
|
|
167
|
+
metadata: list[recipe_metadata_t.SimpleRecipeMetadataField]
|
|
168
|
+
inputs: list[inputs_t.SimpleInput]
|
|
169
|
+
outputs: list[outputs_t.SimpleOutput]
|
|
256
170
|
output_conditions: list[SimpleOutputCondition]
|
|
257
|
-
users: list[SimpleUser]
|
|
258
|
-
recipe_tags: list[SimpleRecipeTag]
|
|
259
|
-
experiment_groups: list[SimpleExperimentGroup]
|
|
171
|
+
users: list[users_t.SimpleUser]
|
|
172
|
+
recipe_tags: list[recipe_tags_t.SimpleRecipeTag]
|
|
173
|
+
experiment_groups: list[experiment_groups_t.SimpleExperimentGroup]
|
|
260
174
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -9,6 +9,7 @@ import datetime # noqa: F401
|
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from dataclasses import dataclass
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
|
+
from ... import base as base_t
|
|
12
13
|
|
|
13
14
|
__all__: list[str] = [
|
|
14
15
|
"Arguments",
|
|
@@ -28,9 +29,9 @@ ENDPOINT_PATH = "api/external/recipes/external_set_recipe_inputs"
|
|
|
28
29
|
)
|
|
29
30
|
@dataclass(kw_only=True)
|
|
30
31
|
class RecipeInputValue:
|
|
31
|
-
recipe_id:
|
|
32
|
-
input_id:
|
|
33
|
-
recipe_step_id: typing.Optional[typing.Optional[
|
|
32
|
+
recipe_id: base_t.ObjectId
|
|
33
|
+
input_id: base_t.ObjectId
|
|
34
|
+
recipe_step_id: typing.Optional[typing.Optional[base_t.ObjectId]] = None
|
|
34
35
|
value_numeric: typing.Optional[Decimal] = None
|
|
35
36
|
value_str: typing.Optional[str] = None
|
|
36
37
|
set_actual_value: typing.Optional[bool] = None
|
|
@@ -9,6 +9,8 @@ import datetime # noqa: F401
|
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from dataclasses import dataclass
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
|
+
from ... import base as base_t
|
|
13
|
+
from ... import response as response_t
|
|
12
14
|
|
|
13
15
|
__all__: list[str] = [
|
|
14
16
|
"Arguments",
|
|
@@ -36,10 +38,10 @@ class CurveValues:
|
|
|
36
38
|
)
|
|
37
39
|
@dataclass(kw_only=True)
|
|
38
40
|
class RecipeOutputValue:
|
|
39
|
-
recipe_id:
|
|
40
|
-
output_id:
|
|
41
|
+
recipe_id: base_t.ObjectId
|
|
42
|
+
output_id: base_t.ObjectId
|
|
41
43
|
experiment_num: int
|
|
42
|
-
condition_id: typing.Optional[
|
|
44
|
+
condition_id: typing.Optional[base_t.ObjectId] = None
|
|
43
45
|
value_numeric: typing.Optional[Decimal] = None
|
|
44
46
|
value_str: typing.Optional[str] = None
|
|
45
47
|
value_curve: typing.Optional[CurveValues] = None
|
|
@@ -52,10 +54,7 @@ class Arguments:
|
|
|
52
54
|
|
|
53
55
|
|
|
54
56
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
55
|
-
@serial_class(
|
|
56
|
-
parse_require={"status"},
|
|
57
|
-
)
|
|
58
57
|
@dataclass(kw_only=True)
|
|
59
|
-
class Data:
|
|
60
|
-
|
|
58
|
+
class Data(response_t.Response):
|
|
59
|
+
pass
|
|
61
60
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402
|
|
4
|
+
# fmt: off
|
|
5
|
+
# isort: skip_file
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import typing # noqa: F401
|
|
8
|
+
import datetime # noqa: F401
|
|
9
|
+
from decimal import Decimal # noqa: F401
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
from . import base as base_t
|
|
12
|
+
|
|
13
|
+
__all__: list[str] = [
|
|
14
|
+
"Calculation",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
+
@dataclass(kw_only=True)
|
|
20
|
+
class Calculation:
|
|
21
|
+
id: base_t.ObjectId
|
|
22
|
+
name: str
|
|
23
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/client_base.py
CHANGED
|
@@ -64,7 +64,7 @@ class ClientMethods(ABC):
|
|
|
64
64
|
def create_entities(
|
|
65
65
|
self,
|
|
66
66
|
*,
|
|
67
|
-
definition_id:
|
|
67
|
+
definition_id: base_t.ObjectId,
|
|
68
68
|
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.TASK], typing.Literal[entity_t.EntityType.PROJECT]],
|
|
69
69
|
entities_to_create: list[create_entities_t.EntityToCreate],
|
|
70
70
|
) -> create_entities_t.Data:
|
|
@@ -84,7 +84,7 @@ class ClientMethods(ABC):
|
|
|
84
84
|
def create_entity(
|
|
85
85
|
self,
|
|
86
86
|
*,
|
|
87
|
-
definition_id:
|
|
87
|
+
definition_id: base_t.ObjectId,
|
|
88
88
|
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.TASK], typing.Literal[entity_t.EntityType.PROJECT]],
|
|
89
89
|
field_values: typing.Optional[typing.Optional[list[field_values_t.FieldRefNameValue]]] = None,
|
|
90
90
|
) -> create_entity_t.Data:
|
|
@@ -120,9 +120,9 @@ class ClientMethods(ABC):
|
|
|
120
120
|
def create_recipes(
|
|
121
121
|
self,
|
|
122
122
|
*,
|
|
123
|
-
material_family_id:
|
|
123
|
+
material_family_id: base_t.ObjectId,
|
|
124
124
|
recipe_definitions: list[create_recipes_t.CreateRecipeDefinition],
|
|
125
|
-
project_id: typing.Optional[
|
|
125
|
+
project_id: typing.Optional[base_t.ObjectId] = None,
|
|
126
126
|
) -> create_recipes_t.Data:
|
|
127
127
|
args = create_recipes_t.Arguments(
|
|
128
128
|
material_family_id=material_family_id,
|
|
@@ -156,7 +156,7 @@ class ClientMethods(ABC):
|
|
|
156
156
|
def get_curve(
|
|
157
157
|
self,
|
|
158
158
|
*,
|
|
159
|
-
recipe_output_id:
|
|
159
|
+
recipe_output_id: base_t.ObjectId,
|
|
160
160
|
) -> get_curve_t.Data:
|
|
161
161
|
args = get_curve_t.Arguments(
|
|
162
162
|
recipe_output_id=recipe_output_id,
|
|
@@ -172,8 +172,8 @@ class ClientMethods(ABC):
|
|
|
172
172
|
def get_entities_data(
|
|
173
173
|
self,
|
|
174
174
|
*,
|
|
175
|
-
entity_ids: list[
|
|
176
|
-
entity_type:
|
|
175
|
+
entity_ids: list[base_t.ObjectId],
|
|
176
|
+
entity_type: entity_t.EntityType,
|
|
177
177
|
) -> get_entities_data_t.Data:
|
|
178
178
|
args = get_entities_data_t.Arguments(
|
|
179
179
|
entity_ids=entity_ids,
|
|
@@ -190,11 +190,11 @@ class ClientMethods(ABC):
|
|
|
190
190
|
def get_input_data(
|
|
191
191
|
self,
|
|
192
192
|
*,
|
|
193
|
-
material_family_id:
|
|
194
|
-
input_ids: typing.Optional[list[
|
|
195
|
-
offset: typing.Optional[int],
|
|
193
|
+
material_family_id: base_t.ObjectId,
|
|
194
|
+
input_ids: typing.Optional[list[base_t.ObjectId]],
|
|
196
195
|
is_parameter: typing.Optional[bool],
|
|
197
|
-
|
|
196
|
+
offset: typing.Optional[typing.Optional[int]] = None,
|
|
197
|
+
limit: typing.Optional[typing.Optional[int]] = None,
|
|
198
198
|
) -> get_input_data_t.Data:
|
|
199
199
|
args = get_input_data_t.Arguments(
|
|
200
200
|
material_family_id=material_family_id,
|
|
@@ -214,7 +214,7 @@ class ClientMethods(ABC):
|
|
|
214
214
|
def get_input_group_names(
|
|
215
215
|
self,
|
|
216
216
|
*,
|
|
217
|
-
material_family_id:
|
|
217
|
+
material_family_id: base_t.ObjectId,
|
|
218
218
|
) -> get_input_group_names_t.Data:
|
|
219
219
|
args = get_input_group_names_t.Arguments(
|
|
220
220
|
material_family_id=material_family_id,
|
|
@@ -230,10 +230,10 @@ class ClientMethods(ABC):
|
|
|
230
230
|
def get_input_names(
|
|
231
231
|
self,
|
|
232
232
|
*,
|
|
233
|
-
material_family_id:
|
|
234
|
-
offset: typing.Optional[int],
|
|
233
|
+
material_family_id: base_t.ObjectId,
|
|
235
234
|
is_parameter: typing.Optional[bool],
|
|
236
|
-
|
|
235
|
+
offset: typing.Optional[typing.Optional[int]] = None,
|
|
236
|
+
limit: typing.Optional[typing.Optional[int]] = None,
|
|
237
237
|
) -> get_input_names_t.Data:
|
|
238
238
|
args = get_input_names_t.Arguments(
|
|
239
239
|
material_family_id=material_family_id,
|
|
@@ -252,7 +252,7 @@ class ClientMethods(ABC):
|
|
|
252
252
|
def get_inputs_data(
|
|
253
253
|
self,
|
|
254
254
|
*,
|
|
255
|
-
input_ids: list[
|
|
255
|
+
input_ids: list[base_t.ObjectId],
|
|
256
256
|
) -> get_inputs_data_t.Data:
|
|
257
257
|
args = get_inputs_data_t.Arguments(
|
|
258
258
|
input_ids=input_ids,
|
|
@@ -268,8 +268,8 @@ class ClientMethods(ABC):
|
|
|
268
268
|
def get_output_data(
|
|
269
269
|
self,
|
|
270
270
|
*,
|
|
271
|
-
material_family_id:
|
|
272
|
-
output_ids: typing.Optional[list[
|
|
271
|
+
material_family_id: base_t.ObjectId,
|
|
272
|
+
output_ids: typing.Optional[list[base_t.ObjectId]] = None,
|
|
273
273
|
offset: typing.Optional[int] = None,
|
|
274
274
|
limit: typing.Optional[int] = None,
|
|
275
275
|
) -> get_output_data_t.Data:
|
|
@@ -290,7 +290,7 @@ class ClientMethods(ABC):
|
|
|
290
290
|
def get_output_names(
|
|
291
291
|
self,
|
|
292
292
|
*,
|
|
293
|
-
material_family_id:
|
|
293
|
+
material_family_id: base_t.ObjectId,
|
|
294
294
|
offset: typing.Optional[int] = None,
|
|
295
295
|
limit: typing.Optional[int] = None,
|
|
296
296
|
) -> get_output_names_t.Data:
|
|
@@ -311,7 +311,7 @@ class ClientMethods(ABC):
|
|
|
311
311
|
self,
|
|
312
312
|
*,
|
|
313
313
|
all_material_families: bool,
|
|
314
|
-
material_family_id: typing.Optional[
|
|
314
|
+
material_family_id: typing.Optional[base_t.ObjectId],
|
|
315
315
|
) -> get_projects_t.Data:
|
|
316
316
|
args = get_projects_t.Arguments(
|
|
317
317
|
all_material_families=all_material_families,
|
|
@@ -328,9 +328,9 @@ class ClientMethods(ABC):
|
|
|
328
328
|
def get_projects_data(
|
|
329
329
|
self,
|
|
330
330
|
*,
|
|
331
|
-
project_ids: list[
|
|
332
|
-
offset: typing.Optional[int],
|
|
333
|
-
limit: typing.Optional[int],
|
|
331
|
+
project_ids: list[base_t.ObjectId],
|
|
332
|
+
offset: typing.Optional[typing.Optional[int]] = None,
|
|
333
|
+
limit: typing.Optional[typing.Optional[int]] = None,
|
|
334
334
|
) -> get_projects_data_t.Data:
|
|
335
335
|
args = get_projects_data_t.Arguments(
|
|
336
336
|
project_ids=project_ids,
|
|
@@ -348,8 +348,8 @@ class ClientMethods(ABC):
|
|
|
348
348
|
def get_recipe_calculations(
|
|
349
349
|
self,
|
|
350
350
|
*,
|
|
351
|
-
recipe_ids: list[
|
|
352
|
-
calculation_ids: typing.Optional[list[
|
|
351
|
+
recipe_ids: list[base_t.ObjectId],
|
|
352
|
+
calculation_ids: typing.Optional[list[base_t.ObjectId]] = None,
|
|
353
353
|
) -> get_recipe_calculations_t.Data:
|
|
354
354
|
args = get_recipe_calculations_t.Arguments(
|
|
355
355
|
recipe_ids=recipe_ids,
|
|
@@ -366,7 +366,7 @@ class ClientMethods(ABC):
|
|
|
366
366
|
def get_recipe_links(
|
|
367
367
|
self,
|
|
368
368
|
*,
|
|
369
|
-
recipe_ids: list[
|
|
369
|
+
recipe_ids: list[base_t.ObjectId],
|
|
370
370
|
depth: int = 1,
|
|
371
371
|
link_types: typing.Optional[list[recipe_links_t.RecipeLinkType]],
|
|
372
372
|
) -> get_recipe_links_t.Data:
|
|
@@ -386,10 +386,10 @@ class ClientMethods(ABC):
|
|
|
386
386
|
def get_recipe_metadata_data(
|
|
387
387
|
self,
|
|
388
388
|
*,
|
|
389
|
-
material_family_id:
|
|
390
|
-
recipe_metadata_ids: typing.Optional[list[
|
|
391
|
-
offset: typing.Optional[int],
|
|
392
|
-
limit: typing.Optional[int],
|
|
389
|
+
material_family_id: base_t.ObjectId,
|
|
390
|
+
recipe_metadata_ids: typing.Optional[list[base_t.ObjectId]],
|
|
391
|
+
offset: typing.Optional[typing.Optional[int]] = None,
|
|
392
|
+
limit: typing.Optional[typing.Optional[int]] = None,
|
|
393
393
|
) -> get_recipe_metadata_data_t.Data:
|
|
394
394
|
args = get_recipe_metadata_data_t.Arguments(
|
|
395
395
|
material_family_id=material_family_id,
|
|
@@ -408,7 +408,7 @@ class ClientMethods(ABC):
|
|
|
408
408
|
def get_recipe_names(
|
|
409
409
|
self,
|
|
410
410
|
*,
|
|
411
|
-
project_id:
|
|
411
|
+
project_id: base_t.ObjectId,
|
|
412
412
|
) -> get_recipe_names_t.Data:
|
|
413
413
|
args = get_recipe_names_t.Arguments(
|
|
414
414
|
project_id=project_id,
|
|
@@ -424,7 +424,7 @@ class ClientMethods(ABC):
|
|
|
424
424
|
def get_recipe_output_metadata(
|
|
425
425
|
self,
|
|
426
426
|
*,
|
|
427
|
-
recipe_output_ids: list[
|
|
427
|
+
recipe_output_ids: list[base_t.ObjectId],
|
|
428
428
|
) -> get_recipe_output_metadata_t.Data:
|
|
429
429
|
args = get_recipe_output_metadata_t.Arguments(
|
|
430
430
|
recipe_output_ids=recipe_output_ids,
|
|
@@ -440,10 +440,10 @@ class ClientMethods(ABC):
|
|
|
440
440
|
def get_recipes_data(
|
|
441
441
|
self,
|
|
442
442
|
*,
|
|
443
|
-
recipe_ids: typing.Optional[list[
|
|
444
|
-
project_id: typing.Optional[
|
|
445
|
-
offset: typing.Optional[int],
|
|
446
|
-
limit: typing.Optional[int],
|
|
443
|
+
recipe_ids: typing.Optional[typing.Optional[list[base_t.ObjectId]]] = None,
|
|
444
|
+
project_id: typing.Optional[typing.Optional[base_t.ObjectId]] = None,
|
|
445
|
+
offset: typing.Optional[typing.Optional[int]] = None,
|
|
446
|
+
limit: typing.Optional[typing.Optional[int]] = None,
|
|
447
447
|
) -> get_recipes_data_t.Data:
|
|
448
448
|
args = get_recipes_data_t.Arguments(
|
|
449
449
|
recipe_ids=recipe_ids,
|
|
@@ -462,11 +462,11 @@ class ClientMethods(ABC):
|
|
|
462
462
|
def list_entities(
|
|
463
463
|
self,
|
|
464
464
|
*,
|
|
465
|
-
entity_type:
|
|
465
|
+
entity_type: entity_t.EntityType,
|
|
466
466
|
config_reference: str,
|
|
467
|
-
offset: typing.Optional[int],
|
|
468
|
-
limit: typing.Optional[int],
|
|
469
467
|
attributes: typing.Optional[dict[OpaqueKey, base_t.JsonValue]] = None,
|
|
468
|
+
offset: typing.Optional[typing.Optional[int]] = None,
|
|
469
|
+
limit: typing.Optional[typing.Optional[int]] = None,
|
|
470
470
|
) -> list_entities_t.Data:
|
|
471
471
|
args = list_entities_t.Arguments(
|
|
472
472
|
entity_type=entity_type,
|
|
@@ -486,8 +486,8 @@ class ClientMethods(ABC):
|
|
|
486
486
|
def resolve_entity_ids(
|
|
487
487
|
self,
|
|
488
488
|
*,
|
|
489
|
-
entity_ids: list[typing.Union[str,
|
|
490
|
-
entity_type:
|
|
489
|
+
entity_ids: list[typing.Union[str, base_t.ObjectId]],
|
|
490
|
+
entity_type: entity_t.EntityType,
|
|
491
491
|
) -> resolve_entity_ids_t.Data:
|
|
492
492
|
args = resolve_entity_ids_t.Arguments(
|
|
493
493
|
entity_ids=entity_ids,
|
|
@@ -568,8 +568,8 @@ class ClientMethods(ABC):
|
|
|
568
568
|
def set_values(
|
|
569
569
|
self,
|
|
570
570
|
*,
|
|
571
|
-
entity:
|
|
572
|
-
values: list[
|
|
571
|
+
entity: entity_t.Entity,
|
|
572
|
+
values: list[field_values_t.ArgumentValueRefName],
|
|
573
573
|
) -> set_values_t.Data:
|
|
574
574
|
args = set_values_t.Arguments(
|
|
575
575
|
entity=entity,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402
|
|
4
|
+
# fmt: off
|
|
5
|
+
# isort: skip_file
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import typing # noqa: F401
|
|
8
|
+
import datetime # noqa: F401
|
|
9
|
+
from decimal import Decimal # noqa: F401
|
|
10
|
+
from pkgs.strenum_compat import StrEnum
|
|
11
|
+
from dataclasses import dataclass
|
|
12
|
+
from pkgs.serialization import serial_class
|
|
13
|
+
from . import base as base_t
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"Curve",
|
|
17
|
+
"CurveAxisType",
|
|
18
|
+
"CurveValue",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
23
|
+
class CurveAxisType(StrEnum):
|
|
24
|
+
NUMERIC = "numeric"
|
|
25
|
+
TIMESTAMP = "timestamp"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
29
|
+
@dataclass(kw_only=True)
|
|
30
|
+
class Curve:
|
|
31
|
+
id: base_t.ObjectId
|
|
32
|
+
x_type: typing.Union[typing.Literal[CurveAxisType.NUMERIC], typing.Literal[CurveAxisType.TIMESTAMP]]
|
|
33
|
+
x_values: list[CurveValue]
|
|
34
|
+
y_type: typing.Union[typing.Literal[CurveAxisType.NUMERIC]]
|
|
35
|
+
y_values: list[CurveValue]
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
39
|
+
@serial_class(
|
|
40
|
+
to_string_values={"quantity"},
|
|
41
|
+
)
|
|
42
|
+
@dataclass(kw_only=True)
|
|
43
|
+
class CurveValue:
|
|
44
|
+
index: int
|
|
45
|
+
quantity: typing.Optional[Decimal] = None
|
|
46
|
+
quantity_timestamp: typing.Optional[datetime.datetime] = None
|
|
47
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/entity.py
CHANGED
|
@@ -10,6 +10,7 @@ from decimal import Decimal # noqa: F401
|
|
|
10
10
|
from pkgs.strenum_compat import StrEnum
|
|
11
11
|
from dataclasses import dataclass
|
|
12
12
|
from pkgs.serialization import serial_string_enum
|
|
13
|
+
from . import base as base_t
|
|
13
14
|
|
|
14
15
|
__all__: list[str] = [
|
|
15
16
|
"Entity",
|
|
@@ -114,6 +115,7 @@ __all__: list[str] = [
|
|
|
114
115
|
"timesheet_entry": "Timesheet Entry",
|
|
115
116
|
"training_run": "Analyze Experiment",
|
|
116
117
|
"training_set": "Training Set",
|
|
118
|
+
"time_series": "Time Series",
|
|
117
119
|
"units": "Units",
|
|
118
120
|
"user_favorite": "User Favorite",
|
|
119
121
|
"user": "User",
|
|
@@ -236,6 +238,7 @@ class EntityType(StrEnum):
|
|
|
236
238
|
TIMESHEET_ENTRY = "timesheet_entry"
|
|
237
239
|
TRAINING_RUN = "training_run"
|
|
238
240
|
TRAINING_SET = "training_set"
|
|
241
|
+
TIME_SERIES = "time_series"
|
|
239
242
|
UNITS = "units"
|
|
240
243
|
USER_FAVORITE = "user_favorite"
|
|
241
244
|
USER = "user"
|
|
@@ -266,6 +269,6 @@ class EntityType(StrEnum):
|
|
|
266
269
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
267
270
|
@dataclass(kw_only=True)
|
|
268
271
|
class Entity:
|
|
269
|
-
id:
|
|
272
|
+
id: base_t.ObjectId
|
|
270
273
|
type: EntityType
|
|
271
274
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402
|
|
4
|
+
# fmt: off
|
|
5
|
+
# isort: skip_file
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import typing # noqa: F401
|
|
8
|
+
import datetime # noqa: F401
|
|
9
|
+
from decimal import Decimal # noqa: F401
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
from . import base as base_t
|
|
12
|
+
|
|
13
|
+
__all__: list[str] = [
|
|
14
|
+
"SimpleExperimentGroup",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
+
@dataclass(kw_only=True)
|
|
20
|
+
class SimpleExperimentGroup:
|
|
21
|
+
experiment_group_id: base_t.ObjectId
|
|
22
|
+
name: str
|
|
23
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|