UncountablePythonSDK 0.0.17__py3-none-any.whl → 0.0.18__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 (42) hide show
  1. {UncountablePythonSDK-0.0.17.dist-info → UncountablePythonSDK-0.0.18.dist-info}/METADATA +1 -1
  2. {UncountablePythonSDK-0.0.17.dist-info → UncountablePythonSDK-0.0.18.dist-info}/RECORD +42 -31
  3. pkgs/argument_parser/_is_enum.py +1 -1
  4. pkgs/argument_parser/argument_parser.py +13 -13
  5. pkgs/serialization/serial_class.py +3 -3
  6. pkgs/serialization_util/_get_type_for_serialization.py +1 -3
  7. pkgs/serialization_util/serialization_helpers.py +1 -3
  8. pkgs/strenum_compat/strenum_compat.py +1 -9
  9. pkgs/type_spec/actions_registry/__main__.py +9 -3
  10. pkgs/type_spec/actions_registry/emit_typescript.py +20 -6
  11. pkgs/type_spec/builder.py +10 -10
  12. pkgs/type_spec/config.py +3 -2
  13. pkgs/type_spec/emit_python.py +19 -16
  14. pkgs/type_spec/emit_typescript.py +2 -2
  15. pkgs/type_spec/emit_typescript_util.py +1 -2
  16. pkgs/type_spec/load_types.py +2 -1
  17. pkgs/type_spec/open_api_util.py +2 -2
  18. pkgs/type_spec/parts/base.py.prepart +2 -1
  19. pkgs/type_spec/util.py +9 -9
  20. pkgs/type_spec/value_spec/__main__.py +2 -2
  21. type_spec/external/api/batch/execute_batch_load_async.yaml +18 -0
  22. type_spec/external/api/id_source/list_id_source.yaml +35 -0
  23. type_spec/external/api/id_source/match_id_source.yaml +32 -0
  24. type_spec/external/api/recipes/create_recipe.yaml +3 -0
  25. type_spec/external/api/recipes/get_recipes_data.yaml +21 -21
  26. type_spec/external/api/recipes/set_recipe_inputs.yaml +3 -0
  27. type_spec/external/api/triggers/run_trigger.yaml +18 -0
  28. uncountable/types/__init__.py +10 -0
  29. uncountable/types/api/batch/execute_batch_load_async.py +35 -0
  30. uncountable/types/api/id_source/__init__.py +1 -0
  31. uncountable/types/api/id_source/list_id_source.py +46 -0
  32. uncountable/types/api/id_source/match_id_source.py +48 -0
  33. uncountable/types/api/recipes/create_recipe.py +2 -0
  34. uncountable/types/api/recipes/set_recipe_inputs.py +1 -0
  35. uncountable/types/api/triggers/__init__.py +1 -0
  36. uncountable/types/api/triggers/run_trigger.py +36 -0
  37. uncountable/types/async_batch.py +22 -0
  38. uncountable/types/base.py +2 -1
  39. uncountable/types/client_base.py +102 -1
  40. uncountable/types/id_source.py +49 -0
  41. {UncountablePythonSDK-0.0.17.dist-info → UncountablePythonSDK-0.0.18.dist-info}/WHEEL +0 -0
  42. {UncountablePythonSDK-0.0.17.dist-info → UncountablePythonSDK-0.0.18.dist-info}/top_level.txt +0 -0
@@ -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: typing.Set[builder.SpecNamespace] = field(default_factory=set)
17
+ namespaces: set[builder.SpecNamespace] = field(default_factory=set)
19
18
 
20
19
 
21
20
  def ts_type_name(name: str) -> str:
@@ -1,5 +1,6 @@
1
1
  import os
2
- from typing import Callable, Optional
2
+ from collections.abc import Callable
3
+ from typing import Optional
3
4
 
4
5
  import yaml
5
6
  from shelljob import fs
@@ -1,5 +1,5 @@
1
1
  from abc import ABC, abstractmethod
2
- from enum import Enum
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(str, Enum):
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, Mapping, Sequence, Any, TYPE_CHECKING
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 Dict, List, Optional, TypeVar, Union
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[List["ParsedTypePath"]] = None
32
+ parameters: Optional[list["ParsedTypePath"]] = None
33
33
  literal_value: Optional[LiteralTypeValue] = None
34
34
 
35
35
 
36
- ParsedTypePath = List[ParsedTypePart]
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: List[str] = []
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: List[str] = re.split(r"([.<>,'])", type_str)
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: List[ParsedTypePath] = []
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: Dict[str, T], allowed: List[str]) -> None:
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) -> List[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: List[str] = re_pattern_split_name.split(name)
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 Type, TypeVar, cast
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_: Type[TypeT]) -> TypeT:
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 / experiments. 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"
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 / experiment within Uncountable system"
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 / experiment that the input was placed in"
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 / experiments"
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 Uncountables recipe structure, where inputs are directly placed"
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 / experiment. 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"
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 / experiments, and can be used to do analysis about what part of a generic process inputs are located in."
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 / experiment"
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 / experiment. Used for joining elsewhere"
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 / experiment. Null when created from automated scripts, such as data transfers, or from the Uncountable implementation team."
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 / experiment was created"
181
+ desc: "When the recipe was created"
182
182
  last_modified_datetime:
183
183
  type: String
184
- desc: "when the recipe / experiment was last modified"
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 / experiment"
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 / experiment. This may be null if there are no notes present"
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 / experiment. Workflows correspond to a set of experimental steps performed, and are referenced in the workflows return object"
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 / experimen. Metadata includes values that are neither ingredients nor process parameters, such as a location of an experiment"
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 / experimen. Uncountable refers to inputs as either ingredients or process parameters."
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 / experimen. These can be of any form referred to in the Uncountable system."
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 / experimen. This is used to reference input values to where they occurred in the experimental process."
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 / experiment
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 / experiment
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:
@@ -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