UncountablePythonSDK 0.0.41__py3-none-any.whl → 0.0.42__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.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/METADATA +5 -1
- {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/RECORD +122 -104
- docs/requirements.txt +3 -3
- examples/invoke_uploader.py +23 -0
- pkgs/argument_parser/argument_parser.py +1 -1
- pkgs/filesystem_utils/__init__.py +17 -0
- pkgs/filesystem_utils/_gdrive_session.py +306 -0
- pkgs/filesystem_utils/_local_session.py +69 -0
- pkgs/filesystem_utils/_sftp_session.py +147 -0
- pkgs/filesystem_utils/file_type_utils.py +61 -0
- pkgs/filesystem_utils/filesystem_session.py +39 -0
- pkgs/type_spec/emit_open_api.py +4 -2
- pkgs/type_spec/emit_open_api_util.py +4 -2
- pkgs/type_spec/emit_python.py +13 -14
- uncountable/core/file_upload.py +13 -3
- uncountable/integration/construct_client.py +1 -1
- uncountable/integration/cron.py +9 -6
- uncountable/integration/entrypoint.py +1 -1
- uncountable/integration/executors/executors.py +24 -0
- uncountable/integration/executors/generic_upload_executor.py +245 -0
- uncountable/integration/executors/script_executor.py +1 -1
- uncountable/integration/job.py +18 -1
- uncountable/integration/secret_retrieval/__init__.py +3 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +40 -0
- uncountable/integration/server.py +1 -1
- uncountable/types/__init__.py +8 -0
- uncountable/types/api/batch/execute_batch.py +5 -5
- uncountable/types/api/batch/execute_batch_load_async.py +3 -3
- uncountable/types/api/chemical/convert_chemical_formats.py +4 -4
- uncountable/types/api/entity/create_entities.py +4 -4
- uncountable/types/api/entity/create_entity.py +4 -4
- uncountable/types/api/entity/get_entities_data.py +4 -4
- uncountable/types/api/entity/list_entities.py +5 -5
- uncountable/types/api/entity/lock_entity.py +3 -3
- uncountable/types/api/entity/resolve_entity_ids.py +4 -4
- uncountable/types/api/entity/set_values.py +3 -3
- uncountable/types/api/entity/transition_entity_phase.py +5 -5
- uncountable/types/api/entity/unlock_entity.py +3 -3
- uncountable/types/api/equipment/associate_equipment_input.py +3 -3
- uncountable/types/api/field_options/upsert_field_options.py +4 -4
- uncountable/types/api/id_source/list_id_source.py +4 -4
- uncountable/types/api/id_source/match_id_source.py +4 -4
- uncountable/types/api/input_groups/get_input_group_names.py +4 -4
- uncountable/types/api/inputs/create_inputs.py +5 -5
- uncountable/types/api/inputs/get_input_data.py +7 -7
- uncountable/types/api/inputs/get_input_names.py +4 -4
- uncountable/types/api/inputs/get_inputs_data.py +7 -7
- uncountable/types/api/inputs/set_input_attribute_values.py +4 -4
- uncountable/types/api/inputs/set_input_category.py +3 -3
- uncountable/types/api/inputs/set_input_subcategories.py +3 -3
- uncountable/types/api/inputs/set_intermediate_type.py +3 -3
- uncountable/types/api/material_families/update_entity_material_families.py +3 -3
- uncountable/types/api/outputs/get_output_data.py +7 -7
- uncountable/types/api/outputs/get_output_names.py +4 -4
- uncountable/types/api/outputs/resolve_output_conditions.py +6 -6
- uncountable/types/api/permissions/set_core_permissions.py +7 -7
- uncountable/types/api/project/get_projects.py +4 -4
- uncountable/types/api/project/get_projects_data.py +4 -4
- uncountable/types/api/recipe_links/create_recipe_link.py +3 -3
- uncountable/types/api/recipe_links/remove_recipe_link.py +3 -3
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +4 -4
- uncountable/types/api/recipes/add_recipe_to_project.py +3 -3
- uncountable/types/api/recipes/archive_recipes.py +3 -3
- uncountable/types/api/recipes/associate_recipe_as_input.py +3 -3
- uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -3
- uncountable/types/api/recipes/create_recipe.py +3 -3
- uncountable/types/api/recipes/create_recipes.py +5 -5
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -3
- uncountable/types/api/recipes/edit_recipe_inputs.py +12 -12
- uncountable/types/api/recipes/get_curve.py +3 -3
- uncountable/types/api/recipes/get_recipe_calculations.py +4 -4
- uncountable/types/api/recipes/get_recipe_links.py +3 -3
- uncountable/types/api/recipes/get_recipe_names.py +4 -4
- uncountable/types/api/recipes/get_recipe_output_metadata.py +4 -4
- uncountable/types/api/recipes/get_recipes_data.py +12 -12
- uncountable/types/api/recipes/lock_recipes.py +4 -4
- uncountable/types/api/recipes/remove_recipe_from_project.py +3 -3
- uncountable/types/api/recipes/set_recipe_inputs.py +4 -4
- uncountable/types/api/recipes/set_recipe_metadata.py +3 -3
- uncountable/types/api/recipes/set_recipe_output_annotations.py +7 -7
- uncountable/types/api/recipes/set_recipe_outputs.py +5 -5
- uncountable/types/api/recipes/set_recipe_tags.py +7 -7
- uncountable/types/api/recipes/unarchive_recipes.py +3 -3
- uncountable/types/api/recipes/unlock_recipes.py +3 -3
- uncountable/types/api/triggers/run_trigger.py +3 -3
- uncountable/types/api/uploader/__init__.py +1 -0
- uncountable/types/api/uploader/invoke_uploader.py +38 -0
- uncountable/types/async_batch_processor.py +36 -0
- uncountable/types/async_batch_t.py +6 -4
- uncountable/types/calculations_t.py +2 -2
- uncountable/types/chemical_structure_t.py +2 -2
- uncountable/types/client_base.py +25 -2
- uncountable/types/curves_t.py +3 -3
- uncountable/types/entity_t.py +2 -2
- uncountable/types/experiment_groups_t.py +2 -2
- uncountable/types/field_values_t.py +5 -5
- uncountable/types/fields_t.py +2 -2
- uncountable/types/generic_upload.py +9 -0
- uncountable/types/generic_upload_t.py +41 -0
- uncountable/types/id_source_t.py +5 -5
- uncountable/types/identifier_t.py +4 -4
- uncountable/types/input_attributes_t.py +2 -2
- uncountable/types/inputs_t.py +2 -2
- uncountable/types/job_definition.py +26 -0
- uncountable/types/job_definition_t.py +203 -0
- uncountable/types/outputs_t.py +2 -2
- uncountable/types/phases_t.py +2 -2
- uncountable/types/recipe_identifiers_t.py +4 -4
- uncountable/types/recipe_links_t.py +2 -2
- uncountable/types/recipe_metadata_t.py +4 -4
- uncountable/types/recipe_output_metadata_t.py +2 -2
- uncountable/types/recipe_tags_t.py +2 -2
- uncountable/types/recipe_workflow_steps_t.py +5 -5
- uncountable/types/recipes_t.py +2 -2
- uncountable/types/response_t.py +2 -2
- uncountable/types/secret_retrieval.py +12 -0
- uncountable/types/secret_retrieval_t.py +69 -0
- uncountable/types/units_t.py +2 -2
- uncountable/types/users_t.py +2 -2
- uncountable/types/workflows_t.py +3 -3
- uncountable/integration/types.py +0 -89
- {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/WHEEL +0 -0
- {UncountablePythonSDK-0.0.41.dist-info → UncountablePythonSDK-0.0.42.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# flake8: noqa: F821
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
6
|
+
# Kept only for SDK backwards compatibility
|
|
7
|
+
from .job_definition_t import JobDefinitionType as JobDefinitionType
|
|
8
|
+
from .job_definition_t import JobExecutorType as JobExecutorType
|
|
9
|
+
from .job_definition_t import AuthRetrievalType as AuthRetrievalType
|
|
10
|
+
from .job_definition_t import GenericUploadDataSourceType as GenericUploadDataSourceType
|
|
11
|
+
from .job_definition_t import JobExecutorBase as JobExecutorBase
|
|
12
|
+
from .job_definition_t import JobExecutorScript as JobExecutorScript
|
|
13
|
+
from .job_definition_t import GenericUploadDataSourceBase as GenericUploadDataSourceBase
|
|
14
|
+
from .job_definition_t import GenericUploadDataSourceSFTP as GenericUploadDataSourceSFTP
|
|
15
|
+
from .job_definition_t import GenericUploadDataSource as GenericUploadDataSource
|
|
16
|
+
from .job_definition_t import JobExecutorGenericUpload as JobExecutorGenericUpload
|
|
17
|
+
from .job_definition_t import JobExecutor as JobExecutor
|
|
18
|
+
from .job_definition_t import JobDefinitionBase as JobDefinitionBase
|
|
19
|
+
from .job_definition_t import CronJobDefinition as CronJobDefinition
|
|
20
|
+
from .job_definition_t import JobDefinition as JobDefinition
|
|
21
|
+
from .job_definition_t import AuthRetrievalBase as AuthRetrievalBase
|
|
22
|
+
from .job_definition_t import AuthRetrievalEnv as AuthRetrievalEnv
|
|
23
|
+
from .job_definition_t import AuthRetrieval as AuthRetrieval
|
|
24
|
+
from .job_definition_t import ProfileDefinition as ProfileDefinition
|
|
25
|
+
from .job_definition_t import ProfileMetadata as ProfileMetadata
|
|
26
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
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 pkgs.strenum_compat import StrEnum
|
|
11
|
+
import dataclasses
|
|
12
|
+
from pkgs.serialization import serial_class
|
|
13
|
+
from pkgs.serialization import serial_union_annotation
|
|
14
|
+
from . import generic_upload_t
|
|
15
|
+
from . import secret_retrieval_t
|
|
16
|
+
|
|
17
|
+
__all__: list[str] = [
|
|
18
|
+
"AuthRetrieval",
|
|
19
|
+
"AuthRetrievalBase",
|
|
20
|
+
"AuthRetrievalEnv",
|
|
21
|
+
"AuthRetrievalType",
|
|
22
|
+
"CronJobDefinition",
|
|
23
|
+
"GenericUploadDataSource",
|
|
24
|
+
"GenericUploadDataSourceBase",
|
|
25
|
+
"GenericUploadDataSourceSFTP",
|
|
26
|
+
"GenericUploadDataSourceType",
|
|
27
|
+
"JobDefinition",
|
|
28
|
+
"JobDefinitionBase",
|
|
29
|
+
"JobDefinitionType",
|
|
30
|
+
"JobExecutor",
|
|
31
|
+
"JobExecutorBase",
|
|
32
|
+
"JobExecutorGenericUpload",
|
|
33
|
+
"JobExecutorScript",
|
|
34
|
+
"JobExecutorType",
|
|
35
|
+
"ProfileDefinition",
|
|
36
|
+
"ProfileMetadata",
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
41
|
+
class JobDefinitionType(StrEnum):
|
|
42
|
+
CRON = "cron"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
46
|
+
class JobExecutorType(StrEnum):
|
|
47
|
+
SCRIPT = "script"
|
|
48
|
+
GENERIC_UPLOAD = "generic_upload"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
52
|
+
class AuthRetrievalType(StrEnum):
|
|
53
|
+
ENV = "env"
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
57
|
+
class GenericUploadDataSourceType(StrEnum):
|
|
58
|
+
SFTP = "sftp"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
62
|
+
@dataclasses.dataclass(kw_only=True)
|
|
63
|
+
class JobExecutorBase:
|
|
64
|
+
type: JobExecutorType
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
68
|
+
@serial_class(
|
|
69
|
+
parse_require={"type"},
|
|
70
|
+
)
|
|
71
|
+
@dataclasses.dataclass(kw_only=True)
|
|
72
|
+
class JobExecutorScript(JobExecutorBase):
|
|
73
|
+
type: typing.Literal[JobExecutorType.SCRIPT] = JobExecutorType.SCRIPT
|
|
74
|
+
import_path: str
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
78
|
+
@dataclasses.dataclass(kw_only=True)
|
|
79
|
+
class GenericUploadDataSourceBase:
|
|
80
|
+
type: GenericUploadDataSourceType
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
84
|
+
@serial_class(
|
|
85
|
+
parse_require={"type"},
|
|
86
|
+
)
|
|
87
|
+
@dataclasses.dataclass(kw_only=True)
|
|
88
|
+
class GenericUploadDataSourceSFTP(GenericUploadDataSourceBase):
|
|
89
|
+
type: typing.Literal[GenericUploadDataSourceType.SFTP] = GenericUploadDataSourceType.SFTP
|
|
90
|
+
host: str
|
|
91
|
+
username: str
|
|
92
|
+
pem_secret: secret_retrieval_t.SecretRetrieval
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
96
|
+
GenericUploadDataSource = typing.Annotated[
|
|
97
|
+
typing.Union[GenericUploadDataSourceSFTP],
|
|
98
|
+
serial_union_annotation(
|
|
99
|
+
discriminator="type",
|
|
100
|
+
discriminator_map={
|
|
101
|
+
"sftp": GenericUploadDataSourceSFTP,
|
|
102
|
+
},
|
|
103
|
+
),
|
|
104
|
+
]
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
108
|
+
@serial_class(
|
|
109
|
+
parse_require={"type"},
|
|
110
|
+
)
|
|
111
|
+
@dataclasses.dataclass(kw_only=True)
|
|
112
|
+
class JobExecutorGenericUpload(JobExecutorBase):
|
|
113
|
+
type: typing.Literal[JobExecutorType.GENERIC_UPLOAD] = JobExecutorType.GENERIC_UPLOAD
|
|
114
|
+
data_source: GenericUploadDataSource
|
|
115
|
+
upload_strategy: generic_upload_t.GenericUploadStrategy
|
|
116
|
+
remote_directories: list[generic_upload_t.GenericRemoteDirectoryScope]
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
120
|
+
JobExecutor = typing.Annotated[
|
|
121
|
+
typing.Union[JobExecutorScript, JobExecutorGenericUpload],
|
|
122
|
+
serial_union_annotation(
|
|
123
|
+
discriminator="type",
|
|
124
|
+
discriminator_map={
|
|
125
|
+
"script": JobExecutorScript,
|
|
126
|
+
"generic_upload": JobExecutorGenericUpload,
|
|
127
|
+
},
|
|
128
|
+
),
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
133
|
+
@dataclasses.dataclass(kw_only=True)
|
|
134
|
+
class JobDefinitionBase:
|
|
135
|
+
id: str
|
|
136
|
+
name: str
|
|
137
|
+
executor: JobExecutor
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
141
|
+
@serial_class(
|
|
142
|
+
parse_require={"type"},
|
|
143
|
+
)
|
|
144
|
+
@dataclasses.dataclass(kw_only=True)
|
|
145
|
+
class CronJobDefinition(JobDefinitionBase):
|
|
146
|
+
type: typing.Literal[JobDefinitionType.CRON] = JobDefinitionType.CRON
|
|
147
|
+
cron_spec: str
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
151
|
+
JobDefinition = typing.Annotated[
|
|
152
|
+
typing.Union[CronJobDefinition],
|
|
153
|
+
serial_union_annotation(
|
|
154
|
+
discriminator="type",
|
|
155
|
+
discriminator_map={
|
|
156
|
+
"cron": CronJobDefinition,
|
|
157
|
+
},
|
|
158
|
+
),
|
|
159
|
+
]
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
163
|
+
@dataclasses.dataclass(kw_only=True)
|
|
164
|
+
class AuthRetrievalBase:
|
|
165
|
+
type: AuthRetrievalType
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
169
|
+
@serial_class(
|
|
170
|
+
parse_require={"type"},
|
|
171
|
+
)
|
|
172
|
+
@dataclasses.dataclass(kw_only=True)
|
|
173
|
+
class AuthRetrievalEnv(AuthRetrievalBase):
|
|
174
|
+
type: typing.Literal[AuthRetrievalType.ENV] = AuthRetrievalType.ENV
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
178
|
+
AuthRetrieval = typing.Annotated[
|
|
179
|
+
typing.Union[AuthRetrievalEnv],
|
|
180
|
+
serial_union_annotation(
|
|
181
|
+
discriminator="type",
|
|
182
|
+
discriminator_map={
|
|
183
|
+
"env": AuthRetrievalEnv,
|
|
184
|
+
},
|
|
185
|
+
),
|
|
186
|
+
]
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
190
|
+
@dataclasses.dataclass(kw_only=True)
|
|
191
|
+
class ProfileDefinition:
|
|
192
|
+
auth_retrieval: AuthRetrieval
|
|
193
|
+
base_url: str
|
|
194
|
+
jobs: list[JobDefinition]
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
198
|
+
@dataclasses.dataclass(kw_only=True)
|
|
199
|
+
class ProfileMetadata:
|
|
200
|
+
name: str
|
|
201
|
+
base_url: str
|
|
202
|
+
auth_retrieval: AuthRetrieval
|
|
203
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/outputs_t.py
CHANGED
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from . import base_t
|
|
12
12
|
from . import units_t
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ __all__: list[str] = [
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
20
|
-
@dataclass(kw_only=True)
|
|
20
|
+
@dataclasses.dataclass(kw_only=True)
|
|
21
21
|
class SimpleOutput:
|
|
22
22
|
output_id: base_t.ObjectId
|
|
23
23
|
name: str
|
uncountable/types/phases_t.py
CHANGED
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from . import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -16,7 +16,7 @@ __all__: list[str] = [
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
@dataclass(kw_only=True)
|
|
19
|
+
@dataclasses.dataclass(kw_only=True)
|
|
20
20
|
class Phase:
|
|
21
21
|
id: base_t.ObjectId
|
|
22
22
|
name: str
|
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
from . import base_t
|
|
13
13
|
|
|
@@ -24,7 +24,7 @@ __all__: list[str] = [
|
|
|
24
24
|
@serial_class(
|
|
25
25
|
parse_require={"type"},
|
|
26
26
|
)
|
|
27
|
-
@dataclass(kw_only=True)
|
|
27
|
+
@dataclasses.dataclass(kw_only=True)
|
|
28
28
|
class RecipeIdentifierEditableName:
|
|
29
29
|
type: typing.Literal["name"] = "name"
|
|
30
30
|
editable_name: str
|
|
@@ -35,7 +35,7 @@ class RecipeIdentifierEditableName:
|
|
|
35
35
|
to_string_values={"quantity_dec"},
|
|
36
36
|
parse_require={"type"},
|
|
37
37
|
)
|
|
38
|
-
@dataclass(kw_only=True)
|
|
38
|
+
@dataclasses.dataclass(kw_only=True)
|
|
39
39
|
class RecipeIdentifierMetadata:
|
|
40
40
|
type: typing.Literal["metadata"] = "metadata"
|
|
41
41
|
recipe_metadata_id: base_t.ObjectId
|
|
@@ -47,7 +47,7 @@ class RecipeIdentifierMetadata:
|
|
|
47
47
|
@serial_class(
|
|
48
48
|
parse_require={"type"},
|
|
49
49
|
)
|
|
50
|
-
@dataclass(kw_only=True)
|
|
50
|
+
@dataclasses.dataclass(kw_only=True)
|
|
51
51
|
class RecipeIdentifierMaterialFamily:
|
|
52
52
|
type: typing.Literal["material_family_id"] = "material_family_id"
|
|
53
53
|
material_family_id: base_t.ObjectId
|
|
@@ -8,7 +8,7 @@ import typing # noqa: F401
|
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from pkgs.strenum_compat import StrEnum
|
|
11
|
-
|
|
11
|
+
import dataclasses
|
|
12
12
|
from pkgs.serialization import serial_string_enum
|
|
13
13
|
from . import base_t
|
|
14
14
|
|
|
@@ -41,7 +41,7 @@ class RecipeLinkType(StrEnum):
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
44
|
-
@dataclass(kw_only=True, frozen=True, eq=True)
|
|
44
|
+
@dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
|
|
45
45
|
class RecipeLink:
|
|
46
46
|
recipe_id_from: base_t.ObjectId
|
|
47
47
|
recipe_id_to: base_t.ObjectId
|
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
from . import base_t
|
|
13
13
|
|
|
@@ -23,7 +23,7 @@ __all__: list[str] = [
|
|
|
23
23
|
unconverted_values={"value_json"},
|
|
24
24
|
to_string_values={"value_numeric"},
|
|
25
25
|
)
|
|
26
|
-
@dataclass(kw_only=True)
|
|
26
|
+
@dataclasses.dataclass(kw_only=True)
|
|
27
27
|
class MetadataValue:
|
|
28
28
|
metadata_id: base_t.ObjectId
|
|
29
29
|
value_numeric: typing.Optional[Decimal] = None
|
|
@@ -32,7 +32,7 @@ class MetadataValue:
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
-
@dataclass(kw_only=True)
|
|
35
|
+
@dataclasses.dataclass(kw_only=True)
|
|
36
36
|
class SimpleRecipeMetadataField:
|
|
37
37
|
metadata_id: base_t.ObjectId
|
|
38
38
|
name: str
|
|
@@ -44,7 +44,7 @@ class SimpleRecipeMetadataField:
|
|
|
44
44
|
unconverted_values={"quantity_json"},
|
|
45
45
|
to_string_values={"quantity_dec"},
|
|
46
46
|
)
|
|
47
|
-
@dataclass(kw_only=True)
|
|
47
|
+
@dataclasses.dataclass(kw_only=True)
|
|
48
48
|
class RecipeMetadata:
|
|
49
49
|
metadata_id: base_t.ObjectId
|
|
50
50
|
quantity_dec: typing.Optional[Decimal] = None
|
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from . import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -16,7 +16,7 @@ __all__: list[str] = [
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
@dataclass(kw_only=True)
|
|
19
|
+
@dataclasses.dataclass(kw_only=True)
|
|
20
20
|
class RecipeOutputMetadataField:
|
|
21
21
|
id: base_t.ObjectId
|
|
22
22
|
name: str
|
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from . import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -16,7 +16,7 @@ __all__: list[str] = [
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
@dataclass(kw_only=True)
|
|
19
|
+
@dataclasses.dataclass(kw_only=True)
|
|
20
20
|
class SimpleRecipeTag:
|
|
21
21
|
recipe_tag_id: base_t.ObjectId
|
|
22
22
|
name: str
|
|
@@ -8,7 +8,7 @@ import typing # noqa: F401
|
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from pkgs.strenum_compat import StrEnum
|
|
11
|
-
|
|
11
|
+
import dataclasses
|
|
12
12
|
from pkgs.serialization import serial_class
|
|
13
13
|
from pkgs.serialization import serial_union_annotation
|
|
14
14
|
from . import identifier_t
|
|
@@ -32,7 +32,7 @@ class RecipeWorkflowStepIdentifierType(StrEnum):
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
35
|
-
@dataclass(kw_only=True)
|
|
35
|
+
@dataclasses.dataclass(kw_only=True)
|
|
36
36
|
class RecipeWorkflowStepIdentifierBase:
|
|
37
37
|
type: RecipeWorkflowStepIdentifierType
|
|
38
38
|
|
|
@@ -41,7 +41,7 @@ class RecipeWorkflowStepIdentifierBase:
|
|
|
41
41
|
@serial_class(
|
|
42
42
|
parse_require={"type"},
|
|
43
43
|
)
|
|
44
|
-
@dataclass(kw_only=True)
|
|
44
|
+
@dataclasses.dataclass(kw_only=True)
|
|
45
45
|
class RecipeWorkflowStepIdentifierDefault(RecipeWorkflowStepIdentifierBase):
|
|
46
46
|
type: typing.Literal[RecipeWorkflowStepIdentifierType.DEFAULT] = RecipeWorkflowStepIdentifierType.DEFAULT
|
|
47
47
|
|
|
@@ -56,7 +56,7 @@ class RecipeWorkflowStepPosition(StrEnum):
|
|
|
56
56
|
@serial_class(
|
|
57
57
|
parse_require={"type"},
|
|
58
58
|
)
|
|
59
|
-
@dataclass(kw_only=True)
|
|
59
|
+
@dataclasses.dataclass(kw_only=True)
|
|
60
60
|
class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase):
|
|
61
61
|
type: typing.Literal[RecipeWorkflowStepIdentifierType.WORKFLOW_STEP] = RecipeWorkflowStepIdentifierType.WORKFLOW_STEP
|
|
62
62
|
workflow_step_key: identifier_t.IdentifierKey
|
|
@@ -67,7 +67,7 @@ class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase)
|
|
|
67
67
|
@serial_class(
|
|
68
68
|
parse_require={"type"},
|
|
69
69
|
)
|
|
70
|
-
@dataclass(kw_only=True)
|
|
70
|
+
@dataclasses.dataclass(kw_only=True)
|
|
71
71
|
class RecipeWorkflowStepIdentifierKey:
|
|
72
72
|
type: typing.Literal[RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY] = RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY
|
|
73
73
|
recipe_workflow_step_key: identifier_t.IdentifierKey
|
uncountable/types/recipes_t.py
CHANGED
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
|
|
12
12
|
__all__: list[str] = [
|
|
13
13
|
"RecipeAttributeFormatting",
|
|
@@ -15,7 +15,7 @@ __all__: list[str] = [
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
18
|
-
@dataclass(kw_only=True)
|
|
18
|
+
@dataclasses.dataclass(kw_only=True)
|
|
19
19
|
class RecipeAttributeFormatting:
|
|
20
20
|
background_color: str
|
|
21
21
|
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/response_t.py
CHANGED
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -19,7 +19,7 @@ __all__: list[str] = [
|
|
|
19
19
|
@serial_class(
|
|
20
20
|
parse_require={"status"},
|
|
21
21
|
)
|
|
22
|
-
@dataclass(kw_only=True)
|
|
22
|
+
@dataclasses.dataclass(kw_only=True)
|
|
23
23
|
class Response:
|
|
24
24
|
status: typing.Literal["ok"] = "ok"
|
|
25
25
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# flake8: noqa: F821
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
3
|
+
# fmt: off
|
|
4
|
+
# isort: skip_file
|
|
5
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
6
|
+
# Kept only for SDK backwards compatibility
|
|
7
|
+
from .secret_retrieval_t import SecretRetrievalBase as SecretRetrievalBase
|
|
8
|
+
from .secret_retrieval_t import SecretRetrievalType as SecretRetrievalType
|
|
9
|
+
from .secret_retrieval_t import SecretRetrievalEnv as SecretRetrievalEnv
|
|
10
|
+
from .secret_retrieval_t import SecretRetrievalAWS as SecretRetrievalAWS
|
|
11
|
+
from .secret_retrieval_t import SecretRetrieval as SecretRetrieval
|
|
12
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402 Q003
|
|
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 pkgs.strenum_compat import StrEnum
|
|
11
|
+
import dataclasses
|
|
12
|
+
from pkgs.serialization import serial_class
|
|
13
|
+
from pkgs.serialization import serial_union_annotation
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"SecretRetrieval",
|
|
17
|
+
"SecretRetrievalAWS",
|
|
18
|
+
"SecretRetrievalBase",
|
|
19
|
+
"SecretRetrievalEnv",
|
|
20
|
+
"SecretRetrievalType",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
25
|
+
@dataclasses.dataclass(kw_only=True)
|
|
26
|
+
class SecretRetrievalBase:
|
|
27
|
+
type: SecretRetrievalType
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
31
|
+
class SecretRetrievalType(StrEnum):
|
|
32
|
+
ENV = "env"
|
|
33
|
+
AWS = "aws"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
37
|
+
@serial_class(
|
|
38
|
+
parse_require={"type"},
|
|
39
|
+
)
|
|
40
|
+
@dataclasses.dataclass(kw_only=True)
|
|
41
|
+
class SecretRetrievalEnv(SecretRetrievalBase):
|
|
42
|
+
type: typing.Literal[SecretRetrievalType.ENV] = SecretRetrievalType.ENV
|
|
43
|
+
env_key: str
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
47
|
+
@serial_class(
|
|
48
|
+
parse_require={"type"},
|
|
49
|
+
)
|
|
50
|
+
@dataclasses.dataclass(kw_only=True)
|
|
51
|
+
class SecretRetrievalAWS(SecretRetrievalBase):
|
|
52
|
+
type: typing.Literal[SecretRetrievalType.AWS] = SecretRetrievalType.AWS
|
|
53
|
+
secret_name: str
|
|
54
|
+
region: str
|
|
55
|
+
sub_key: typing.Optional[str] = None
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
59
|
+
SecretRetrieval = typing.Annotated[
|
|
60
|
+
typing.Union[SecretRetrievalEnv, SecretRetrievalAWS],
|
|
61
|
+
serial_union_annotation(
|
|
62
|
+
discriminator="type",
|
|
63
|
+
discriminator_map={
|
|
64
|
+
"env": SecretRetrievalEnv,
|
|
65
|
+
"aws": SecretRetrievalAWS,
|
|
66
|
+
},
|
|
67
|
+
),
|
|
68
|
+
]
|
|
69
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/units_t.py
CHANGED
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from . import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -16,7 +16,7 @@ __all__: list[str] = [
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
@dataclass(kw_only=True)
|
|
19
|
+
@dataclasses.dataclass(kw_only=True)
|
|
20
20
|
class SimpleUnit:
|
|
21
21
|
unit_id: base_t.ObjectId
|
|
22
22
|
name: str
|
uncountable/types/users_t.py
CHANGED
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from . import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -16,7 +16,7 @@ __all__: list[str] = [
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
@dataclass(kw_only=True)
|
|
19
|
+
@dataclasses.dataclass(kw_only=True)
|
|
20
20
|
class SimpleUser:
|
|
21
21
|
user_id: base_t.ObjectId
|
|
22
22
|
display_name: str
|
uncountable/types/workflows_t.py
CHANGED
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
import typing # noqa: F401
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
10
|
+
import dataclasses
|
|
11
11
|
from . import base_t
|
|
12
12
|
|
|
13
13
|
__all__: list[str] = [
|
|
@@ -17,14 +17,14 @@ __all__: list[str] = [
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
20
|
-
@dataclass(kw_only=True)
|
|
20
|
+
@dataclasses.dataclass(kw_only=True)
|
|
21
21
|
class SimpleWorkflowStep:
|
|
22
22
|
workflow_step_id: base_t.ObjectId
|
|
23
23
|
name: typing.Optional[str]
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
27
|
-
@dataclass(kw_only=True)
|
|
27
|
+
@dataclasses.dataclass(kw_only=True)
|
|
28
28
|
class SimpleWorkflow:
|
|
29
29
|
workflow_id: base_t.ObjectId
|
|
30
30
|
name: str
|