UncountablePythonSDK 0.0.113__py3-none-any.whl → 0.0.114__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.
- examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +19 -0
- pkgs/argument_parser/argument_parser.py +8 -3
- pkgs/type_spec/builder.py +8 -2
- pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
- pkgs/type_spec/parts/base.py.prepart +5 -8
- pkgs/type_spec/value_spec/__main__.py +2 -2
- uncountable/integration/queue_runner/job_scheduler.py +10 -2
- uncountable/types/__init__.py +6 -0
- uncountable/types/api/entity/export_entities.py +46 -0
- uncountable/types/api/recipes/create_mix_order.py +44 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +1 -0
- uncountable/types/async_batch_processor.py +34 -0
- uncountable/types/async_batch_t.py +1 -0
- uncountable/types/base_t.py +5 -8
- uncountable/types/entity_t.py +1 -1
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +33 -0
- uncountable/types/job_definition_t.py +1 -0
- {uncountablepythonsdk-0.0.113.dist-info → uncountablepythonsdk-0.0.114.dist-info}/METADATA +1 -1
- {uncountablepythonsdk-0.0.113.dist-info → uncountablepythonsdk-0.0.114.dist-info}/RECORD +23 -17
- {uncountablepythonsdk-0.0.113.dist-info → uncountablepythonsdk-0.0.114.dist-info}/WHEEL +1 -1
- {uncountablepythonsdk-0.0.113.dist-info → uncountablepythonsdk-0.0.114.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import time
|
|
2
|
+
|
|
3
|
+
from uncountable.integration.job import CronJob, JobArguments, register_job
|
|
4
|
+
from uncountable.types.job_definition_t import JobResult
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@register_job
|
|
8
|
+
class MyConcurrentCronJob(CronJob):
|
|
9
|
+
def run(self, args: JobArguments) -> JobResult:
|
|
10
|
+
time.sleep(10)
|
|
11
|
+
return JobResult(success=True)
|
|
@@ -22,6 +22,25 @@ jobs:
|
|
|
22
22
|
- admin:
|
|
23
23
|
type: ref_name
|
|
24
24
|
ref_name: admin
|
|
25
|
+
- id: concurrent_cron_1
|
|
26
|
+
enabled: true
|
|
27
|
+
type: cron
|
|
28
|
+
name: MyConcurrentCron - 1
|
|
29
|
+
cron_spec: "* * * * *"
|
|
30
|
+
executor:
|
|
31
|
+
type: script
|
|
32
|
+
import_path: concurrent_cron
|
|
33
|
+
subqueue_name: subqueue_1
|
|
34
|
+
- id: concurrent_cron_2
|
|
35
|
+
enabled: true
|
|
36
|
+
type: cron
|
|
37
|
+
name: MyConcurrentCron - 2
|
|
38
|
+
cron_spec: "* * * * *"
|
|
39
|
+
executor:
|
|
40
|
+
type: script
|
|
41
|
+
import_path: concurrent_cron
|
|
42
|
+
subqueue_name: subqueue_2
|
|
43
|
+
|
|
25
44
|
|
|
26
45
|
- id: example_wh1
|
|
27
46
|
type: webhook
|
|
@@ -170,9 +170,15 @@ def _invoke_membership_parser(
|
|
|
170
170
|
|
|
171
171
|
def _build_parser_discriminated_union(
|
|
172
172
|
context: ParserContext,
|
|
173
|
-
|
|
173
|
+
discriminator_raw: str,
|
|
174
174
|
discriminator_map: dict[str, ParserFunction[T]],
|
|
175
175
|
) -> ParserFunction[T]:
|
|
176
|
+
discriminator = (
|
|
177
|
+
snake_to_camel_case(discriminator_raw)
|
|
178
|
+
if context.options.from_camel_case
|
|
179
|
+
else discriminator_raw
|
|
180
|
+
)
|
|
181
|
+
|
|
176
182
|
def parse(value: typing.Any) -> typing.Any:
|
|
177
183
|
if context.options.allow_direct_type and dataclasses.is_dataclass(value):
|
|
178
184
|
discriminant = getattr(value, discriminator)
|
|
@@ -414,8 +420,7 @@ def _build_parser_dataclass(
|
|
|
414
420
|
cur_parser = context.cache.get(parsed_type)
|
|
415
421
|
if cur_parser is not None:
|
|
416
422
|
return cur_parser
|
|
417
|
-
|
|
418
|
-
type_hints = typing.get_type_hints(parsed_type)
|
|
423
|
+
type_hints = typing.get_type_hints(parsed_type, include_extras=True)
|
|
419
424
|
dc_field_parsers: list[
|
|
420
425
|
tuple[
|
|
421
426
|
dataclasses.Field[typing.Any],
|
pkgs/type_spec/builder.py
CHANGED
|
@@ -14,6 +14,7 @@ from typing import Any, Self
|
|
|
14
14
|
|
|
15
15
|
from . import util
|
|
16
16
|
from .cross_output_links import CrossOutputPaths
|
|
17
|
+
from .non_discriminated_union_exceptions import NON_DISCRIMINATED_UNION_EXCEPTIONS
|
|
17
18
|
from .util import parse_type_str, unused
|
|
18
19
|
|
|
19
20
|
RawDict = dict[Any, Any]
|
|
@@ -636,6 +637,11 @@ class SpecTypeDefnUnion(SpecTypeDefn):
|
|
|
636
637
|
self.discriminator_map[discriminant] = sub_type
|
|
637
638
|
|
|
638
639
|
builder.pop_where()
|
|
640
|
+
elif (
|
|
641
|
+
f"{self.namespace.name}.{self.name}"
|
|
642
|
+
not in NON_DISCRIMINATED_UNION_EXCEPTIONS
|
|
643
|
+
):
|
|
644
|
+
raise Exception(f"union requires a discriminator: {self.name}")
|
|
639
645
|
|
|
640
646
|
def get_referenced_types(self) -> list[SpecType]:
|
|
641
647
|
return self.types
|
|
@@ -960,8 +966,8 @@ class SpecEndpoint:
|
|
|
960
966
|
elif isinstance(is_sdk, str):
|
|
961
967
|
try:
|
|
962
968
|
is_sdk = EndpointEmitType(is_sdk)
|
|
963
|
-
except ValueError:
|
|
964
|
-
raise ValueError(f"Invalid value for is_sdk: {is_sdk}")
|
|
969
|
+
except ValueError as e:
|
|
970
|
+
raise ValueError(f"Invalid value for is_sdk: {is_sdk}") from e
|
|
965
971
|
|
|
966
972
|
assert isinstance(is_sdk, EndpointEmitType)
|
|
967
973
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
NON_DISCRIMINATED_UNION_EXCEPTIONS = [
|
|
2
|
+
"generate_tool_parameters.UnionWithoutDiscrim",
|
|
3
|
+
"output_calculation_entities.ConditionParameterFilterCondition",
|
|
4
|
+
"output_parameters.AnalyticalMethodParameterOptions",
|
|
5
|
+
"output_parameters.AnalyticalMethodLinkedOptionValue",
|
|
6
|
+
"recipes_redirect.RecipesRedirectResult",
|
|
7
|
+
"value_spec.ResolvedPathAll",
|
|
8
|
+
"weighted_sum.WeightedSumEntities",
|
|
9
|
+
"workflows.WorkflowTotalDisplay",
|
|
10
|
+
"type_info.TypeFormActionConstraint",
|
|
11
|
+
"structured_loading.CompatibleFilterNode",
|
|
12
|
+
"structured_display_element.DisplayElementColumn",
|
|
13
|
+
"field_values.FieldValue",
|
|
14
|
+
]
|
|
@@ -58,15 +58,12 @@ def is_pure_json_value(value: ExtJsonValue) -> bool:
|
|
|
58
58
|
return True
|
|
59
59
|
|
|
60
60
|
if isinstance(value, list):
|
|
61
|
-
for item in value
|
|
62
|
-
if not is_pure_json_value(item):
|
|
63
|
-
return False
|
|
64
|
-
return True
|
|
61
|
+
return all(is_pure_json_value(item) for item in value)
|
|
65
62
|
|
|
66
63
|
if isinstance(value, dict):
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
return all(
|
|
65
|
+
is_pure_json_value(key) and is_pure_json_value(item)
|
|
66
|
+
for key, item in value.items()
|
|
67
|
+
)
|
|
71
68
|
|
|
72
69
|
return False
|
|
@@ -104,8 +104,8 @@ def parse_function_signature(text: str) -> ParsedFunctionSignature:
|
|
|
104
104
|
|
|
105
105
|
type_str = source.extract_type()
|
|
106
106
|
ref_name = arg_group.group(1)
|
|
107
|
-
is_missing = arg_group.group(2) == "?"
|
|
108
|
-
is_repeating = arg_group.group(2) == "+"
|
|
107
|
+
# is_missing = arg_group.group(2) == "?"
|
|
108
|
+
# is_repeating = arg_group.group(2) == "+"
|
|
109
109
|
type_path = parse_type_str(type_str)
|
|
110
110
|
|
|
111
111
|
match arg_group.group(3):
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
import sys
|
|
2
3
|
import typing
|
|
3
4
|
from concurrent.futures import ProcessPoolExecutor
|
|
4
5
|
from dataclasses import dataclass
|
|
@@ -34,6 +35,10 @@ class JobListenerKey:
|
|
|
34
35
|
def _get_job_worker_key(
|
|
35
36
|
job_definition: job_definition_t.JobDefinition, profile_name: str
|
|
36
37
|
) -> JobListenerKey:
|
|
38
|
+
if job_definition.subqueue_name is not None:
|
|
39
|
+
return JobListenerKey(
|
|
40
|
+
profile_name=profile_name, subqueue_name=job_definition.subqueue_name
|
|
41
|
+
)
|
|
37
42
|
return JobListenerKey(profile_name=profile_name)
|
|
38
43
|
|
|
39
44
|
|
|
@@ -41,9 +46,12 @@ def on_worker_crash(
|
|
|
41
46
|
worker_key: JobListenerKey,
|
|
42
47
|
) -> typing.Callable[[asyncio.Task], None]:
|
|
43
48
|
def hook(task: asyncio.Task) -> None:
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
Logger(get_current_span()).log_exception(
|
|
50
|
+
Exception(
|
|
51
|
+
f"worker {worker_key.profile_name}_{worker_key.subqueue_name} crashed unexpectedly"
|
|
52
|
+
)
|
|
46
53
|
)
|
|
54
|
+
sys.exit(1)
|
|
47
55
|
|
|
48
56
|
return hook
|
|
49
57
|
|
uncountable/types/__init__.py
CHANGED
|
@@ -21,6 +21,7 @@ from .api.chemical import convert_chemical_formats as convert_chemical_formats_t
|
|
|
21
21
|
from .api.entity import create_entities as create_entities_t
|
|
22
22
|
from .api.entity import create_entity as create_entity_t
|
|
23
23
|
from .api.inputs import create_inputs as create_inputs_t
|
|
24
|
+
from .api.recipes import create_mix_order as create_mix_order_t
|
|
24
25
|
from .api.entity import create_or_update_entity as create_or_update_entity_t
|
|
25
26
|
from .api.recipes import create_recipe as create_recipe_t
|
|
26
27
|
from .api.recipe_links import create_recipe_link as create_recipe_link_t
|
|
@@ -34,6 +35,8 @@ from . import entity_t as entity_t
|
|
|
34
35
|
from .api.batch import execute_batch as execute_batch_t
|
|
35
36
|
from .api.batch import execute_batch_load_async as execute_batch_load_async_t
|
|
36
37
|
from . import experiment_groups_t as experiment_groups_t
|
|
38
|
+
from .api.entity import export_entities as export_entities_t
|
|
39
|
+
from . import exports_t as exports_t
|
|
37
40
|
from . import field_values_t as field_values_t
|
|
38
41
|
from . import fields_t as fields_t
|
|
39
42
|
from . import generic_upload_t as generic_upload_t
|
|
@@ -135,6 +138,7 @@ __all__: list[str] = [
|
|
|
135
138
|
"create_entities_t",
|
|
136
139
|
"create_entity_t",
|
|
137
140
|
"create_inputs_t",
|
|
141
|
+
"create_mix_order_t",
|
|
138
142
|
"create_or_update_entity_t",
|
|
139
143
|
"create_recipe_t",
|
|
140
144
|
"create_recipe_link_t",
|
|
@@ -148,6 +152,8 @@ __all__: list[str] = [
|
|
|
148
152
|
"execute_batch_t",
|
|
149
153
|
"execute_batch_load_async_t",
|
|
150
154
|
"experiment_groups_t",
|
|
155
|
+
"export_entities_t",
|
|
156
|
+
"exports_t",
|
|
151
157
|
"field_values_t",
|
|
152
158
|
"fields_t",
|
|
153
159
|
"generic_upload_t",
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
13
|
+
from ... import exports_t
|
|
14
|
+
from ... import identifier_t
|
|
15
|
+
|
|
16
|
+
__all__: list[str] = [
|
|
17
|
+
"Arguments",
|
|
18
|
+
"Data",
|
|
19
|
+
"ENDPOINT_METHOD",
|
|
20
|
+
"ENDPOINT_PATH",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
ENDPOINT_METHOD = "POST"
|
|
24
|
+
ENDPOINT_PATH = "api/external/entity/export_entities"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
+
@serial_class(
|
|
29
|
+
named_type_path="sdk.api.entity.export_entities.Arguments",
|
|
30
|
+
)
|
|
31
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
32
|
+
class Arguments:
|
|
33
|
+
config_key: identifier_t.IdentifierKey
|
|
34
|
+
type: exports_t.ExportType = exports_t.ExportType.EXCEL
|
|
35
|
+
client_timezone: exports_t.ListingExportUserTimezone | None = None
|
|
36
|
+
limit: int | None = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
|
+
@serial_class(
|
|
41
|
+
named_type_path="sdk.api.entity.export_entities.Data",
|
|
42
|
+
)
|
|
43
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
44
|
+
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
45
|
+
pass
|
|
46
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from ... import async_batch_t
|
|
12
|
+
from ... import base_t
|
|
13
|
+
from ... import identifier_t
|
|
14
|
+
from ... import recipe_workflow_steps_t
|
|
15
|
+
|
|
16
|
+
__all__: list[str] = [
|
|
17
|
+
"Arguments",
|
|
18
|
+
"Data",
|
|
19
|
+
"ENDPOINT_METHOD",
|
|
20
|
+
"ENDPOINT_PATH",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
ENDPOINT_METHOD = "POST"
|
|
24
|
+
ENDPOINT_PATH = "api/external/recipes/create_mix_order"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
28
|
+
@serial_class(
|
|
29
|
+
named_type_path="sdk.api.recipes.create_mix_order.Arguments",
|
|
30
|
+
)
|
|
31
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
32
|
+
class Arguments:
|
|
33
|
+
recipe_key: identifier_t.IdentifierKey
|
|
34
|
+
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
38
|
+
@serial_class(
|
|
39
|
+
named_type_path="sdk.api.recipes.create_mix_order.Data",
|
|
40
|
+
)
|
|
41
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
42
|
+
class Data(async_batch_t.AsyncBatchActionReturn):
|
|
43
|
+
pass
|
|
44
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -61,6 +61,7 @@ class RecipeOutputValue:
|
|
|
61
61
|
value_str: str | None = None
|
|
62
62
|
value_curve: CurveValues | None = None
|
|
63
63
|
value_color: data_t.SupportedColorFormatColor | None = None
|
|
64
|
+
value_ingredient_id: base_t.ObjectId | None = None
|
|
64
65
|
formatting: recipes_t.RecipeAttributeFormatting | None = None
|
|
65
66
|
field_values: list[field_values_t.ArgumentValueRefName | field_values_t.ArgumentValueId] | None = None
|
|
66
67
|
|
|
@@ -14,6 +14,7 @@ from uncountable.types import async_batch_t
|
|
|
14
14
|
from uncountable.types import base_t
|
|
15
15
|
import uncountable.types.api.recipes.clear_recipe_outputs as clear_recipe_outputs_t
|
|
16
16
|
import uncountable.types.api.runsheet.complete_async_upload as complete_async_upload_t
|
|
17
|
+
import uncountable.types.api.recipes.create_mix_order as create_mix_order_t
|
|
17
18
|
import uncountable.types.api.entity.create_or_update_entity as create_or_update_entity_t
|
|
18
19
|
import uncountable.types.api.recipes.create_recipe as create_recipe_t
|
|
19
20
|
import uncountable.types.api.recipes.edit_recipe_inputs as edit_recipe_inputs_t
|
|
@@ -217,6 +218,39 @@ class AsyncBatchProcessorBase(ABC):
|
|
|
217
218
|
batch_reference=req.batch_reference,
|
|
218
219
|
)
|
|
219
220
|
|
|
221
|
+
def create_mix_order(
|
|
222
|
+
self,
|
|
223
|
+
*,
|
|
224
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
225
|
+
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
|
|
226
|
+
depends_on: list[str] | None = None,
|
|
227
|
+
) -> async_batch_t.QueuedAsyncBatchRequest:
|
|
228
|
+
"""Creates mix order on a recipe workflow step
|
|
229
|
+
|
|
230
|
+
:param depends_on: A list of batch reference keys to process before processing this request
|
|
231
|
+
"""
|
|
232
|
+
args = create_mix_order_t.Arguments(
|
|
233
|
+
recipe_key=recipe_key,
|
|
234
|
+
recipe_workflow_step_identifier=recipe_workflow_step_identifier,
|
|
235
|
+
)
|
|
236
|
+
json_data = serialize_for_api(args)
|
|
237
|
+
|
|
238
|
+
batch_reference = str(uuid.uuid4())
|
|
239
|
+
|
|
240
|
+
req = async_batch_t.AsyncBatchRequest(
|
|
241
|
+
path=async_batch_t.AsyncBatchRequestPath.CREATE_MIX_ORDER,
|
|
242
|
+
data=json_data,
|
|
243
|
+
depends_on=depends_on,
|
|
244
|
+
batch_reference=batch_reference,
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
self._enqueue(req)
|
|
248
|
+
|
|
249
|
+
return async_batch_t.QueuedAsyncBatchRequest(
|
|
250
|
+
path=req.path,
|
|
251
|
+
batch_reference=req.batch_reference,
|
|
252
|
+
)
|
|
253
|
+
|
|
220
254
|
def create_or_update_entity(
|
|
221
255
|
self,
|
|
222
256
|
*,
|
|
@@ -44,6 +44,7 @@ class AsyncBatchRequestPath(StrEnum):
|
|
|
44
44
|
CREATE_RECIPE_LINK = "recipe_links/create_recipe_link"
|
|
45
45
|
UPSERT_CONDITION_MATCH = "condition_parameters/upsert_condition_match"
|
|
46
46
|
COMPLETE_ASYNC_UPLOAD = "runsheet/complete_async_upload"
|
|
47
|
+
CREATE_MIX_ORDER = "recipes/create_mix_order"
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/base_t.py
CHANGED
|
@@ -74,16 +74,13 @@ def is_pure_json_value(value: ExtJsonValue) -> bool:
|
|
|
74
74
|
return True
|
|
75
75
|
|
|
76
76
|
if isinstance(value, list):
|
|
77
|
-
for item in value
|
|
78
|
-
if not is_pure_json_value(item):
|
|
79
|
-
return False
|
|
80
|
-
return True
|
|
77
|
+
return all(is_pure_json_value(item) for item in value)
|
|
81
78
|
|
|
82
79
|
if isinstance(value, dict):
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
return all(
|
|
81
|
+
is_pure_json_value(key) and is_pure_json_value(item)
|
|
82
|
+
for key, item in value.items()
|
|
83
|
+
)
|
|
87
84
|
|
|
88
85
|
return False
|
|
89
86
|
# === END section from base.prepart.py ===
|
uncountable/types/entity_t.py
CHANGED
|
@@ -390,7 +390,7 @@ class EntityType(StrEnum):
|
|
|
390
390
|
|
|
391
391
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
392
392
|
LimitedEntityType = typing.Annotated[
|
|
393
|
-
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] | typing.Literal[EntityType.EQUIPMENT_MAINTENANCE] | typing.Literal[EntityType.MAINTENANCE_SCHEDULE] | typing.Literal[EntityType.CONDITION_PARAMETER_RULE] | typing.Literal[EntityType.INGREDIENT],
|
|
393
|
+
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] | typing.Literal[EntityType.EQUIPMENT_MAINTENANCE] | typing.Literal[EntityType.MAINTENANCE_SCHEDULE] | typing.Literal[EntityType.CONDITION_PARAMETER_RULE] | typing.Literal[EntityType.INGREDIENT] | typing.Literal[EntityType.TIMESHEET_ENTRY],
|
|
394
394
|
serial_alias_annotation(
|
|
395
395
|
named_type_path="sdk.entity.LimitedEntityType",
|
|
396
396
|
),
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# ruff: noqa: E402 Q003
|
|
2
|
+
# fmt: off
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
5
|
+
# Kept only for SDK backwards compatibility
|
|
6
|
+
from .exports_t import ListingExportUserTimezone as ListingExportUserTimezone
|
|
7
|
+
from .exports_t import ExportType as ExportType
|
|
8
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,33 @@
|
|
|
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 base_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"ExportType",
|
|
16
|
+
"ListingExportUserTimezone",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
21
|
+
@serial_class(
|
|
22
|
+
named_type_path="sdk.exports.ListingExportUserTimezone",
|
|
23
|
+
)
|
|
24
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
25
|
+
class ListingExportUserTimezone:
|
|
26
|
+
timezone_name: str
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
30
|
+
class ExportType(StrEnum):
|
|
31
|
+
EXCEL = "excel"
|
|
32
|
+
PDF = "pdf"
|
|
33
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.114
|
|
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
|
|
@@ -24,16 +24,17 @@ examples/set_recipe_metadata_file.py,sha256=cRVXGz4UN4aqnNrNSzyBmikYHpe63lMIuzOp
|
|
|
24
24
|
examples/set_recipe_output_file_sdk.py,sha256=Lz1amqppnWTX83z-C090wCJ4hcKmCD3kb-4v0uBRi0Y,782
|
|
25
25
|
examples/upload_files.py,sha256=qMaSvMSdTMPOOP55y1AwEurc0SOdZAMvEydlqJPsGpg,432
|
|
26
26
|
examples/integration-server/pyproject.toml,sha256=i4Px7I__asDvP4WlAd2PncfRRQ-U4t5xp0tqT9YYs3s,9149
|
|
27
|
+
examples/integration-server/jobs/materials_auto/concurrent_cron.py,sha256=xsK3H9ZEaniedC2nJUB0rqOcFI8y-ojfl_nLSJb9AMM,312
|
|
27
28
|
examples/integration-server/jobs/materials_auto/example_cron.py,sha256=7VVQ-UJsq3DbGpN3XPnorRVZYo-vCwbfSU3VVDluIzA,699
|
|
28
29
|
examples/integration-server/jobs/materials_auto/example_runsheet_wh.py,sha256=_wILTnbzzLf9zrcQb_KQKytxxcya1ej6MqQnoUSS4fA,1180
|
|
29
30
|
examples/integration-server/jobs/materials_auto/example_wh.py,sha256=PN-skP27yJwDZboWk5g5EZEc3AKfVayQLfnopjsDKJc,659
|
|
30
|
-
examples/integration-server/jobs/materials_auto/profile.yaml,sha256=
|
|
31
|
+
examples/integration-server/jobs/materials_auto/profile.yaml,sha256=T9Q4Oh-BVHCoxAIY_Po4TWeEQNrXJ-d9w8tr3voYkM0,1555
|
|
31
32
|
pkgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
33
|
pkgs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
34
|
pkgs/argument_parser/__init__.py,sha256=VWUOOtJ-ueRF2lkIJzgQe4xhBKR9IPkgf9vY28nF35s,870
|
|
34
35
|
pkgs/argument_parser/_is_enum.py,sha256=Gw6jJa8nBwYGqXwwCZbSnWL8Rvr5alkg5lSVAqXtOZM,257
|
|
35
36
|
pkgs/argument_parser/_is_namedtuple.py,sha256=Rjc1bKanIPPogl3qG5JPBxglG1TqWYOo1nxxhBASQWY,265
|
|
36
|
-
pkgs/argument_parser/argument_parser.py,sha256=
|
|
37
|
+
pkgs/argument_parser/argument_parser.py,sha256=Hlyb3-FXy8PFWtTIzkyatreJ9P0GSDaEEB1ZyW1pS0E,21155
|
|
37
38
|
pkgs/argument_parser/case_convert.py,sha256=NuJLJUJRbyVb6_Slen4uqaStEHbcOS1d-hBBfDrrw-c,605
|
|
38
39
|
pkgs/filesystem_utils/__init__.py,sha256=2a0d2rEPlEEYwhm3Wckny4VCp4ZS7JtYSXmwdwNCRjo,1332
|
|
39
40
|
pkgs/filesystem_utils/_blob_session.py,sha256=4GicmwgGHVcqO8pOTu-EJakKMb1-IsxT9QnVi2D0oKU,5143
|
|
@@ -61,7 +62,7 @@ pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpG
|
|
|
61
62
|
pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
|
|
62
63
|
pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
|
|
63
64
|
pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
|
|
64
|
-
pkgs/type_spec/builder.py,sha256=
|
|
65
|
+
pkgs/type_spec/builder.py,sha256=XqkKO-GxV2DLS_iDN9tnQJfNcefz5yMAwyjnMog87jE,54049
|
|
65
66
|
pkgs/type_spec/config.py,sha256=K6WebgeI3Saew0IEBcm1s2fauw_CyvH183emVrNoUXg,5327
|
|
66
67
|
pkgs/type_spec/cross_output_links.py,sha256=bVNn0a4LMVTRLg_zjtiHnoTwdINHfftjWoH6tGdxhlk,3124
|
|
67
68
|
pkgs/type_spec/emit_io_ts.py,sha256=CUvBs0boB_X-Kndh66yYcqFfq3oC_LGs8YffLkJ0ZXA,5707
|
|
@@ -71,20 +72,21 @@ pkgs/type_spec/emit_python.py,sha256=JCT_o6sPJRaAL1J-TlMT-RN8d4bzLcYJF2iwNTcGlBA
|
|
|
71
72
|
pkgs/type_spec/emit_typescript.py,sha256=0HRzxlbIP91rzbVkAntF4TKZppoKcWsqnDLAIRc1bng,10927
|
|
72
73
|
pkgs/type_spec/emit_typescript_util.py,sha256=pYhzRb-U-B5peWdfJDQ0i9kI80Ojf2wbfkvJutk9rTw,10975
|
|
73
74
|
pkgs/type_spec/load_types.py,sha256=GndEKQtICCQi4oXsL6cZ9khm8lBB830e6hx0wML4dHs,4278
|
|
75
|
+
pkgs/type_spec/non_discriminated_union_exceptions.py,sha256=JB4WNDJWc3e9WMOabX4aTd0-6K7n1hctIW2lGf1bYts,612
|
|
74
76
|
pkgs/type_spec/open_api_util.py,sha256=DYnlygaMIqDQtSuYpUpd5lpA9JG4JHd_-iGe-BY2lhw,7333
|
|
75
77
|
pkgs/type_spec/test.py,sha256=4ueujBq-pEgnX3Z69HyPmD-bullFXmpixcpVzfOkhP4,489
|
|
76
78
|
pkgs/type_spec/util.py,sha256=S_SGTJU192x-wIbngVUTvXhQENMbBfxluigLmnItGI8,4848
|
|
77
79
|
pkgs/type_spec/actions_registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
80
|
pkgs/type_spec/actions_registry/__main__.py,sha256=SRw6kIhHTW7W2wGijYq66JARzoc4KpPmbLqwvnETyTE,4277
|
|
79
81
|
pkgs/type_spec/actions_registry/emit_typescript.py,sha256=W1lI36ITdJ7MBf37wlTB7H3X9Ljt217vIGMv4e3fxfY,5986
|
|
80
|
-
pkgs/type_spec/parts/base.py.prepart,sha256=
|
|
82
|
+
pkgs/type_spec/parts/base.py.prepart,sha256=Xy8my5ol_Iu0hpQpvgsmqGLkGcMsLSg-cgjm4Yp-QI4,2369
|
|
81
83
|
pkgs/type_spec/parts/base.ts.prepart,sha256=2FJJvpg2olCcavxj0nbYWdwKl6KeScour2JjSvN42l8,1001
|
|
82
84
|
pkgs/type_spec/type_info/__main__.py,sha256=TLNvCHGcmaj_8Sj5bAQNpuNaaw2dpDzoFDWZds0V4Qo,1002
|
|
83
85
|
pkgs/type_spec/type_info/emit_type_info.py,sha256=xRjZiwDDii4Bq8yVfcgE8YFechoKAcGmYXBk3Dq-K-s,15387
|
|
84
86
|
pkgs/type_spec/ui_entry_actions/__init__.py,sha256=WiHE_BexOEZWbkkbD7EnFau1aMLNmfgQywG9PTQNCkw,135
|
|
85
87
|
pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py,sha256=iVjThgDpfkuqeq0LENaCRrrGkWQ6kMIhVa-yZWXSflM,8981
|
|
86
88
|
pkgs/type_spec/value_spec/__init__.py,sha256=Z-grlcZtxAfEXhPHsK0nD7PFLGsv4eqvunaPN7_TA84,83
|
|
87
|
-
pkgs/type_spec/value_spec/__main__.py,sha256=
|
|
89
|
+
pkgs/type_spec/value_spec/__main__.py,sha256=oM5lcV6Hv_03okjtfWn2fzSHsarFVa9ArU_g02XnQJw,8879
|
|
88
90
|
pkgs/type_spec/value_spec/convert_type.py,sha256=OvP7dwUMHXNHVXWYT4jkaYJ96S3a2SnFuC_iMdYVB7s,2927
|
|
89
91
|
pkgs/type_spec/value_spec/emit_python.py,sha256=YQCkc9nHYKkFbdqLOW3YT39wciunE58yDuzdXn2rW5Q,7214
|
|
90
92
|
pkgs/type_spec/value_spec/types.py,sha256=Yc3LaKHN1G6wbgrBv0dpu5vijUXtS2GcDTusYPnDvK0,454
|
|
@@ -114,7 +116,7 @@ uncountable/integration/executors/executors.py,sha256=Kzisp1eKufGCWrHIw4mmAj-l1U
|
|
|
114
116
|
uncountable/integration/executors/generic_upload_executor.py,sha256=z0HfvuBR1wUbRpMVxJQ5Jlzbdk8G7YmAGENmze85Tr8,12076
|
|
115
117
|
uncountable/integration/executors/script_executor.py,sha256=BBQ9f0l7uH2hgKf60jtm-pONzwk-EeOhM2qBAbv_URo,846
|
|
116
118
|
uncountable/integration/queue_runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
117
|
-
uncountable/integration/queue_runner/job_scheduler.py,sha256=
|
|
119
|
+
uncountable/integration/queue_runner/job_scheduler.py,sha256=lLP3R8RVE_4CJ9D-AsJSsZVciKCISsvgUMRs4tIZZpE,6557
|
|
118
120
|
uncountable/integration/queue_runner/queue_runner.py,sha256=0BmYu5zHdothTevGsB-nXg6MBd1UD-WkP3h1WCKMdQg,710
|
|
119
121
|
uncountable/integration/queue_runner/types.py,sha256=8qTq29BTSa5rmW6CBlBntP0pNIiDcwu1wHa78pjroS0,219
|
|
120
122
|
uncountable/integration/queue_runner/worker.py,sha256=WwJmwHkgovfiqrMeNJVtIyDYJAib5ajog5ag2l_AquI,4584
|
|
@@ -134,16 +136,16 @@ uncountable/integration/queue_runner/datastore/model.py,sha256=8-RI5A2yPZVGBLWIN
|
|
|
134
136
|
uncountable/integration/secret_retrieval/__init__.py,sha256=3QXVj35w8rRMxVvmmsViFYDi3lcb3g70incfalOEm6o,87
|
|
135
137
|
uncountable/integration/secret_retrieval/retrieve_secret.py,sha256=LBEf18KHtXZxg-ZZ80stJ1vW39AWf0CQllP6pNu3Eq8,2994
|
|
136
138
|
uncountable/integration/webhook_server/entrypoint.py,sha256=yQWQq_k3kbJkSsEEt6k22YwhXekezJZfV0rnn-hP-Yo,5516
|
|
137
|
-
uncountable/types/__init__.py,sha256=
|
|
139
|
+
uncountable/types/__init__.py,sha256=eqeDMCXTr9Mwo10RSGMa4znfu_7TVp_0gYJxPKmLCfQ,9990
|
|
138
140
|
uncountable/types/async_batch.py,sha256=yCCWrrLQfxXVqZp-KskxLBNkNmuELdz4PJjx8ULppgs,662
|
|
139
|
-
uncountable/types/async_batch_processor.py,sha256=
|
|
140
|
-
uncountable/types/async_batch_t.py,sha256=
|
|
141
|
+
uncountable/types/async_batch_processor.py,sha256=Y8rp-GtuhwUBg18yb5T7bQpb48vsQpACGrvaIiFYLrU,21765
|
|
142
|
+
uncountable/types/async_batch_t.py,sha256=JuswurXlYW38MfAXJ0UWb7hE2rmzFaHBAsNhRYAyMD4,3779
|
|
141
143
|
uncountable/types/async_jobs.py,sha256=JI0ScfawaqMRbJ2jbgW3YQLhijPnBeYdMnZJjygSxHg,322
|
|
142
144
|
uncountable/types/async_jobs_t.py,sha256=u4xd3i512PZ-9592Q2ZgWh_faMiI4UMm0F_gOmZnerI,1389
|
|
143
145
|
uncountable/types/auth_retrieval.py,sha256=770zjN1K9EF5zs1Xml7x6ke6Hkze7rcMT5FdDVCIl9M,549
|
|
144
146
|
uncountable/types/auth_retrieval_t.py,sha256=iMUC_H7qYivtAr4anDD0dBwIB1hXhr7JKEZ2peP-juM,2376
|
|
145
147
|
uncountable/types/base.py,sha256=10-34wiyxrOZr2RQNiBohDNWc7b2i_La_yMuKLYslcU,338
|
|
146
|
-
uncountable/types/base_t.py,sha256=
|
|
148
|
+
uncountable/types/base_t.py,sha256=dMsFNXPcQtu7dawJfH-vbUFhN9mCelZN1ccaE0TAkBY,2888
|
|
147
149
|
uncountable/types/calculations.py,sha256=fApOFpgBemt_t7IVneVR0VdI3X5EOxiG6Xhzr6RR8Gw,263
|
|
148
150
|
uncountable/types/calculations_t.py,sha256=pl-lhjyDQuj11Sf9g1-0BsSkN7Ez8UxDp8-KMQ_3enM,709
|
|
149
151
|
uncountable/types/chemical_structure.py,sha256=ujyragaD26-QG5jgKnWhO7TN3N1V9b_04T2WhqNYxxo,281
|
|
@@ -156,9 +158,11 @@ uncountable/types/curves_t.py,sha256=DxYepdC3QKKR7mepOOBoyarNcFZQdUa5ZYH-hwCY3BI
|
|
|
156
158
|
uncountable/types/data.py,sha256=u2isf4XEug3Eu-xSIoqGaCQmW2dFaKBHCkP_WKYwwBc,500
|
|
157
159
|
uncountable/types/data_t.py,sha256=vFoypK_WMGfN28r1sSlDYHZNUdBQC0XCN7-_Mlo4FJk,2832
|
|
158
160
|
uncountable/types/entity.py,sha256=Zclk1LYcRaYrMDhqyCjMSLEg0fE6_q8LHvV22Qvscgs,566
|
|
159
|
-
uncountable/types/entity_t.py,sha256=
|
|
161
|
+
uncountable/types/entity_t.py,sha256=tyRdNrRCcWRyOO_dXEUa6G7KTHLCMJWBueK5cIBSx34,20166
|
|
160
162
|
uncountable/types/experiment_groups.py,sha256=qUpFOx1AKgzaT_4khCOv5Xs6jwiQGbvHH-GUh3v1nv4,288
|
|
161
163
|
uncountable/types/experiment_groups_t.py,sha256=29Ct-WPejpYMuGfnFfOoosU9iSfjzxpabpBX6oTPFUA,761
|
|
164
|
+
uncountable/types/exports.py,sha256=VMmxUO2PpV1Y63hZ2AnVor4H-B6aswJ7YpSru_u89lU,334
|
|
165
|
+
uncountable/types/exports_t.py,sha256=der2gk1YL5XjWTrqsLD2KNynXA_z7IzmvphOfvGT19M,894
|
|
162
166
|
uncountable/types/field_values.py,sha256=iG4TvITLnlz023GuhFrlDwXB7oov5DPpAs_FBaMaJR8,1713
|
|
163
167
|
uncountable/types/field_values_t.py,sha256=Br2D2dibU9avbomfkaXHXw1ineUcIkATBbEm0eZm1SE,10076
|
|
164
168
|
uncountable/types/fields.py,sha256=M0_ZZr0QdNLXkdHAGo5mfU90kEtHedCSKrcod-FG30Y,245
|
|
@@ -176,7 +180,7 @@ uncountable/types/inputs_t.py,sha256=eSVA7LNgLI3ja83GJm4sA9KhPICVV4zj2Dd4OhbuY9g
|
|
|
176
180
|
uncountable/types/integration_server.py,sha256=VonA8h8TGnVBiss5W8-K82lA01JQa7TLk0ubFo8iiBQ,364
|
|
177
181
|
uncountable/types/integration_server_t.py,sha256=QAwAB-rlfYh14ZzfVUQd-Bfky3LkPcsSEBhRH3UGvZE,1270
|
|
178
182
|
uncountable/types/job_definition.py,sha256=6BkLZrmTfIYh45XFGZ5HOYveued0YXvl17YTlXblXjw,1646
|
|
179
|
-
uncountable/types/job_definition_t.py,sha256=
|
|
183
|
+
uncountable/types/job_definition_t.py,sha256=6ZJ9rlqXwbOB-G_U8YoWUDPvPak6_11kV2qT2jx8t9Q,8688
|
|
180
184
|
uncountable/types/outputs.py,sha256=I6zP2WHXg_jXgMqmuEJuJOlsjKjQGHjfs1JOwW9YxBM,260
|
|
181
185
|
uncountable/types/outputs_t.py,sha256=atsOkBBgnMeCgPaKPidk9eNouWVnynSrMI_ZbqxRJeY,795
|
|
182
186
|
uncountable/types/overrides.py,sha256=fOvj8P9K9ul8fnTwA--l140EWHuc1BFq8tXgtBkYld4,410
|
|
@@ -229,6 +233,7 @@ uncountable/types/api/entity/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8A
|
|
|
229
233
|
uncountable/types/api/entity/create_entities.py,sha256=cCDEra2SHvGWvz7nIxxMDSQN6OWrHMTT0JSomWUesto,1794
|
|
230
234
|
uncountable/types/api/entity/create_entity.py,sha256=urT6C7iGAa7_rCv9Wcz6GM_lKg1tP55E__rjNkj-Rjc,1879
|
|
231
235
|
uncountable/types/api/entity/create_or_update_entity.py,sha256=OK05B9nqlxsCU41iVCI_Nn66qVeQfqgdf2oZn7kUPFM,1445
|
|
236
|
+
uncountable/types/api/entity/export_entities.py,sha256=zz_4P6bQAt7gU2o2to9zUh0HHLQKaxLkbFGfbgY3KVk,1395
|
|
232
237
|
uncountable/types/api/entity/get_entities_data.py,sha256=hu0UfkU4PTyv3_CBZ7YmR8L8BKMq8hx6zH43XtUm16E,1616
|
|
233
238
|
uncountable/types/api/entity/grant_entity_permissions.py,sha256=4CvVIMvpdok8K1Bh6wMlwuUmoeP_-nL9y2GCEM6uAhY,1536
|
|
234
239
|
uncountable/types/api/entity/list_entities.py,sha256=LLc_QRH2LI7qPamxwF8DAPJCnfDo1Nw_0VGNDl6CMXI,2139
|
|
@@ -282,6 +287,7 @@ uncountable/types/api/recipes/archive_recipes.py,sha256=SKXcTkfY7CiaLVumt5BzjNvx
|
|
|
282
287
|
uncountable/types/api/recipes/associate_recipe_as_input.py,sha256=vXtdffaWJGvK1rrFA_fRGf2qfstt_tuds8ZFBJcRfwM,1339
|
|
283
288
|
uncountable/types/api/recipes/associate_recipe_as_lot.py,sha256=SBfeNGn6TF2Fawemc1hkJkElWrxD89jvZiQvCnTawBs,1283
|
|
284
289
|
uncountable/types/api/recipes/clear_recipe_outputs.py,sha256=IOHeOl7eO5Arzpfgjhk3y5eWY1lWb6xSzOrIC4uH78w,1227
|
|
290
|
+
uncountable/types/api/recipes/create_mix_order.py,sha256=LMLTw5malVnHsegFsKW04SBHJFDIJheh_qQClRFRsPM,1345
|
|
285
291
|
uncountable/types/api/recipes/create_recipe.py,sha256=ESgjPKKQLPLZUOqn20LpYupxYyKl8g52RE25TC-Gjx4,1594
|
|
286
292
|
uncountable/types/api/recipes/create_recipes.py,sha256=vSBCmHWdXDGacNXiRgK22G_nei8SHK1kwSJRRBQnaPU,2106
|
|
287
293
|
uncountable/types/api/recipes/disassociate_recipe_as_input.py,sha256=Lka3041BI6nXYIzKFjvKs_E9XO67ioHuFg8bEB85GCM,1251
|
|
@@ -299,7 +305,7 @@ uncountable/types/api/recipes/set_recipe_inputs.py,sha256=GSuT-Vgrn8-OG_eFuPCElI
|
|
|
299
305
|
uncountable/types/api/recipes/set_recipe_metadata.py,sha256=lrMB_wyOKjTLl9fiKT30M2HBU7lPwjtDsqZY8ODA-oA,1249
|
|
300
306
|
uncountable/types/api/recipes/set_recipe_output_annotations.py,sha256=OEMKfY_CEpsSa1xZXsM2ncUOV7acbZTMZYXiLjzJlfQ,3892
|
|
301
307
|
uncountable/types/api/recipes/set_recipe_output_file.py,sha256=2q63zD5-JEfWk5AffNHwERjzn8MzfQCtgGTKZQhcwsU,1685
|
|
302
|
-
uncountable/types/api/recipes/set_recipe_outputs.py,sha256=
|
|
308
|
+
uncountable/types/api/recipes/set_recipe_outputs.py,sha256=ENIP8T1rUZpuI4iPrrGpwZInPNdB6m1ZIyEIbyobkj4,2752
|
|
303
309
|
uncountable/types/api/recipes/set_recipe_tags.py,sha256=C4GzlHVfTDUA2CrgDqfYrDpS9jgOBf9bIgu4iqGvdno,3464
|
|
304
310
|
uncountable/types/api/recipes/unarchive_recipes.py,sha256=ke3JPaj6hRdTjP-Qot8Gc-_ptTYqC_1ZF3kKbPJ0H88,1145
|
|
305
311
|
uncountable/types/api/recipes/unlock_recipes.py,sha256=bwFFsgeozIMuyR9XmeUK1s3RuH1R8jRsFiF8SUKxBAg,1403
|
|
@@ -309,7 +315,7 @@ uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr
|
|
|
309
315
|
uncountable/types/api/triggers/run_trigger.py,sha256=dgDX_sRWSJ36UuzMZhG25oHV1HIOUKYY2G3fjKugZrw,1204
|
|
310
316
|
uncountable/types/api/uploader/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
311
317
|
uncountable/types/api/uploader/invoke_uploader.py,sha256=Bj7Dq4A90k00suacwk3bLA_dCb2aovS1kAbVam2AQnM,1395
|
|
312
|
-
uncountablepythonsdk-0.0.
|
|
313
|
-
uncountablepythonsdk-0.0.
|
|
314
|
-
uncountablepythonsdk-0.0.
|
|
315
|
-
uncountablepythonsdk-0.0.
|
|
318
|
+
uncountablepythonsdk-0.0.114.dist-info/METADATA,sha256=58rVRRIi9Ru8HTpgr8TOE5xNOxwkKfkDlbM7-i1Ptd8,2143
|
|
319
|
+
uncountablepythonsdk-0.0.114.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
320
|
+
uncountablepythonsdk-0.0.114.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
|
|
321
|
+
uncountablepythonsdk-0.0.114.dist-info/RECORD,,
|
{uncountablepythonsdk-0.0.113.dist-info → uncountablepythonsdk-0.0.114.dist-info}/top_level.txt
RENAMED
|
File without changes
|