UncountablePythonSDK 0.0.17__py3-none-any.whl → 0.0.19__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.17.dist-info → UncountablePythonSDK-0.0.19.dist-info}/METADATA +2 -2
- {UncountablePythonSDK-0.0.17.dist-info → UncountablePythonSDK-0.0.19.dist-info}/RECORD +42 -31
- pkgs/argument_parser/_is_enum.py +1 -1
- pkgs/argument_parser/argument_parser.py +13 -13
- pkgs/serialization/serial_class.py +3 -3
- pkgs/serialization_util/_get_type_for_serialization.py +1 -3
- pkgs/serialization_util/serialization_helpers.py +1 -3
- pkgs/strenum_compat/strenum_compat.py +1 -9
- pkgs/type_spec/actions_registry/__main__.py +9 -3
- pkgs/type_spec/actions_registry/emit_typescript.py +20 -6
- pkgs/type_spec/builder.py +10 -10
- pkgs/type_spec/config.py +3 -2
- pkgs/type_spec/emit_python.py +19 -16
- pkgs/type_spec/emit_typescript.py +2 -2
- pkgs/type_spec/emit_typescript_util.py +1 -2
- pkgs/type_spec/load_types.py +2 -1
- pkgs/type_spec/open_api_util.py +2 -2
- pkgs/type_spec/parts/base.py.prepart +2 -1
- pkgs/type_spec/util.py +9 -9
- pkgs/type_spec/value_spec/__main__.py +2 -2
- type_spec/external/api/batch/execute_batch_load_async.yaml +18 -0
- type_spec/external/api/id_source/list_id_source.yaml +35 -0
- type_spec/external/api/id_source/match_id_source.yaml +32 -0
- type_spec/external/api/recipes/create_recipe.yaml +3 -0
- type_spec/external/api/recipes/get_recipes_data.yaml +21 -21
- type_spec/external/api/recipes/set_recipe_inputs.yaml +3 -0
- type_spec/external/api/triggers/run_trigger.yaml +18 -0
- uncountable/types/__init__.py +10 -0
- uncountable/types/api/batch/execute_batch_load_async.py +35 -0
- uncountable/types/api/id_source/__init__.py +1 -0
- uncountable/types/api/id_source/list_id_source.py +46 -0
- uncountable/types/api/id_source/match_id_source.py +48 -0
- uncountable/types/api/recipes/create_recipe.py +2 -0
- uncountable/types/api/recipes/set_recipe_inputs.py +1 -0
- uncountable/types/api/triggers/__init__.py +1 -0
- uncountable/types/api/triggers/run_trigger.py +36 -0
- uncountable/types/async_batch.py +22 -0
- uncountable/types/base.py +2 -1
- uncountable/types/client_base.py +102 -1
- uncountable/types/id_source.py +49 -0
- {UncountablePythonSDK-0.0.17.dist-info → UncountablePythonSDK-0.0.19.dist-info}/WHEEL +0 -0
- {UncountablePythonSDK-0.0.17.dist-info → UncountablePythonSDK-0.0.19.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import io
|
|
2
2
|
import os
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from . import builder, util
|
|
6
6
|
from .builder import SpecTypeDefnObject
|
|
@@ -386,7 +386,7 @@ def refer_to(ctx: EmitTypescriptContext, stype: builder.SpecType) -> str:
|
|
|
386
386
|
|
|
387
387
|
def refer_to_impl(
|
|
388
388
|
ctx: EmitTypescriptContext, stype: builder.SpecType
|
|
389
|
-
) ->
|
|
389
|
+
) -> tuple[str, bool]:
|
|
390
390
|
"""
|
|
391
391
|
@return (string-specific, multiple-types)
|
|
392
392
|
"""
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import io
|
|
2
|
-
import typing
|
|
3
2
|
from dataclasses import dataclass, field
|
|
4
3
|
|
|
5
4
|
from . import builder, util
|
|
@@ -15,7 +14,7 @@ class EmitTypescriptContext:
|
|
|
15
14
|
config: TypeScriptConfig
|
|
16
15
|
out: io.StringIO
|
|
17
16
|
namespace: builder.SpecNamespace
|
|
18
|
-
namespaces:
|
|
17
|
+
namespaces: set[builder.SpecNamespace] = field(default_factory=set)
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
def ts_type_name(name: str) -> str:
|
pkgs/type_spec/load_types.py
CHANGED
pkgs/type_spec/open_api_util.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
|
-
from enum import
|
|
2
|
+
from enum import StrEnum
|
|
3
3
|
from io import UnsupportedOperation
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
@@ -41,7 +41,7 @@ class OpenAPIRefType(OpenAPIType):
|
|
|
41
41
|
return {"$ref": self.source}
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
class OpenAPIPrimitive(
|
|
44
|
+
class OpenAPIPrimitive(StrEnum):
|
|
45
45
|
string = "string"
|
|
46
46
|
boolean = "boolean"
|
|
47
47
|
integer = "integer"
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Types that type_spec will use in the emitted files.
|
|
3
3
|
"""
|
|
4
|
-
from typing import Union,
|
|
4
|
+
from typing import Union, Any, TYPE_CHECKING
|
|
5
|
+
from collections.abc import Mapping, Sequence
|
|
5
6
|
|
|
6
7
|
# These two are part of the core output, thus don't duplicate here
|
|
7
8
|
# from decimal import Decimal
|
pkgs/type_spec/util.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional, TypeVar, Union
|
|
5
5
|
|
|
6
6
|
import regex as re
|
|
7
7
|
|
|
@@ -29,11 +29,11 @@ LiteralTypeValue = Union[str, bool]
|
|
|
29
29
|
class ParsedTypePart:
|
|
30
30
|
name: str
|
|
31
31
|
# An empty list is distinct from None
|
|
32
|
-
parameters: Optional[
|
|
32
|
+
parameters: Optional[list["ParsedTypePath"]] = None
|
|
33
33
|
literal_value: Optional[LiteralTypeValue] = None
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
ParsedTypePath =
|
|
36
|
+
ParsedTypePath = list[ParsedTypePart]
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
@dataclass
|
|
@@ -48,7 +48,7 @@ def consume_parameter(
|
|
|
48
48
|
) -> ConsumedParameter:
|
|
49
49
|
if bits[at] != "'":
|
|
50
50
|
return ConsumedParameter(at=at, part=ParsedTypePart(name=bits[at]))
|
|
51
|
-
quote_stack:
|
|
51
|
+
quote_stack: list[str] = []
|
|
52
52
|
at += 1
|
|
53
53
|
while at < len(bits):
|
|
54
54
|
if bits[at] == "'":
|
|
@@ -68,7 +68,7 @@ def parse_type_str(type_str: str) -> ParsedTypePath:
|
|
|
68
68
|
"""
|
|
69
69
|
IMPROVE: will not detect all errors yet, focuses on correct cases
|
|
70
70
|
"""
|
|
71
|
-
raw_bits:
|
|
71
|
+
raw_bits: list[str] = re.split(r"([.<>,'])", type_str)
|
|
72
72
|
bits = [
|
|
73
73
|
stripped_bit
|
|
74
74
|
for stripped_bit in (padded_bit.strip() for padded_bit in raw_bits)
|
|
@@ -81,7 +81,7 @@ def parse_type_str(type_str: str) -> ParsedTypePath:
|
|
|
81
81
|
cur_path = result
|
|
82
82
|
cur_path.append(cur_part)
|
|
83
83
|
|
|
84
|
-
path_stack:
|
|
84
|
+
path_stack: list[ParsedTypePath] = []
|
|
85
85
|
|
|
86
86
|
at = 1
|
|
87
87
|
while at < len(bits):
|
|
@@ -156,19 +156,19 @@ def is_valid_property_name(name: str) -> bool:
|
|
|
156
156
|
return re_pattern_property_name.match(name) is not None
|
|
157
157
|
|
|
158
158
|
|
|
159
|
-
def check_fields(data:
|
|
159
|
+
def check_fields(data: dict[str, T], allowed: list[str]) -> None:
|
|
160
160
|
for key in data:
|
|
161
161
|
if key not in allowed:
|
|
162
162
|
raise Exception(f"unexpected-field: {key}")
|
|
163
163
|
|
|
164
164
|
|
|
165
|
-
def split_any_name(name: str) ->
|
|
165
|
+
def split_any_name(name: str) -> list[str]:
|
|
166
166
|
"""
|
|
167
167
|
Splits a name on case and underscores.
|
|
168
168
|
myName => [my, name]
|
|
169
169
|
my_name => [my, name]
|
|
170
170
|
"""
|
|
171
|
-
bits:
|
|
171
|
+
bits: list[str] = re_pattern_split_name.split(name)
|
|
172
172
|
return [s.lower() for s in filter(lambda x: x is not None and x != "_", bits)]
|
|
173
173
|
|
|
174
174
|
|
|
@@ -17,7 +17,7 @@ If null is allowed as a legitimate value, such as in conditionals like `if`, the
|
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
import sys
|
|
20
|
-
from typing import
|
|
20
|
+
from typing import TypeVar, cast
|
|
21
21
|
|
|
22
22
|
import regex as re
|
|
23
23
|
import yaml
|
|
@@ -177,7 +177,7 @@ def main() -> None:
|
|
|
177
177
|
raise Exception(f"missing-{key}:{get_where()}")
|
|
178
178
|
return cast(base_t.PureJsonValue, x)
|
|
179
179
|
|
|
180
|
-
def get_as(node: base_t.PureJsonValue, key: str, type_:
|
|
180
|
+
def get_as(node: base_t.PureJsonValue, key: str, type_: type[TypeT]) -> TypeT:
|
|
181
181
|
raw = get(node, key)
|
|
182
182
|
assert isinstance(raw, type_)
|
|
183
183
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/batch/execute_batch_load_async
|
|
5
|
+
function: main.site.app.external.batch.execute_batch_load_async.execute_batch_load_async
|
|
6
|
+
desc: Run multiple API calls via one request
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
type: Object
|
|
10
|
+
properties:
|
|
11
|
+
requests:
|
|
12
|
+
type: List<async_batch.AsyncBatchRequest>
|
|
13
|
+
|
|
14
|
+
Data:
|
|
15
|
+
type: Object
|
|
16
|
+
properties:
|
|
17
|
+
job_id:
|
|
18
|
+
type: ObjectId
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: get
|
|
4
|
+
path: ${external}/id_source/list_id_source
|
|
5
|
+
function: main.site.app.external.id_source.list_id_source.list_id_source
|
|
6
|
+
desc: "Lists id and label pairs"
|
|
7
|
+
Arguments:
|
|
8
|
+
type: Object
|
|
9
|
+
properties:
|
|
10
|
+
spec:
|
|
11
|
+
type: id_source.IdSourceSpec
|
|
12
|
+
desc: "The id source spec to use"
|
|
13
|
+
search_label:
|
|
14
|
+
type: String
|
|
15
|
+
desc: Text to search within the labels to search matches
|
|
16
|
+
offset?:
|
|
17
|
+
type: Optional<Integer>
|
|
18
|
+
desc: "Used for pagination. Pagination is done based on the sorting of the config"
|
|
19
|
+
limit?:
|
|
20
|
+
type: Optional<Integer>
|
|
21
|
+
desc: "The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100"
|
|
22
|
+
|
|
23
|
+
IdName:
|
|
24
|
+
type: Object
|
|
25
|
+
properties:
|
|
26
|
+
id:
|
|
27
|
+
type: Union<ObjectId,String>
|
|
28
|
+
name:
|
|
29
|
+
type: String
|
|
30
|
+
|
|
31
|
+
Data:
|
|
32
|
+
type: Object
|
|
33
|
+
properties:
|
|
34
|
+
results:
|
|
35
|
+
type: List<IdName>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: get
|
|
4
|
+
path: ${external}/id_source/match_id_source
|
|
5
|
+
function: main.site.app.external.id_source.match_id_source.match_id_source
|
|
6
|
+
desc: "Lists id and label pairs"
|
|
7
|
+
Arguments:
|
|
8
|
+
type: Object
|
|
9
|
+
properties:
|
|
10
|
+
spec:
|
|
11
|
+
type: id_source.IdSourceSpec
|
|
12
|
+
desc: "The id source spec to use"
|
|
13
|
+
names:
|
|
14
|
+
type: List<String>
|
|
15
|
+
desc: "The names to match with the id source. At most 10 are allowed at a time"
|
|
16
|
+
|
|
17
|
+
Match:
|
|
18
|
+
type: Object
|
|
19
|
+
properties:
|
|
20
|
+
name:
|
|
21
|
+
type: String
|
|
22
|
+
desc: The name used to match
|
|
23
|
+
ids:
|
|
24
|
+
type: List<Union<ObjectId, String>>
|
|
25
|
+
desc: The list of matches
|
|
26
|
+
|
|
27
|
+
Data:
|
|
28
|
+
type: Object
|
|
29
|
+
properties:
|
|
30
|
+
results:
|
|
31
|
+
type: List<Match>
|
|
32
|
+
convert_value: no_convert
|
|
@@ -27,6 +27,9 @@ Arguments:
|
|
|
27
27
|
identifiers:
|
|
28
28
|
type: recipe_identifiers.RecipeIdentifiers
|
|
29
29
|
desc: A recipe won't be created if it matches the identifier. An identifier must be unique in the schema
|
|
30
|
+
definition_key?:
|
|
31
|
+
type: identifier.IdentifierKey
|
|
32
|
+
desc: The entity definition identifier, default is used if not supplied
|
|
30
33
|
|
|
31
34
|
Data:
|
|
32
35
|
type: Object
|
|
@@ -3,7 +3,7 @@ $endpoint:
|
|
|
3
3
|
method: get
|
|
4
4
|
path: ${external}/recipes/external_get_recipes_data
|
|
5
5
|
function: main.site.app.external.recipes.get_recipes_data.get_recipes_data
|
|
6
|
-
desc: "Gets all data associated with a set of recipes
|
|
6
|
+
desc: "Gets all data associated with a set of recipes. Because Uncountables recipe structure is complex, various data values are exploded out to increase efficiency in parsing, and this page is paginated to prevent too large of return values"
|
|
7
7
|
Arguments:
|
|
8
8
|
type: Object
|
|
9
9
|
properties:
|
|
@@ -22,7 +22,7 @@ Arguments:
|
|
|
22
22
|
|
|
23
23
|
RecipeOutput:
|
|
24
24
|
type: Object
|
|
25
|
-
desc: "A representation of a single measurement associated with a recipe
|
|
25
|
+
desc: "A representation of a single measurement associated with a recipe within Uncountable system"
|
|
26
26
|
properties:
|
|
27
27
|
id:
|
|
28
28
|
type: ObjectId
|
|
@@ -113,7 +113,7 @@ RecipeStep:
|
|
|
113
113
|
desc: "An optional name for the recipe step"
|
|
114
114
|
recipe_step_id:
|
|
115
115
|
type: ObjectId
|
|
116
|
-
desc: "An ID value for the recipe step, used elsewhere to reference the part of the recipe
|
|
116
|
+
desc: "An ID value for the recipe step, used elsewhere to reference the part of the recipe that the input was placed in"
|
|
117
117
|
recipe_step_number:
|
|
118
118
|
type: Integer
|
|
119
119
|
desc: "An ordering for the recipe step, allowing the user to determine the ordering of the steps"
|
|
@@ -126,24 +126,24 @@ RecipeStepGroup:
|
|
|
126
126
|
properties:
|
|
127
127
|
name:
|
|
128
128
|
type: Optional<String>
|
|
129
|
-
desc: "An optional name for the recipe step group. These names are on a per recipe basis, allowing users to individually name sub-components of recipes
|
|
129
|
+
desc: "An optional name for the recipe step group. These names are on a per recipe basis, allowing users to individually name sub-components of recipes"
|
|
130
130
|
recipe_steps:
|
|
131
131
|
type: List<RecipeStep>
|
|
132
|
-
desc: "A listing of recipe steps. Recipe Steps are the base component in
|
|
132
|
+
desc: "A listing of recipe steps. Recipe Steps are the base component in Uncountable's recipe structure, where inputs are directly placed"
|
|
133
133
|
|
|
134
134
|
RecipeWorkflowStep:
|
|
135
135
|
type: Object
|
|
136
|
-
desc: "A workflow step associated with a recipe
|
|
136
|
+
desc: "A workflow step associated with a recipe. Workflow steps are comprised of recipe step groups, in turn comprised of recipe steps, where inputs are located. These groupings exists to give customers the ability to flexibly place inputs into the correct process ordering"
|
|
137
137
|
properties:
|
|
138
138
|
recipe_workflow_step_id:
|
|
139
139
|
type: ObjectId
|
|
140
140
|
desc: "A unique reference for the workflow step within the recipe."
|
|
141
141
|
workflow_step_id:
|
|
142
142
|
type: ObjectId
|
|
143
|
-
desc: "A reference to the workflow_step_id for the workflow. This will be shared across recipes
|
|
143
|
+
desc: "A reference to the workflow_step_id for the workflow. This will be shared across recipes, and can be used to do analysis about what part of a generic process inputs are located in."
|
|
144
144
|
recipe_step_groups:
|
|
145
145
|
type: List<RecipeStepGroup>
|
|
146
|
-
desc: "A listing of recipe step groups within the recipe
|
|
146
|
+
desc: "A listing of recipe step groups within the recipe"
|
|
147
147
|
|
|
148
148
|
RecipeStepRelationship:
|
|
149
149
|
type: Object
|
|
@@ -172,46 +172,46 @@ Recipe:
|
|
|
172
172
|
properties:
|
|
173
173
|
recipe_id:
|
|
174
174
|
type: ObjectId
|
|
175
|
-
desc: "A unique identifier for the recipe
|
|
175
|
+
desc: "A unique identifier for the recipe. Used for joining elsewhere"
|
|
176
176
|
creating_user_id?:
|
|
177
177
|
type: ObjectId
|
|
178
|
-
desc: "The user ID who originally created the recipe
|
|
178
|
+
desc: "The user ID who originally created the recipe. Null when created from automated scripts, such as data transfers, or from the Uncountable implementation team."
|
|
179
179
|
create_datetime:
|
|
180
180
|
type: String
|
|
181
|
-
desc: "When the recipe
|
|
181
|
+
desc: "When the recipe was created"
|
|
182
182
|
last_modified_datetime:
|
|
183
183
|
type: String
|
|
184
|
-
desc: "when the recipe
|
|
184
|
+
desc: "when the recipe was last modified"
|
|
185
185
|
name:
|
|
186
186
|
type: String
|
|
187
|
-
desc: "The full name in the system of the recipe
|
|
187
|
+
desc: "The full name in the system of the recipe"
|
|
188
188
|
notes:
|
|
189
189
|
type: Optional<String>
|
|
190
|
-
desc: "Any notes associated with the recipe
|
|
190
|
+
desc: "Any notes associated with the recipe. This may be null if there are no notes present"
|
|
191
191
|
barcode_value?:
|
|
192
192
|
type: String
|
|
193
193
|
desc: "The value used in the barcoding system to lookup this experiment."
|
|
194
194
|
workflow_id:
|
|
195
195
|
type: ObjectId
|
|
196
|
-
desc: "The workflow ID associated with the recipe
|
|
196
|
+
desc: "The workflow ID associated with the recipe. Workflows correspond to a set of experimental steps performed, and are referenced in the workflows return object"
|
|
197
197
|
metadata:
|
|
198
198
|
type: List<recipe_metadata.RecipeMetadata>
|
|
199
|
-
desc: "Metadata associated with a recipe
|
|
199
|
+
desc: "Metadata associated with a recipe. Metadata includes values that are neither ingredients nor process parameters, such as a location of an experiment"
|
|
200
200
|
inputs:
|
|
201
201
|
type: List<RecipeInput>
|
|
202
|
-
desc: "Inputs and quantities of those inputs associated with a recipe
|
|
202
|
+
desc: "Inputs and quantities of those inputs associated with a recipe. Uncountable refers to inputs as either ingredients or process parameters."
|
|
203
203
|
outputs:
|
|
204
204
|
type: List<RecipeOutput>
|
|
205
|
-
desc: "Outputs and quantities of those outputs associated with a recipe
|
|
205
|
+
desc: "Outputs and quantities of those outputs associated with a recipe. These can be of any form referred to in the Uncountable system."
|
|
206
206
|
workflow_steps:
|
|
207
207
|
type: List<RecipeWorkflowStep>
|
|
208
|
-
desc: "A reference of workflow steps in the recipe
|
|
208
|
+
desc: "A reference of workflow steps in the recipe. This is used to reference input values to where they occurred in the experimental process."
|
|
209
209
|
tag_ids:
|
|
210
210
|
type: List<ObjectId>
|
|
211
|
-
desc: A list of Tag IDs associated with the recipe
|
|
211
|
+
desc: A list of Tag IDs associated with the recipe
|
|
212
212
|
experiment_group_ids:
|
|
213
213
|
type: List<ObjectId>
|
|
214
|
-
desc: A list of experiment group IDs associated with the recipe
|
|
214
|
+
desc: A list of experiment group IDs associated with the recipe
|
|
215
215
|
step_relationships:
|
|
216
216
|
type: List<RecipeStepRelationship>
|
|
217
217
|
|
|
@@ -28,6 +28,9 @@ RecipeInputValue:
|
|
|
28
28
|
lot_recipe_id?:
|
|
29
29
|
type: ObjectId
|
|
30
30
|
desc: The recipe id for a lot to be associated to this recipe input. If the recipe is not a lot, it will be created as a lot.
|
|
31
|
+
remove?:
|
|
32
|
+
type: Boolean
|
|
33
|
+
desc: When true will remove the input from the recipe
|
|
31
34
|
|
|
32
35
|
Arguments:
|
|
33
36
|
type: Object
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/triggers/run_trigger
|
|
5
|
+
function: main.site.app.external.triggers.run_trigger.run_trigger
|
|
6
|
+
desc: "Runs a trigger. Requires admin access"
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
type: Object
|
|
10
|
+
properties:
|
|
11
|
+
entity?:
|
|
12
|
+
type: entity.Entity
|
|
13
|
+
trigger_ref_name:
|
|
14
|
+
type: String
|
|
15
|
+
|
|
16
|
+
Data:
|
|
17
|
+
type: response.Response
|
|
18
|
+
properties:
|
uncountable/types/__init__.py
CHANGED
|
@@ -19,6 +19,7 @@ from .api.recipes import create_recipes as create_recipes_t
|
|
|
19
19
|
from . import curves as curves_t
|
|
20
20
|
from . import entity as entity_t
|
|
21
21
|
from .api.batch import execute_batch as execute_batch_t
|
|
22
|
+
from .api.batch import execute_batch_load_async as execute_batch_load_async_t
|
|
22
23
|
from . import experiment_groups as experiment_groups_t
|
|
23
24
|
from . import field_values as field_values_t
|
|
24
25
|
from . import fields as fields_t
|
|
@@ -38,10 +39,13 @@ from .api.recipe_metadata import get_recipe_metadata_data as get_recipe_metadata
|
|
|
38
39
|
from .api.recipes import get_recipe_names as get_recipe_names_t
|
|
39
40
|
from .api.recipes import get_recipe_output_metadata as get_recipe_output_metadata_t
|
|
40
41
|
from .api.recipes import get_recipes_data as get_recipes_data_t
|
|
42
|
+
from . import id_source as id_source_t
|
|
41
43
|
from . import identifier as identifier_t
|
|
42
44
|
from . import input_attributes as input_attributes_t
|
|
43
45
|
from . import inputs as inputs_t
|
|
44
46
|
from .api.entity import list_entities as list_entities_t
|
|
47
|
+
from .api.id_source import list_id_source as list_id_source_t
|
|
48
|
+
from .api.id_source import match_id_source as match_id_source_t
|
|
45
49
|
from . import outputs as outputs_t
|
|
46
50
|
from . import phases as phases_t
|
|
47
51
|
from . import recipe_identifiers as recipe_identifiers_t
|
|
@@ -52,6 +56,7 @@ from . import recipe_tags as recipe_tags_t
|
|
|
52
56
|
from .api.entity import resolve_entity_ids as resolve_entity_ids_t
|
|
53
57
|
from .api.outputs import resolve_output_conditions as resolve_output_conditions_t
|
|
54
58
|
from . import response as response_t
|
|
59
|
+
from .api.triggers import run_trigger as run_trigger_t
|
|
55
60
|
from .api.inputs import set_input_attribute_values as set_input_attribute_values_t
|
|
56
61
|
from .api.recipes import set_recipe_inputs as set_recipe_inputs_t
|
|
57
62
|
from .api.recipes import set_recipe_metadata as set_recipe_metadata_t
|
|
@@ -79,6 +84,7 @@ __all__: list[str] = [
|
|
|
79
84
|
"curves_t",
|
|
80
85
|
"entity_t",
|
|
81
86
|
"execute_batch_t",
|
|
87
|
+
"execute_batch_load_async_t",
|
|
82
88
|
"experiment_groups_t",
|
|
83
89
|
"field_values_t",
|
|
84
90
|
"fields_t",
|
|
@@ -98,10 +104,13 @@ __all__: list[str] = [
|
|
|
98
104
|
"get_recipe_names_t",
|
|
99
105
|
"get_recipe_output_metadata_t",
|
|
100
106
|
"get_recipes_data_t",
|
|
107
|
+
"id_source_t",
|
|
101
108
|
"identifier_t",
|
|
102
109
|
"input_attributes_t",
|
|
103
110
|
"inputs_t",
|
|
104
111
|
"list_entities_t",
|
|
112
|
+
"list_id_source_t",
|
|
113
|
+
"match_id_source_t",
|
|
105
114
|
"outputs_t",
|
|
106
115
|
"phases_t",
|
|
107
116
|
"recipe_identifiers_t",
|
|
@@ -112,6 +121,7 @@ __all__: list[str] = [
|
|
|
112
121
|
"resolve_entity_ids_t",
|
|
113
122
|
"resolve_output_conditions_t",
|
|
114
123
|
"response_t",
|
|
124
|
+
"run_trigger_t",
|
|
115
125
|
"set_input_attribute_values_t",
|
|
116
126
|
"set_recipe_inputs_t",
|
|
117
127
|
"set_recipe_metadata_t",
|
|
@@ -0,0 +1,35 @@
|
|
|
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 async_batch as async_batch_t
|
|
12
|
+
from ... import base as base_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"Arguments",
|
|
16
|
+
"Data",
|
|
17
|
+
"ENDPOINT_METHOD",
|
|
18
|
+
"ENDPOINT_PATH",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
ENDPOINT_METHOD = "POST"
|
|
22
|
+
ENDPOINT_PATH = "api/external/batch/execute_batch_load_async"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
+
@dataclass(kw_only=True)
|
|
27
|
+
class Arguments:
|
|
28
|
+
requests: list[async_batch_t.AsyncBatchRequest]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
+
@dataclass(kw_only=True)
|
|
33
|
+
class Data:
|
|
34
|
+
job_id: base_t.ObjectId
|
|
35
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
from ... import id_source as id_source_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"Arguments",
|
|
16
|
+
"Data",
|
|
17
|
+
"ENDPOINT_METHOD",
|
|
18
|
+
"ENDPOINT_PATH",
|
|
19
|
+
"IdName",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
ENDPOINT_METHOD = "GET"
|
|
23
|
+
ENDPOINT_PATH = "api/external/id_source/list_id_source"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
27
|
+
@dataclass(kw_only=True)
|
|
28
|
+
class Arguments:
|
|
29
|
+
spec: id_source_t.IdSourceSpec
|
|
30
|
+
search_label: str
|
|
31
|
+
offset: typing.Optional[typing.Optional[int]] = None
|
|
32
|
+
limit: typing.Optional[typing.Optional[int]] = None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
36
|
+
@dataclass(kw_only=True)
|
|
37
|
+
class IdName:
|
|
38
|
+
id: typing.Union[base_t.ObjectId, str]
|
|
39
|
+
name: str
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
43
|
+
@dataclass(kw_only=True)
|
|
44
|
+
class Data:
|
|
45
|
+
results: list[IdName]
|
|
46
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,48 @@
|
|
|
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 pkgs.serialization import serial_class
|
|
12
|
+
from ... import base as base_t
|
|
13
|
+
from ... import id_source as id_source_t
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"Arguments",
|
|
17
|
+
"Data",
|
|
18
|
+
"ENDPOINT_METHOD",
|
|
19
|
+
"ENDPOINT_PATH",
|
|
20
|
+
"Match",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
ENDPOINT_METHOD = "GET"
|
|
24
|
+
ENDPOINT_PATH = "api/external/id_source/match_id_source"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
+
@dataclass(kw_only=True)
|
|
29
|
+
class Arguments:
|
|
30
|
+
spec: id_source_t.IdSourceSpec
|
|
31
|
+
names: list[str]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
+
@dataclass(kw_only=True)
|
|
36
|
+
class Match:
|
|
37
|
+
name: str
|
|
38
|
+
ids: list[typing.Union[base_t.ObjectId, str]]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
42
|
+
@serial_class(
|
|
43
|
+
unconverted_values={"results"},
|
|
44
|
+
)
|
|
45
|
+
@dataclass(kw_only=True)
|
|
46
|
+
class Data:
|
|
47
|
+
results: list[Match]
|
|
48
|
+
# 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 ... import base as base_t
|
|
12
|
+
from ... import identifier as identifier_t
|
|
12
13
|
from ... import recipe_identifiers as recipe_identifiers_t
|
|
13
14
|
from ... import recipe_metadata as recipe_metadata_t
|
|
14
15
|
|
|
@@ -32,6 +33,7 @@ class Arguments:
|
|
|
32
33
|
name: typing.Optional[str] = None
|
|
33
34
|
workflow_variant_id: typing.Optional[typing.Optional[base_t.ObjectId]] = None
|
|
34
35
|
recipe_metadata: typing.Optional[list[recipe_metadata_t.MetadataValue]] = None
|
|
36
|
+
definition_key: typing.Optional[identifier_t.IdentifierKey] = None
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -36,6 +36,7 @@ class RecipeInputValue:
|
|
|
36
36
|
value_str: typing.Optional[str] = None
|
|
37
37
|
set_actual_value: typing.Optional[bool] = None
|
|
38
38
|
lot_recipe_id: typing.Optional[base_t.ObjectId] = None
|
|
39
|
+
remove: typing.Optional[bool] = None
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,36 @@
|
|
|
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 entity as entity_t
|
|
12
|
+
from ... import response as response_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"Arguments",
|
|
16
|
+
"Data",
|
|
17
|
+
"ENDPOINT_METHOD",
|
|
18
|
+
"ENDPOINT_PATH",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
ENDPOINT_METHOD = "POST"
|
|
22
|
+
ENDPOINT_PATH = "api/external/triggers/run_trigger"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
+
@dataclass(kw_only=True)
|
|
27
|
+
class Arguments:
|
|
28
|
+
trigger_ref_name: str
|
|
29
|
+
entity: typing.Optional[entity_t.Entity] = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
33
|
+
@dataclass(kw_only=True)
|
|
34
|
+
class Data(response_t.Response):
|
|
35
|
+
pass
|
|
36
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|