UncountablePythonSDK 0.0.22__py3-none-any.whl → 0.0.24__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of UncountablePythonSDK might be problematic. Click here for more details.
- {UncountablePythonSDK-0.0.22.dist-info → UncountablePythonSDK-0.0.24.dist-info}/METADATA +1 -1
- {UncountablePythonSDK-0.0.22.dist-info → UncountablePythonSDK-0.0.24.dist-info}/RECORD +16 -14
- pkgs/type_spec/builder.py +1 -0
- pkgs/type_spec/emit_io_ts.py +4 -1
- pkgs/type_spec/emit_open_api.py +4 -0
- pkgs/type_spec/emit_python.py +6 -0
- pkgs/type_spec/emit_typescript.py +3 -0
- pkgs/type_spec/open_api_util.py +13 -4
- type_spec/external/api/recipes/archive_recipes.yaml +20 -0
- type_spec/external/api/recipes/edit_recipe_inputs.yaml +0 -1
- uncountable/types/__init__.py +2 -0
- uncountable/types/api/recipes/archive_recipes.py +35 -0
- uncountable/types/async_batch.py +1 -0
- uncountable/types/client_base.py +48 -0
- {UncountablePythonSDK-0.0.22.dist-info → UncountablePythonSDK-0.0.24.dist-info}/WHEEL +0 -0
- {UncountablePythonSDK-0.0.22.dist-info → UncountablePythonSDK-0.0.24.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.24
|
|
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
|
|
@@ -35,16 +35,16 @@ pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpG
|
|
|
35
35
|
pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
|
|
36
36
|
pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
|
|
37
37
|
pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
|
|
38
|
-
pkgs/type_spec/builder.py,sha256=
|
|
38
|
+
pkgs/type_spec/builder.py,sha256=9fEcZkasqovH8W4PtQvXtPu4psS_a-HAyu6Wsfk5L8w,43041
|
|
39
39
|
pkgs/type_spec/config.py,sha256=INfEiDcUsZFUKasHprsE6i33siPB0RnfmTKOsWcGnQ8,5043
|
|
40
|
-
pkgs/type_spec/emit_io_ts.py,sha256=
|
|
41
|
-
pkgs/type_spec/emit_open_api.py,sha256=
|
|
40
|
+
pkgs/type_spec/emit_io_ts.py,sha256=Ghd8XYqyNYldHQDepwa9GLfHXcoi48ztBw84K28ETic,5707
|
|
41
|
+
pkgs/type_spec/emit_open_api.py,sha256=RJzzOZ7Ti1PNTPn42ZGW7OA6L9KRQhKOTw4elXzJKpE,23524
|
|
42
42
|
pkgs/type_spec/emit_open_api_util.py,sha256=F6qouGVm2-WGYkoubbBtRu00V4e30bWJ0fDBhigBEfg,2248
|
|
43
|
-
pkgs/type_spec/emit_python.py,sha256=
|
|
44
|
-
pkgs/type_spec/emit_typescript.py,sha256=
|
|
43
|
+
pkgs/type_spec/emit_python.py,sha256=aGPnp86DZN0N7c5eiBHVAT_smDf1uCLmRldDhxmWx9g,42673
|
|
44
|
+
pkgs/type_spec/emit_typescript.py,sha256=4hpCJwiDf-v8LJaNFVfFtf8zvtG73YNPFwwa_5NuffI,17729
|
|
45
45
|
pkgs/type_spec/emit_typescript_util.py,sha256=93FzJnpYse4PKFzgdw4DGV4zFTi5tF4WR-CIi7cW498,873
|
|
46
46
|
pkgs/type_spec/load_types.py,sha256=xEHwdB_miR3vNs161Oy1luafE0VC-yk9-utAyCJmbEo,3629
|
|
47
|
-
pkgs/type_spec/open_api_util.py,sha256=
|
|
47
|
+
pkgs/type_spec/open_api_util.py,sha256=IGh-_snGPST_P_8FdYtO8MTEa9PUxRW6Rzg9X9EgQik,7114
|
|
48
48
|
pkgs/type_spec/test.py,sha256=4ueujBq-pEgnX3Z69HyPmD-bullFXmpixcpVzfOkhP4,489
|
|
49
49
|
pkgs/type_spec/util.py,sha256=6m6MPfY-SwjyZf2FWQKclswWB5o7gcdd-3tdpViPYOQ,4844
|
|
50
50
|
pkgs/type_spec/actions_registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -85,12 +85,13 @@ type_spec/external/api/project/get_projects.yaml,sha256=pQXGGPHenmFWYUuzEmZ-ORf0
|
|
|
85
85
|
type_spec/external/api/project/get_projects_data.yaml,sha256=8xQoyL8HlAropfZPYYcQ-W4fO4yuqueAWTKxRzTXAa0,1981
|
|
86
86
|
type_spec/external/api/recipe_links/create_recipe_link.yaml,sha256=7b2p7Ei4LnQXqccHsOVAfYyNK4WXm0n1IqxPG-qQDh0,941
|
|
87
87
|
type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml,sha256=mJs82Ci8XSp2ng0W9MKqoeYwIjjgaVYmC5MWFmWFkR8,1759
|
|
88
|
+
type_spec/external/api/recipes/archive_recipes.yaml,sha256=Oe-NIFwERiG1DwgzsWj3ouKVdnRDTelrgqE5b9Bt_vQ,515
|
|
88
89
|
type_spec/external/api/recipes/associate_recipe_as_input.yaml,sha256=7t0jto37RyLjl63-GK3mLC2uFiX1gd8vPwTwnobxkeI,654
|
|
89
90
|
type_spec/external/api/recipes/associate_recipe_as_lot.yaml,sha256=8wzeJg5njt4qG2kavA6Jpo9PkWE6rIbuA4IPNdhcwEg,605
|
|
90
91
|
type_spec/external/api/recipes/create_recipe.yaml,sha256=mGLyKJI3pN_7nU4rcSqCO3WjuKhO_odZ2pewVgYcMUU,1322
|
|
91
92
|
type_spec/external/api/recipes/create_recipes.yaml,sha256=eXMlXRpB5TFt1mUTECBa4aAIG3KrxYT2mJ5vxmZ9Q3A,1503
|
|
92
93
|
type_spec/external/api/recipes/disassociate_recipe_as_input.yaml,sha256=qTKQCNBNwLnbr22DQVLA6b80BdBhwnDbX1c4KoCKUm8,477
|
|
93
|
-
type_spec/external/api/recipes/edit_recipe_inputs.yaml,sha256=
|
|
94
|
+
type_spec/external/api/recipes/edit_recipe_inputs.yaml,sha256=ljewBw77ucvl_m_KWmSJp-nVQGvVG6cb7xVOgPIlueU,2573
|
|
94
95
|
type_spec/external/api/recipes/get_curve.yaml,sha256=zQpPwOYqojY-YwmTjbqoGtUxpYm3vne2sYpglWbPnpw,779
|
|
95
96
|
type_spec/external/api/recipes/get_recipe_calculations.yaml,sha256=ZE7PzfWrjS7TiO4q7iyCwEj5In8GwO6fFIYGqUlTEXo,1240
|
|
96
97
|
type_spec/external/api/recipes/get_recipe_links.yaml,sha256=Vwm0OVWl3VvDaI7chY_oZQqD8xZ1u09iFWKkZKn1ITo,766
|
|
@@ -120,13 +121,13 @@ uncountable/integration/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
120
121
|
uncountable/integration/db/connect.py,sha256=iI9e8a2hfbFP-dvH0MGLsrG-RpM0dHKCL-oCLkah9hs,181
|
|
121
122
|
uncountable/integration/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
123
|
uncountable/integration/executors/script_executor.py,sha256=6oMPAFe0PUdqt76e8jMi4vXszGVsVHLULob7Qbl3o38,816
|
|
123
|
-
uncountable/types/__init__.py,sha256=
|
|
124
|
-
uncountable/types/async_batch.py,sha256=
|
|
124
|
+
uncountable/types/__init__.py,sha256=6XYh9ACSJRnbbTGfpQ69bLFfwyBiCG1ZlHqSAOugTG8,6111
|
|
125
|
+
uncountable/types/async_batch.py,sha256=aWiul1fK3-cXaCESUUJ_92FF-NuuwxSjn9n3jC9vY5o,1618
|
|
125
126
|
uncountable/types/async_batch_processor.py,sha256=YksvTyJaZ3rqpZx4UXofUf7XU1Br4aNBNPZXB3LLtkA,5940
|
|
126
127
|
uncountable/types/base.py,sha256=w3BRf8SAvYPlKrcJtJcQ_WhCU3A9zy0VuRTRWRFKVUA,2709
|
|
127
128
|
uncountable/types/calculations.py,sha256=16J-KKMp-I8ZQUkYNmKCHfAn6DGb99cFinALcDIdGHY,562
|
|
128
129
|
uncountable/types/chemical_structure.py,sha256=zQKl53DGtQQONIUHFXuwjWLQaG7FPZY7x6SBSOzkGV0,758
|
|
129
|
-
uncountable/types/client_base.py,sha256=
|
|
130
|
+
uncountable/types/client_base.py,sha256=EIsd-OoOglTX2tVgbWDosPlq7hAkB_Nlacr_e8epjb4,47949
|
|
130
131
|
uncountable/types/curves.py,sha256=qYyRntMmFNonEwTrGhquMLbgMqjyP1moQflNTP0FMec,1308
|
|
131
132
|
uncountable/types/entity.py,sha256=NjMZrqBwQ7sZe_oUuJqy9IEG7dWZmFMkQQXJ0_odcnA,11637
|
|
132
133
|
uncountable/types/experiment_groups.py,sha256=ZBEk06F4n98Jz3oEA09WaDmw5rqPs7iVAm_Ysr4gc_o,599
|
|
@@ -190,6 +191,7 @@ uncountable/types/api/recipe_links/create_recipe_link.py,sha256=1Ok6XMGFKBIPV-uR
|
|
|
190
191
|
uncountable/types/api/recipe_metadata/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
191
192
|
uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py,sha256=el6Pn5XqExX66ZEEHM8CHPxnyXSMZPdfdvLBz86sAVY,1267
|
|
192
193
|
uncountable/types/api/recipes/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
194
|
+
uncountable/types/api/recipes/archive_recipes.py,sha256=XFCqBa90bG4Tpxu6fhUqzl7PWlY35bbzOmJf5EOviRM,852
|
|
193
195
|
uncountable/types/api/recipes/associate_recipe_as_input.py,sha256=88a2lirEgrodyyE6og0oYtkGAWih2uJCZRmy45kTBow,976
|
|
194
196
|
uncountable/types/api/recipes/associate_recipe_as_lot.py,sha256=bTYjbnY3B7GKz4MV4UGn7vPjaqMkAfUTio8872d4iws,955
|
|
195
197
|
uncountable/types/api/recipes/create_recipe.py,sha256=Ni00efkcPkQ3WTIgDHzkfu1qoc52ReV9VT0wwwPOT4g,1364
|
|
@@ -208,7 +210,7 @@ uncountable/types/api/recipes/set_recipe_outputs.py,sha256=QYq39TNchQ80ET1C77OE9
|
|
|
208
210
|
uncountable/types/api/recipes/set_recipe_tags.py,sha256=U710hgq9-t6QZGRB-ZGHskpt4iXwYEjIRb67eh3P518,2453
|
|
209
211
|
uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
210
212
|
uncountable/types/api/triggers/run_trigger.py,sha256=9m9M8-nlGB_sAU2Qm2lWugp4h4Osqj6QpjNfU8osd1U,901
|
|
211
|
-
UncountablePythonSDK-0.0.
|
|
212
|
-
UncountablePythonSDK-0.0.
|
|
213
|
-
UncountablePythonSDK-0.0.
|
|
214
|
-
UncountablePythonSDK-0.0.
|
|
213
|
+
UncountablePythonSDK-0.0.24.dist-info/METADATA,sha256=3xzubcqtwZH0Z5jnBD1q_8eU5UyYnNiXiS_RnBAm4Xo,1613
|
|
214
|
+
UncountablePythonSDK-0.0.24.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
215
|
+
UncountablePythonSDK-0.0.24.dist-info/top_level.txt,sha256=HaMiBnH1wA7SG9-RVHIJPBH3l8X5gee2jUf-77Nz-Dk,41
|
|
216
|
+
UncountablePythonSDK-0.0.24.dist-info/RECORD,,
|
pkgs/type_spec/builder.py
CHANGED
pkgs/type_spec/emit_io_ts.py
CHANGED
|
@@ -118,7 +118,10 @@ def refer_to_io_ts(
|
|
|
118
118
|
stype: builder.SpecType,
|
|
119
119
|
) -> str:
|
|
120
120
|
if isinstance(stype, builder.SpecTypeInstance):
|
|
121
|
-
if
|
|
121
|
+
if (
|
|
122
|
+
stype.defn_type.name == builder.BaseTypeName.s_list
|
|
123
|
+
or stype.defn_type.name == builder.BaseTypeName.s_readonly_array
|
|
124
|
+
):
|
|
122
125
|
spec = refer_to_io_ts(ctx, stype.parameters[0])
|
|
123
126
|
return f"IO.array({spec})"
|
|
124
127
|
if stype.defn_type.name == builder.BaseTypeName.s_union:
|
pkgs/type_spec/emit_open_api.py
CHANGED
|
@@ -634,6 +634,10 @@ def open_api_type(
|
|
|
634
634
|
[open_api_type(ctx, p, config=config) for p in stype.parameters],
|
|
635
635
|
description="TupleType",
|
|
636
636
|
)
|
|
637
|
+
if stype.defn_type.name == builder.BaseTypeName.s_readonly_array:
|
|
638
|
+
return OpenAPIArrayType(
|
|
639
|
+
open_api_type(ctx, stype.parameters[0], config=config)
|
|
640
|
+
)
|
|
637
641
|
|
|
638
642
|
# TODO: generics are not supported by OpenAPI
|
|
639
643
|
# map to Free-Form Object and add description
|
pkgs/type_spec/emit_python.py
CHANGED
|
@@ -819,6 +819,7 @@ base_name_map = {
|
|
|
819
819
|
builder.BaseTypeName.s_opaque_key: "OpaqueKey",
|
|
820
820
|
builder.BaseTypeName.s_string: "str",
|
|
821
821
|
builder.BaseTypeName.s_tuple: "tuple",
|
|
822
|
+
builder.BaseTypeName.s_readonly_array: "tuple",
|
|
822
823
|
builder.BaseTypeName.s_union: "typing.Union",
|
|
823
824
|
builder.BaseTypeName.s_literal: "typing.Literal",
|
|
824
825
|
}
|
|
@@ -827,6 +828,11 @@ base_name_map = {
|
|
|
827
828
|
def refer_to(ctx: TrackingContext, stype: builder.SpecType) -> str:
|
|
828
829
|
if isinstance(stype, builder.SpecTypeInstance):
|
|
829
830
|
params = ", ".join([refer_to(ctx, p) for p in stype.parameters])
|
|
831
|
+
|
|
832
|
+
if stype.defn_type.is_base_type(builder.BaseTypeName.s_readonly_array):
|
|
833
|
+
assert len(stype.parameters) == 1, "Read Only Array takes one parameter"
|
|
834
|
+
params = f"{params}, ..."
|
|
835
|
+
|
|
830
836
|
return f"{refer_to(ctx, stype.defn_type)}[{params}]"
|
|
831
837
|
|
|
832
838
|
if isinstance(stype, builder.SpecTypeLiteralWrapper):
|
|
@@ -394,6 +394,9 @@ def refer_to_impl(
|
|
|
394
394
|
if stype.defn_type.name == builder.BaseTypeName.s_list:
|
|
395
395
|
spec, multi = refer_to_impl(ctx, stype.parameters[0])
|
|
396
396
|
return f"({spec})[]" if multi else f"{spec}[]", False
|
|
397
|
+
if stype.defn_type.name == builder.BaseTypeName.s_readonly_array:
|
|
398
|
+
spec, multi = refer_to_impl(ctx, stype.parameters[0])
|
|
399
|
+
return f"readonly ({spec})[]" if multi else f"readonly {spec}[]", False
|
|
397
400
|
if stype.defn_type.name == builder.BaseTypeName.s_union:
|
|
398
401
|
return f'({" | ".join([refer_to(ctx, p) for p in stype.parameters])})', False
|
|
399
402
|
if stype.defn_type.name == builder.BaseTypeName.s_literal:
|
pkgs/type_spec/open_api_util.py
CHANGED
|
@@ -174,6 +174,18 @@ class OpenAPIObjectType(OpenAPIType):
|
|
|
174
174
|
|
|
175
175
|
return {"description": desc}
|
|
176
176
|
|
|
177
|
+
def _emit_property(
|
|
178
|
+
self, property_name: str, property_type: OpenAPIType
|
|
179
|
+
) -> dict[str, object]:
|
|
180
|
+
property_info = {
|
|
181
|
+
**property_type.asdict(),
|
|
182
|
+
}
|
|
183
|
+
property_description = self._emit_property_desc(property_name)
|
|
184
|
+
if "$ref" in property_info and "description" in property_description:
|
|
185
|
+
return {"allOf": [property_info, property_description]}
|
|
186
|
+
|
|
187
|
+
return property_info | property_description
|
|
188
|
+
|
|
177
189
|
def asdict(self) -> dict[str, object]:
|
|
178
190
|
return self.add_addl_info({
|
|
179
191
|
"type": "object",
|
|
@@ -183,10 +195,7 @@ class OpenAPIObjectType(OpenAPIType):
|
|
|
183
195
|
if not property_type.nullable
|
|
184
196
|
],
|
|
185
197
|
"properties": {
|
|
186
|
-
property_name:
|
|
187
|
-
**property_type.asdict(),
|
|
188
|
-
}
|
|
189
|
-
| self._emit_property_desc(property_name)
|
|
198
|
+
property_name: self._emit_property(property_name, property_type)
|
|
190
199
|
for property_name, property_type in self.properties.items()
|
|
191
200
|
},
|
|
192
201
|
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/recipes/archive
|
|
5
|
+
function: main.site.app.external.recipes.archive_recipes.archive_recipes
|
|
6
|
+
desc: Archive the provided recipes and their children
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
type: Object
|
|
10
|
+
properties:
|
|
11
|
+
recipes:
|
|
12
|
+
type: List<identifier.IdentifierKey>
|
|
13
|
+
desc: Identifier for the recipe
|
|
14
|
+
reason?:
|
|
15
|
+
type: String
|
|
16
|
+
desc: This reason will be written to the audit log archive entry
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Data:
|
|
20
|
+
type: Object
|
uncountable/types/__init__.py
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# ruff: noqa: E402
|
|
4
4
|
# fmt: off
|
|
5
5
|
# isort: skip_file
|
|
6
|
+
from .api.recipes import archive_recipes as archive_recipes_t
|
|
6
7
|
from .api.recipes import associate_recipe_as_input as associate_recipe_as_input_t
|
|
7
8
|
from .api.recipes import associate_recipe_as_lot as associate_recipe_as_lot_t
|
|
8
9
|
from . import async_batch as async_batch_t
|
|
@@ -77,6 +78,7 @@ from . import workflows as workflows_t
|
|
|
77
78
|
|
|
78
79
|
|
|
79
80
|
__all__: list[str] = [
|
|
81
|
+
"archive_recipes_t",
|
|
80
82
|
"associate_recipe_as_input_t",
|
|
81
83
|
"associate_recipe_as_lot_t",
|
|
82
84
|
"async_batch_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 identifier as identifier_t
|
|
12
|
+
|
|
13
|
+
__all__: list[str] = [
|
|
14
|
+
"Arguments",
|
|
15
|
+
"Data",
|
|
16
|
+
"ENDPOINT_METHOD",
|
|
17
|
+
"ENDPOINT_PATH",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
ENDPOINT_METHOD = "POST"
|
|
21
|
+
ENDPOINT_PATH = "api/external/recipes/archive"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
25
|
+
@dataclass(kw_only=True)
|
|
26
|
+
class Arguments:
|
|
27
|
+
recipes: list[identifier_t.IdentifierKey]
|
|
28
|
+
reason: typing.Optional[str] = None
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
+
@dataclass(kw_only=True)
|
|
33
|
+
class Data:
|
|
34
|
+
pass
|
|
35
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/async_batch.py
CHANGED
|
@@ -26,6 +26,7 @@ class AsyncBatchRequestPath(StrEnum):
|
|
|
26
26
|
SET_RECIPE_METADATA = "recipes/set_recipe_metadata"
|
|
27
27
|
SET_RECIPE_TAGS = "recipes/set_recipe_tags"
|
|
28
28
|
EDIT_RECIPE_INPUTS = "recipes/edit_recipe_inputs"
|
|
29
|
+
ARCHIVE_RECIPES = "recipes/archive"
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/client_base.py
CHANGED
|
@@ -9,6 +9,7 @@ import typing # noqa: F401
|
|
|
9
9
|
import datetime # noqa: F401
|
|
10
10
|
from decimal import Decimal # noqa: F401
|
|
11
11
|
from pkgs.serialization import OpaqueKey
|
|
12
|
+
import uncountable.types.api.recipes.archive_recipes as archive_recipes_t
|
|
12
13
|
import uncountable.types.api.recipes.associate_recipe_as_input as associate_recipe_as_input_t
|
|
13
14
|
import uncountable.types.api.recipes.associate_recipe_as_lot as associate_recipe_as_lot_t
|
|
14
15
|
from uncountable.types import async_batch as async_batch_t
|
|
@@ -21,6 +22,7 @@ import uncountable.types.api.recipes.create_recipe as create_recipe_t
|
|
|
21
22
|
import uncountable.types.api.recipe_links.create_recipe_link as create_recipe_link_t
|
|
22
23
|
import uncountable.types.api.recipes.create_recipes as create_recipes_t
|
|
23
24
|
import uncountable.types.api.recipes.disassociate_recipe_as_input as disassociate_recipe_as_input_t
|
|
25
|
+
import uncountable.types.api.recipes.edit_recipe_inputs as edit_recipe_inputs_t
|
|
24
26
|
from uncountable.types import entity as entity_t
|
|
25
27
|
import uncountable.types.api.batch.execute_batch as execute_batch_t
|
|
26
28
|
import uncountable.types.api.batch.execute_batch_load_async as execute_batch_load_async_t
|
|
@@ -51,6 +53,7 @@ from uncountable.types import post_base as post_base_t
|
|
|
51
53
|
from uncountable.types import recipe_identifiers as recipe_identifiers_t
|
|
52
54
|
from uncountable.types import recipe_links as recipe_links_t
|
|
53
55
|
from uncountable.types import recipe_metadata as recipe_metadata_t
|
|
56
|
+
from uncountable.types import recipe_workflow_steps as recipe_workflow_steps_t
|
|
54
57
|
import uncountable.types.api.entity.resolve_entity_ids as resolve_entity_ids_t
|
|
55
58
|
import uncountable.types.api.outputs.resolve_output_conditions as resolve_output_conditions_t
|
|
56
59
|
import uncountable.types.api.triggers.run_trigger as run_trigger_t
|
|
@@ -81,6 +84,28 @@ class ClientMethods(ABC):
|
|
|
81
84
|
def do_request(self, *, api_request: APIRequest, return_type: type[DT]) -> DT:
|
|
82
85
|
...
|
|
83
86
|
|
|
87
|
+
def archive_recipes(
|
|
88
|
+
self,
|
|
89
|
+
*,
|
|
90
|
+
recipes: list[identifier_t.IdentifierKey],
|
|
91
|
+
reason: typing.Optional[str] = None,
|
|
92
|
+
) -> archive_recipes_t.Data:
|
|
93
|
+
"""Archive the provided recipes and their children
|
|
94
|
+
|
|
95
|
+
:param recipes: Identifier for the recipe
|
|
96
|
+
:param reason: This reason will be written to the audit log archive entry
|
|
97
|
+
"""
|
|
98
|
+
args = archive_recipes_t.Arguments(
|
|
99
|
+
recipes=recipes,
|
|
100
|
+
reason=reason,
|
|
101
|
+
)
|
|
102
|
+
api_request = APIRequest(
|
|
103
|
+
method=archive_recipes_t.ENDPOINT_METHOD,
|
|
104
|
+
endpoint=archive_recipes_t.ENDPOINT_PATH,
|
|
105
|
+
args=args,
|
|
106
|
+
)
|
|
107
|
+
return self.do_request(api_request=api_request, return_type=archive_recipes_t.Data)
|
|
108
|
+
|
|
84
109
|
def associate_recipe_as_input(
|
|
85
110
|
self,
|
|
86
111
|
*,
|
|
@@ -319,6 +344,29 @@ class ClientMethods(ABC):
|
|
|
319
344
|
)
|
|
320
345
|
return self.do_request(api_request=api_request, return_type=disassociate_recipe_as_input_t.Data)
|
|
321
346
|
|
|
347
|
+
def edit_recipe_inputs(
|
|
348
|
+
self,
|
|
349
|
+
*,
|
|
350
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
351
|
+
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
|
|
352
|
+
edits: list[edit_recipe_inputs_t.RecipeInputEdit],
|
|
353
|
+
) -> edit_recipe_inputs_t.Data:
|
|
354
|
+
"""Clear, update, or add inputs on a recipe
|
|
355
|
+
|
|
356
|
+
:param recipe_key: Identifier for the recipe
|
|
357
|
+
"""
|
|
358
|
+
args = edit_recipe_inputs_t.Arguments(
|
|
359
|
+
recipe_key=recipe_key,
|
|
360
|
+
recipe_workflow_step_identifier=recipe_workflow_step_identifier,
|
|
361
|
+
edits=edits,
|
|
362
|
+
)
|
|
363
|
+
api_request = APIRequest(
|
|
364
|
+
method=edit_recipe_inputs_t.ENDPOINT_METHOD,
|
|
365
|
+
endpoint=edit_recipe_inputs_t.ENDPOINT_PATH,
|
|
366
|
+
args=args,
|
|
367
|
+
)
|
|
368
|
+
return self.do_request(api_request=api_request, return_type=edit_recipe_inputs_t.Data)
|
|
369
|
+
|
|
322
370
|
def execute_batch(
|
|
323
371
|
self,
|
|
324
372
|
*,
|
|
File without changes
|
{UncountablePythonSDK-0.0.22.dist-info → UncountablePythonSDK-0.0.24.dist-info}/top_level.txt
RENAMED
|
File without changes
|