UncountablePythonSDK 0.0.101__py3-none-any.whl → 0.0.104__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.
- docs/justfile +2 -2
- examples/integration-server/jobs/materials_auto/example_wh.py +4 -0
- examples/integration-server/pyproject.toml +4 -4
- pkgs/argument_parser/__init__.py +1 -0
- pkgs/argument_parser/argument_parser.py +30 -20
- pkgs/serialization/serial_class.py +21 -10
- pkgs/type_spec/builder.py +3 -7
- pkgs/type_spec/config.py +5 -1
- pkgs/type_spec/emit_open_api.py +23 -13
- pkgs/type_spec/emit_open_api_util.py +0 -1
- pkgs/type_spec/emit_python.py +13 -1
- pkgs/type_spec/type_info/__main__.py +3 -1
- pkgs/type_spec/type_info/emit_type_info.py +34 -5
- uncountable/core/client.py +2 -2
- uncountable/integration/telemetry.py +1 -1
- uncountable/types/__init__.py +4 -0
- uncountable/types/api/entity/lookup_entity.py +100 -0
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/edit_recipe_inputs.py +2 -0
- uncountable/types/api/recipes/get_recipe_links.py +1 -0
- uncountable/types/api/recipes/lock_recipes.py +1 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +10 -0
- uncountable/types/api/recipes/unlock_recipes.py +1 -0
- uncountable/types/async_batch_processor.py +34 -0
- uncountable/types/async_batch_t.py +2 -0
- uncountable/types/client_base.py +26 -0
- uncountable/types/client_config_t.py +1 -0
- uncountable/types/entity_t.py +5 -1
- uncountable/types/field_values.py +4 -0
- uncountable/types/field_values_t.py +50 -1
- uncountable/types/generic_upload_t.py +1 -0
- uncountable/types/job_definition_t.py +2 -0
- uncountable/types/recipe_workflow_steps_t.py +1 -0
- uncountable/types/response_t.py +1 -0
- {UncountablePythonSDK-0.0.101.dist-info → uncountablepythonsdk-0.0.104.dist-info}/METADATA +2 -2
- {UncountablePythonSDK-0.0.101.dist-info → uncountablepythonsdk-0.0.104.dist-info}/RECORD +38 -36
- {UncountablePythonSDK-0.0.101.dist-info → uncountablepythonsdk-0.0.104.dist-info}/WHEEL +1 -1
- {UncountablePythonSDK-0.0.101.dist-info → uncountablepythonsdk-0.0.104.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import typing # noqa: F401
|
|
7
|
+
import datetime # noqa: F401
|
|
8
|
+
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from pkgs.serialization import serial_union_annotation
|
|
13
|
+
from ... import async_batch_t
|
|
14
|
+
from ... import base_t
|
|
15
|
+
from ... import entity_t
|
|
16
|
+
from ... import identifier_t
|
|
17
|
+
|
|
18
|
+
__all__: list[str] = [
|
|
19
|
+
"Arguments",
|
|
20
|
+
"Data",
|
|
21
|
+
"ENDPOINT_METHOD",
|
|
22
|
+
"ENDPOINT_PATH",
|
|
23
|
+
"LookupEntityFieldValue",
|
|
24
|
+
"LookupEntityQuery",
|
|
25
|
+
"LookupEntityQueryBase",
|
|
26
|
+
"LookupEntityQueryType",
|
|
27
|
+
"LookupFieldArgumentValue",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
ENDPOINT_METHOD = "GET"
|
|
31
|
+
ENDPOINT_PATH = "api/external/entity/lookup_entity"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
+
class LookupEntityQueryType(StrEnum):
|
|
36
|
+
FIELD_VALUE = "field_value"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
|
+
@serial_class(
|
|
41
|
+
named_type_path="sdk.api.entity.lookup_entity.LookupEntityQueryBase",
|
|
42
|
+
)
|
|
43
|
+
@dataclasses.dataclass(kw_only=True)
|
|
44
|
+
class LookupEntityQueryBase:
|
|
45
|
+
type: LookupEntityQueryType
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
49
|
+
@serial_class(
|
|
50
|
+
named_type_path="sdk.api.entity.lookup_entity.LookupFieldArgumentValue",
|
|
51
|
+
unconverted_values={"field_value"},
|
|
52
|
+
)
|
|
53
|
+
@dataclasses.dataclass(kw_only=True)
|
|
54
|
+
class LookupFieldArgumentValue:
|
|
55
|
+
field_key: identifier_t.IdentifierKey
|
|
56
|
+
field_value: base_t.JsonValue
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
60
|
+
@serial_class(
|
|
61
|
+
named_type_path="sdk.api.entity.lookup_entity.LookupEntityFieldValue",
|
|
62
|
+
parse_require={"type"},
|
|
63
|
+
)
|
|
64
|
+
@dataclasses.dataclass(kw_only=True)
|
|
65
|
+
class LookupEntityFieldValue:
|
|
66
|
+
type: typing.Literal[LookupEntityQueryType.FIELD_VALUE] = LookupEntityQueryType.FIELD_VALUE
|
|
67
|
+
value: LookupFieldArgumentValue
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
71
|
+
LookupEntityQuery = typing.Annotated[
|
|
72
|
+
typing.Union[LookupEntityFieldValue],
|
|
73
|
+
serial_union_annotation(
|
|
74
|
+
named_type_path="sdk.api.entity.lookup_entity.LookupEntityQuery",
|
|
75
|
+
discriminator="type",
|
|
76
|
+
discriminator_map={
|
|
77
|
+
"field_value": LookupEntityFieldValue,
|
|
78
|
+
},
|
|
79
|
+
),
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
84
|
+
@serial_class(
|
|
85
|
+
named_type_path="sdk.api.entity.lookup_entity.Arguments",
|
|
86
|
+
)
|
|
87
|
+
@dataclasses.dataclass(kw_only=True)
|
|
88
|
+
class Arguments:
|
|
89
|
+
entity_type: entity_t.EntityType
|
|
90
|
+
query: LookupEntityQuery
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
94
|
+
@serial_class(
|
|
95
|
+
named_type_path="sdk.api.entity.lookup_entity.Data",
|
|
96
|
+
)
|
|
97
|
+
@dataclasses.dataclass(kw_only=True)
|
|
98
|
+
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
99
|
+
pass
|
|
100
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
import typing # noqa: F401
|
|
7
|
+
import datetime # noqa: F401
|
|
8
|
+
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
10
|
+
import dataclasses
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
12
|
+
from ... import async_batch_t
|
|
13
|
+
from ... import identifier_t
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"Arguments",
|
|
17
|
+
"Data",
|
|
18
|
+
"ENDPOINT_METHOD",
|
|
19
|
+
"ENDPOINT_PATH",
|
|
20
|
+
"OnTimepointConflict",
|
|
21
|
+
"TimeSeriesDatum",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
ENDPOINT_METHOD = "POST"
|
|
25
|
+
ENDPOINT_PATH = "api/external/recipes/external_add_time_series_data"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
29
|
+
class OnTimepointConflict(StrEnum):
|
|
30
|
+
OVERWRITE = "overwrite"
|
|
31
|
+
ERROR = "error"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
+
@serial_class(
|
|
36
|
+
named_type_path="sdk.api.recipes.add_time_series_data.TimeSeriesDatum",
|
|
37
|
+
to_string_values={"value"},
|
|
38
|
+
)
|
|
39
|
+
@dataclasses.dataclass(kw_only=True)
|
|
40
|
+
class TimeSeriesDatum:
|
|
41
|
+
timestamp: datetime.datetime
|
|
42
|
+
value: Decimal | None = None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
46
|
+
@serial_class(
|
|
47
|
+
named_type_path="sdk.api.recipes.add_time_series_data.Arguments",
|
|
48
|
+
explicit_defaults={"on_conflict"},
|
|
49
|
+
)
|
|
50
|
+
@dataclasses.dataclass(kw_only=True)
|
|
51
|
+
class Arguments:
|
|
52
|
+
time_series_segment_key: identifier_t.IdentifierKey
|
|
53
|
+
time_series_data: list[TimeSeriesDatum]
|
|
54
|
+
on_conflict: OnTimepointConflict = OnTimepointConflict.ERROR
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
58
|
+
@serial_class(
|
|
59
|
+
named_type_path="sdk.api.recipes.add_time_series_data.Data",
|
|
60
|
+
)
|
|
61
|
+
@dataclasses.dataclass(kw_only=True)
|
|
62
|
+
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
63
|
+
pass
|
|
64
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -81,6 +81,7 @@ class RecipeInputEditClearInputs(RecipeInputEditBase):
|
|
|
81
81
|
@serial_class(
|
|
82
82
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditInputBase",
|
|
83
83
|
to_string_values={"value_numeric"},
|
|
84
|
+
explicit_defaults={"input_value_type", "quantity_basis"},
|
|
84
85
|
)
|
|
85
86
|
@dataclasses.dataclass(kw_only=True)
|
|
86
87
|
class RecipeInputEditInputBase(RecipeInputEditBase):
|
|
@@ -196,6 +197,7 @@ class PlaceholderDisplayMode(StrEnum):
|
|
|
196
197
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
197
198
|
@serial_class(
|
|
198
199
|
named_type_path="sdk.api.recipes.edit_recipe_inputs.PlaceholderBase",
|
|
200
|
+
explicit_defaults={"display_mode", "require_for_creation"},
|
|
199
201
|
)
|
|
200
202
|
@dataclasses.dataclass(kw_only=True)
|
|
201
203
|
class PlaceholderBase:
|
|
@@ -25,6 +25,7 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_links"
|
|
|
25
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
26
|
@serial_class(
|
|
27
27
|
named_type_path="sdk.api.recipes.get_recipe_links.Arguments",
|
|
28
|
+
explicit_defaults={"depth"},
|
|
28
29
|
)
|
|
29
30
|
@dataclasses.dataclass(kw_only=True)
|
|
30
31
|
class Arguments:
|
|
@@ -6,6 +6,7 @@ from __future__ import annotations
|
|
|
6
6
|
import typing # noqa: F401
|
|
7
7
|
import datetime # noqa: F401
|
|
8
8
|
from decimal import Decimal # noqa: F401
|
|
9
|
+
from enum import StrEnum
|
|
9
10
|
import dataclasses
|
|
10
11
|
from pkgs.serialization import serial_class
|
|
11
12
|
from ... import base_t
|
|
@@ -19,6 +20,7 @@ __all__: list[str] = [
|
|
|
19
20
|
"Data",
|
|
20
21
|
"ENDPOINT_METHOD",
|
|
21
22
|
"ENDPOINT_PATH",
|
|
23
|
+
"NullBehavior",
|
|
22
24
|
"RecipeOutputValue",
|
|
23
25
|
]
|
|
24
26
|
|
|
@@ -36,16 +38,24 @@ class CurveValues:
|
|
|
36
38
|
y_values: list[Decimal | None]
|
|
37
39
|
|
|
38
40
|
|
|
41
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
42
|
+
class NullBehavior(StrEnum):
|
|
43
|
+
DO_NOTHING = "do_nothing"
|
|
44
|
+
ENSURE_EXISTS = "ensure_exists"
|
|
45
|
+
|
|
46
|
+
|
|
39
47
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
48
|
@serial_class(
|
|
41
49
|
named_type_path="sdk.api.recipes.set_recipe_outputs.RecipeOutputValue",
|
|
42
50
|
to_string_values={"value_numeric"},
|
|
51
|
+
explicit_defaults={"null_behavior"},
|
|
43
52
|
)
|
|
44
53
|
@dataclasses.dataclass(kw_only=True)
|
|
45
54
|
class RecipeOutputValue:
|
|
46
55
|
recipe_id: base_t.ObjectId
|
|
47
56
|
output_id: base_t.ObjectId
|
|
48
57
|
experiment_num: int
|
|
58
|
+
null_behavior: NullBehavior | None = NullBehavior.DO_NOTHING
|
|
49
59
|
condition_id: base_t.ObjectId | None = None
|
|
50
60
|
value_numeric: Decimal | None = None
|
|
51
61
|
value_str: str | None = None
|
|
@@ -31,6 +31,7 @@ class RecipeUnlockType(StrEnum):
|
|
|
31
31
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
32
|
@serial_class(
|
|
33
33
|
named_type_path="sdk.api.recipes.unlock_recipes.Arguments",
|
|
34
|
+
explicit_defaults={"type"},
|
|
34
35
|
)
|
|
35
36
|
@dataclasses.dataclass(kw_only=True)
|
|
36
37
|
class Arguments:
|
|
@@ -22,6 +22,7 @@ from uncountable.types import generic_upload_t
|
|
|
22
22
|
import uncountable.types.api.entity.grant_entity_permissions as grant_entity_permissions_t
|
|
23
23
|
from uncountable.types import identifier_t
|
|
24
24
|
import uncountable.types.api.uploader.invoke_uploader as invoke_uploader_t
|
|
25
|
+
import uncountable.types.api.entity.lookup_entity as lookup_entity_t
|
|
25
26
|
from uncountable.types import recipe_identifiers_t
|
|
26
27
|
from uncountable.types import recipe_metadata_t
|
|
27
28
|
from uncountable.types import recipe_workflow_steps_t
|
|
@@ -386,6 +387,39 @@ class AsyncBatchProcessorBase(ABC):
|
|
|
386
387
|
batch_reference=req.batch_reference,
|
|
387
388
|
)
|
|
388
389
|
|
|
390
|
+
def lookup_entity(
|
|
391
|
+
self,
|
|
392
|
+
*,
|
|
393
|
+
entity_type: entity_t.EntityType,
|
|
394
|
+
query: lookup_entity_t.LookupEntityQuery,
|
|
395
|
+
depends_on: list[str] | None = None,
|
|
396
|
+
) -> async_batch_t.QueuedAsyncBatchRequest:
|
|
397
|
+
"""Look up an entity based on an identifier or field values
|
|
398
|
+
|
|
399
|
+
:param depends_on: A list of batch reference keys to process before processing this request
|
|
400
|
+
"""
|
|
401
|
+
args = lookup_entity_t.Arguments(
|
|
402
|
+
entity_type=entity_type,
|
|
403
|
+
query=query,
|
|
404
|
+
)
|
|
405
|
+
json_data = serialize_for_api(args)
|
|
406
|
+
|
|
407
|
+
batch_reference = str(uuid.uuid4())
|
|
408
|
+
|
|
409
|
+
req = async_batch_t.AsyncBatchRequest(
|
|
410
|
+
path=async_batch_t.AsyncBatchRequestPath.LOOKUP_ENTITY,
|
|
411
|
+
data=json_data,
|
|
412
|
+
depends_on=depends_on,
|
|
413
|
+
batch_reference=batch_reference,
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
self._enqueue(req)
|
|
417
|
+
|
|
418
|
+
return async_batch_t.QueuedAsyncBatchRequest(
|
|
419
|
+
path=req.path,
|
|
420
|
+
batch_reference=req.batch_reference,
|
|
421
|
+
)
|
|
422
|
+
|
|
389
423
|
def set_entity_field_values(
|
|
390
424
|
self,
|
|
391
425
|
*,
|
|
@@ -39,6 +39,8 @@ class AsyncBatchRequestPath(StrEnum):
|
|
|
39
39
|
SET_ENTITY_FIELD_VALUES = "entity/set_entity_field_values"
|
|
40
40
|
ASSOCIATE_RECIPE_AS_LOT = "recipes/associate_recipe_as_lot"
|
|
41
41
|
CREATE_OR_UPDATE_ENTITY = "entity/create_or_update_entity"
|
|
42
|
+
ADD_TIME_SERIES_DATA = "recipes/add_time_series_data"
|
|
43
|
+
LOOKUP_ENTITY = "entity/lookup_entity"
|
|
42
44
|
|
|
43
45
|
|
|
44
46
|
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/client_base.py
CHANGED
|
@@ -9,6 +9,7 @@ import datetime # noqa: F401
|
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from pkgs.serialization import OpaqueKey
|
|
11
11
|
import uncountable.types.api.recipes.add_recipe_to_project as add_recipe_to_project_t
|
|
12
|
+
import uncountable.types.api.recipes.add_time_series_data as add_time_series_data_t
|
|
12
13
|
import uncountable.types.api.recipes.archive_recipes as archive_recipes_t
|
|
13
14
|
import uncountable.types.api.equipment.associate_equipment_input as associate_equipment_input_t
|
|
14
15
|
import uncountable.types.api.recipes.associate_recipe_as_input as associate_recipe_as_input_t
|
|
@@ -128,6 +129,31 @@ class ClientMethods(ABC):
|
|
|
128
129
|
)
|
|
129
130
|
return self.do_request(api_request=api_request, return_type=add_recipe_to_project_t.Data)
|
|
130
131
|
|
|
132
|
+
def external_add_time_series_data(
|
|
133
|
+
self,
|
|
134
|
+
*,
|
|
135
|
+
time_series_segment_key: identifier_t.IdentifierKey,
|
|
136
|
+
time_series_data: list[add_time_series_data_t.TimeSeriesDatum],
|
|
137
|
+
on_conflict: add_time_series_data_t.OnTimepointConflict = add_time_series_data_t.OnTimepointConflict.ERROR,
|
|
138
|
+
) -> add_time_series_data_t.Data:
|
|
139
|
+
"""Add timepoint data to a time series segment.
|
|
140
|
+
|
|
141
|
+
:param time_series_segment_key: The time series segment to add data to
|
|
142
|
+
:param time_series_data: The data to add to the time series segment
|
|
143
|
+
:param on_conflict: What to do if a TimeSeriesDatum already exists at the same timestamp
|
|
144
|
+
"""
|
|
145
|
+
args = add_time_series_data_t.Arguments(
|
|
146
|
+
time_series_segment_key=time_series_segment_key,
|
|
147
|
+
time_series_data=time_series_data,
|
|
148
|
+
on_conflict=on_conflict,
|
|
149
|
+
)
|
|
150
|
+
api_request = APIRequest(
|
|
151
|
+
method=add_time_series_data_t.ENDPOINT_METHOD,
|
|
152
|
+
endpoint=add_time_series_data_t.ENDPOINT_PATH,
|
|
153
|
+
args=args,
|
|
154
|
+
)
|
|
155
|
+
return self.do_request(api_request=api_request, return_type=add_time_series_data_t.Data)
|
|
156
|
+
|
|
131
157
|
def archive_recipes(
|
|
132
158
|
self,
|
|
133
159
|
*,
|
|
@@ -17,6 +17,7 @@ __all__: list[str] = [
|
|
|
17
17
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
18
18
|
@serial_class(
|
|
19
19
|
named_type_path="sdk.client_config.ClientConfigOptions",
|
|
20
|
+
explicit_defaults={"allow_insecure_tls"},
|
|
20
21
|
)
|
|
21
22
|
@dataclasses.dataclass(kw_only=True)
|
|
22
23
|
class ClientConfigOptions:
|
uncountable/types/entity_t.py
CHANGED
|
@@ -49,6 +49,7 @@ __all__: list[str] = [
|
|
|
49
49
|
"doe_run": "Suggest Experiments",
|
|
50
50
|
"email_record_external": "External Emails",
|
|
51
51
|
"email_relay_server": "Email Relay Server",
|
|
52
|
+
"enter_measurement_view_preference": "Enter Measurement View Preference",
|
|
52
53
|
"enter_recipe_view_preference": "Enter Experiment View Preference",
|
|
53
54
|
"entities_viewed": "Entities Viewed",
|
|
54
55
|
"entity_annotation": "Annotation",
|
|
@@ -150,6 +151,7 @@ __all__: list[str] = [
|
|
|
150
151
|
"task": "Task",
|
|
151
152
|
"task_board": "Task Board",
|
|
152
153
|
"template": "Template",
|
|
154
|
+
"time_series_segment": "Time Series Segment",
|
|
153
155
|
"timesheet_entry": "Timesheet Entry",
|
|
154
156
|
"training_run": "Analyze Experiment",
|
|
155
157
|
"training_run_template": "Scheduled Training Run",
|
|
@@ -208,6 +210,7 @@ class EntityType(StrEnum):
|
|
|
208
210
|
DOE_RUN = "doe_run"
|
|
209
211
|
EMAIL_RECORD_EXTERNAL = "email_record_external"
|
|
210
212
|
EMAIL_RELAY_SERVER = "email_relay_server"
|
|
213
|
+
ENTER_MEASUREMENT_VIEW_PREFERENCE = "enter_measurement_view_preference"
|
|
211
214
|
ENTER_RECIPE_VIEW_PREFERENCE = "enter_recipe_view_preference"
|
|
212
215
|
ENTITIES_VIEWED = "entities_viewed"
|
|
213
216
|
ENTITY_ANNOTATION = "entity_annotation"
|
|
@@ -309,6 +312,7 @@ class EntityType(StrEnum):
|
|
|
309
312
|
TASK = "task"
|
|
310
313
|
TASK_BOARD = "task_board"
|
|
311
314
|
TEMPLATE = "template"
|
|
315
|
+
TIME_SERIES_SEGMENT = "time_series_segment"
|
|
312
316
|
TIMESHEET_ENTRY = "timesheet_entry"
|
|
313
317
|
TRAINING_RUN = "training_run"
|
|
314
318
|
TRAINING_RUN_TEMPLATE = "training_run_template"
|
|
@@ -346,7 +350,7 @@ class EntityType(StrEnum):
|
|
|
346
350
|
|
|
347
351
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
348
352
|
LimitedEntityType = typing.Annotated[
|
|
349
|
-
typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL],
|
|
353
|
+
typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT],
|
|
350
354
|
serial_alias_annotation(
|
|
351
355
|
named_type_path="sdk.entity.LimitedEntityType",
|
|
352
356
|
),
|
|
@@ -10,12 +10,16 @@ from .field_values_t import ArgumentValueId as ArgumentValueId
|
|
|
10
10
|
from .field_values_t import FieldValueType as FieldValueType
|
|
11
11
|
from .field_values_t import FieldValueBase as FieldValueBase
|
|
12
12
|
from .field_values_t import FieldValueFiles as FieldValueFiles
|
|
13
|
+
from .field_values_t import ValueResolution as ValueResolution
|
|
14
|
+
from .field_values_t import FieldValueFieldOption as FieldValueFieldOption
|
|
15
|
+
from .field_values_t import FieldValueFieldOptions as FieldValueFieldOptions
|
|
13
16
|
from .field_values_t import FieldValueId as FieldValueId
|
|
14
17
|
from .field_values_t import FieldValueIds as FieldValueIds
|
|
15
18
|
from .field_values_t import FieldValueText as FieldValueText
|
|
16
19
|
from .field_values_t import FieldValueBoolean as FieldValueBoolean
|
|
17
20
|
from .field_values_t import FieldValueNumeric as FieldValueNumeric
|
|
18
21
|
from .field_values_t import FieldValueBatchReference as FieldValueBatchReference
|
|
22
|
+
from .field_values_t import FieldValueNull as FieldValueNull
|
|
19
23
|
from .field_values_t import FieldValue as FieldValue
|
|
20
24
|
from .field_values_t import FieldArgumentValue as FieldArgumentValue
|
|
21
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -24,12 +24,16 @@ __all__: list[str] = [
|
|
|
24
24
|
"FieldValueBase",
|
|
25
25
|
"FieldValueBatchReference",
|
|
26
26
|
"FieldValueBoolean",
|
|
27
|
+
"FieldValueFieldOption",
|
|
28
|
+
"FieldValueFieldOptions",
|
|
27
29
|
"FieldValueFiles",
|
|
28
30
|
"FieldValueId",
|
|
29
31
|
"FieldValueIds",
|
|
32
|
+
"FieldValueNull",
|
|
30
33
|
"FieldValueNumeric",
|
|
31
34
|
"FieldValueText",
|
|
32
35
|
"FieldValueType",
|
|
36
|
+
"ValueResolution",
|
|
33
37
|
]
|
|
34
38
|
|
|
35
39
|
|
|
@@ -91,6 +95,9 @@ class FieldValueType(StrEnum):
|
|
|
91
95
|
BOOLEAN = "boolean"
|
|
92
96
|
NUMERIC = "numeric"
|
|
93
97
|
BATCH_REFERENCE = "batch_reference"
|
|
98
|
+
FIELD_OPTION = "field_option"
|
|
99
|
+
FIELD_OPTIONS = "field_options"
|
|
100
|
+
NULL_VALUE = "null_value"
|
|
94
101
|
|
|
95
102
|
|
|
96
103
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -113,6 +120,38 @@ class FieldValueFiles(FieldValueBase):
|
|
|
113
120
|
file_ids: list[base_t.ObjectId]
|
|
114
121
|
|
|
115
122
|
|
|
123
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
124
|
+
class ValueResolution(StrEnum):
|
|
125
|
+
DIRECT = "direct"
|
|
126
|
+
LABEL = "label"
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
130
|
+
@serial_class(
|
|
131
|
+
named_type_path="sdk.field_values.FieldValueFieldOption",
|
|
132
|
+
parse_require={"type"},
|
|
133
|
+
explicit_defaults={"value_resolution"},
|
|
134
|
+
)
|
|
135
|
+
@dataclasses.dataclass(kw_only=True)
|
|
136
|
+
class FieldValueFieldOption(FieldValueBase):
|
|
137
|
+
type: typing.Literal[FieldValueType.FIELD_OPTION] = FieldValueType.FIELD_OPTION
|
|
138
|
+
value: str
|
|
139
|
+
value_resolution: ValueResolution = ValueResolution.DIRECT
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
143
|
+
@serial_class(
|
|
144
|
+
named_type_path="sdk.field_values.FieldValueFieldOptions",
|
|
145
|
+
parse_require={"type"},
|
|
146
|
+
explicit_defaults={"value_resolution"},
|
|
147
|
+
)
|
|
148
|
+
@dataclasses.dataclass(kw_only=True)
|
|
149
|
+
class FieldValueFieldOptions(FieldValueBase):
|
|
150
|
+
type: typing.Literal[FieldValueType.FIELD_OPTIONS] = FieldValueType.FIELD_OPTIONS
|
|
151
|
+
value: list[str]
|
|
152
|
+
value_resolution: ValueResolution = ValueResolution.DIRECT
|
|
153
|
+
|
|
154
|
+
|
|
116
155
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
117
156
|
@serial_class(
|
|
118
157
|
named_type_path="sdk.field_values.FieldValueId",
|
|
@@ -183,9 +222,19 @@ class FieldValueBatchReference(FieldValueBase):
|
|
|
183
222
|
data_key: str
|
|
184
223
|
|
|
185
224
|
|
|
225
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
226
|
+
@serial_class(
|
|
227
|
+
named_type_path="sdk.field_values.FieldValueNull",
|
|
228
|
+
parse_require={"type"},
|
|
229
|
+
)
|
|
230
|
+
@dataclasses.dataclass(kw_only=True)
|
|
231
|
+
class FieldValueNull(FieldValueBase):
|
|
232
|
+
type: typing.Literal[FieldValueType.NULL_VALUE] = FieldValueType.NULL_VALUE
|
|
233
|
+
|
|
234
|
+
|
|
186
235
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
187
236
|
FieldValue = typing.Annotated[
|
|
188
|
-
FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference,
|
|
237
|
+
FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull,
|
|
189
238
|
serial_union_annotation(
|
|
190
239
|
named_type_path="sdk.field_values.FieldValue",
|
|
191
240
|
),
|
|
@@ -109,6 +109,7 @@ UploadDestination = typing.Annotated[
|
|
|
109
109
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
110
110
|
@serial_class(
|
|
111
111
|
named_type_path="sdk.generic_upload.GenericUploadStrategy",
|
|
112
|
+
explicit_defaults={"skip_moving_files"},
|
|
112
113
|
)
|
|
113
114
|
@dataclasses.dataclass(kw_only=True)
|
|
114
115
|
class GenericUploadStrategy:
|
|
@@ -168,6 +168,7 @@ JobExecutor = typing.Annotated[
|
|
|
168
168
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
169
169
|
@serial_class(
|
|
170
170
|
named_type_path="sdk.job_definition.JobLoggingSettings",
|
|
171
|
+
explicit_defaults={"enabled"},
|
|
171
172
|
)
|
|
172
173
|
@dataclasses.dataclass(kw_only=True)
|
|
173
174
|
class JobLoggingSettings:
|
|
@@ -178,6 +179,7 @@ class JobLoggingSettings:
|
|
|
178
179
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
179
180
|
@serial_class(
|
|
180
181
|
named_type_path="sdk.job_definition.JobDefinitionBase",
|
|
182
|
+
explicit_defaults={"enabled"},
|
|
181
183
|
)
|
|
182
184
|
@dataclasses.dataclass(kw_only=True)
|
|
183
185
|
class JobDefinitionBase:
|
|
@@ -59,6 +59,7 @@ class RecipeWorkflowStepPosition(StrEnum):
|
|
|
59
59
|
@serial_class(
|
|
60
60
|
named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierWorkflowStep",
|
|
61
61
|
parse_require={"type"},
|
|
62
|
+
explicit_defaults={"position"},
|
|
62
63
|
)
|
|
63
64
|
@dataclasses.dataclass(kw_only=True)
|
|
64
65
|
class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase):
|
uncountable/types/response_t.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.104
|
|
4
4
|
Summary: Uncountable SDK
|
|
5
5
|
Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
|
|
@@ -38,7 +38,7 @@ Requires-Dist: simplejson==3.*
|
|
|
38
38
|
Requires-Dist: grpcio==1.67.1
|
|
39
39
|
Requires-Dist: protobuf>=4.21.1
|
|
40
40
|
Requires-Dist: azure-storage-blob==12.*
|
|
41
|
-
Requires-Dist: boto3-stubs[essential,ses]==1
|
|
41
|
+
Requires-Dist: boto3-stubs[essential,ses]==1.*
|
|
42
42
|
Provides-Extra: test
|
|
43
43
|
Requires-Dist: mypy==1.*; extra == "test"
|
|
44
44
|
Requires-Dist: ruff==0.*; extra == "test"
|