UncountablePythonSDK 0.0.8__py3-none-any.whl → 0.0.92__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of UncountablePythonSDK might be problematic. Click here for more details.

Files changed (312) hide show
  1. UncountablePythonSDK-0.0.92.dist-info/METADATA +61 -0
  2. UncountablePythonSDK-0.0.92.dist-info/RECORD +301 -0
  3. {UncountablePythonSDK-0.0.8.dist-info → UncountablePythonSDK-0.0.92.dist-info}/WHEEL +1 -1
  4. {UncountablePythonSDK-0.0.8.dist-info → UncountablePythonSDK-0.0.92.dist-info}/top_level.txt +1 -1
  5. docs/.gitignore +1 -0
  6. docs/conf.py +57 -0
  7. docs/index.md +13 -0
  8. docs/justfile +12 -0
  9. docs/quickstart.md +19 -0
  10. docs/requirements.txt +7 -0
  11. docs/static/favicons/android-chrome-192x192.png +0 -0
  12. docs/static/favicons/android-chrome-512x512.png +0 -0
  13. docs/static/favicons/apple-touch-icon.png +0 -0
  14. docs/static/favicons/browserconfig.xml +9 -0
  15. docs/static/favicons/favicon-16x16.png +0 -0
  16. docs/static/favicons/favicon-32x32.png +0 -0
  17. docs/static/favicons/manifest.json +18 -0
  18. docs/static/favicons/mstile-150x150.png +0 -0
  19. docs/static/favicons/safari-pinned-tab.svg +32 -0
  20. docs/static/logo_blue.png +0 -0
  21. examples/async_batch.py +35 -0
  22. examples/create_entity.py +22 -17
  23. examples/download_files.py +26 -0
  24. examples/edit_recipe_inputs.py +50 -0
  25. examples/integration-server/jobs/materials_auto/example_cron.py +18 -0
  26. examples/integration-server/jobs/materials_auto/example_wh.py +15 -0
  27. examples/integration-server/jobs/materials_auto/profile.yaml +43 -0
  28. examples/integration-server/pyproject.toml +224 -0
  29. examples/invoke_uploader.py +26 -0
  30. examples/set_recipe_metadata_file.py +40 -0
  31. examples/set_recipe_output_file_sdk.py +26 -0
  32. examples/upload_files.py +18 -0
  33. pkgs/argument_parser/__init__.py +5 -0
  34. pkgs/argument_parser/_is_enum.py +1 -6
  35. pkgs/argument_parser/argument_parser.py +232 -76
  36. pkgs/argument_parser/case_convert.py +4 -3
  37. pkgs/filesystem_utils/__init__.py +20 -0
  38. pkgs/filesystem_utils/_blob_session.py +137 -0
  39. pkgs/filesystem_utils/_gdrive_session.py +309 -0
  40. pkgs/filesystem_utils/_local_session.py +69 -0
  41. pkgs/filesystem_utils/_s3_session.py +117 -0
  42. pkgs/filesystem_utils/_sftp_session.py +147 -0
  43. pkgs/filesystem_utils/file_type_utils.py +91 -0
  44. pkgs/filesystem_utils/filesystem_session.py +39 -0
  45. pkgs/py.typed +0 -0
  46. pkgs/serialization/__init__.py +8 -1
  47. pkgs/serialization/annotation.py +64 -0
  48. pkgs/serialization/missing_sentry.py +1 -1
  49. pkgs/serialization/opaque_key.py +1 -1
  50. pkgs/serialization/serial_alias.py +47 -0
  51. pkgs/serialization/serial_class.py +65 -50
  52. pkgs/serialization/serial_generic.py +16 -0
  53. pkgs/serialization/serial_union.py +84 -0
  54. pkgs/serialization/yaml.py +57 -0
  55. pkgs/serialization_util/__init__.py +7 -7
  56. pkgs/serialization_util/_get_type_for_serialization.py +1 -3
  57. pkgs/serialization_util/convert_to_snakecase.py +27 -0
  58. pkgs/serialization_util/dataclasses.py +14 -0
  59. pkgs/serialization_util/serialization_helpers.py +116 -74
  60. pkgs/strenum_compat/strenum_compat.py +1 -9
  61. pkgs/type_spec/actions_registry/__init__.py +0 -0
  62. pkgs/type_spec/actions_registry/__main__.py +126 -0
  63. pkgs/type_spec/actions_registry/emit_typescript.py +182 -0
  64. pkgs/type_spec/builder.py +475 -89
  65. pkgs/type_spec/config.py +24 -19
  66. pkgs/type_spec/emit_io_ts.py +5 -2
  67. pkgs/type_spec/emit_open_api.py +266 -32
  68. pkgs/type_spec/emit_open_api_util.py +32 -13
  69. pkgs/type_spec/emit_python.py +599 -151
  70. pkgs/type_spec/emit_typescript.py +74 -273
  71. pkgs/type_spec/emit_typescript_util.py +239 -5
  72. pkgs/type_spec/load_types.py +55 -10
  73. pkgs/type_spec/open_api_util.py +30 -41
  74. pkgs/type_spec/parts/base.py.prepart +4 -3
  75. pkgs/type_spec/type_info/emit_type_info.py +178 -16
  76. pkgs/type_spec/util.py +11 -11
  77. pkgs/type_spec/value_spec/__main__.py +3 -3
  78. pkgs/type_spec/value_spec/convert_type.py +8 -1
  79. pkgs/type_spec/value_spec/emit_python.py +13 -4
  80. uncountable/__init__.py +1 -2
  81. uncountable/core/__init__.py +12 -2
  82. uncountable/core/async_batch.py +37 -0
  83. uncountable/core/client.py +293 -43
  84. uncountable/core/environment.py +41 -0
  85. uncountable/core/file_upload.py +135 -0
  86. uncountable/core/types.py +17 -0
  87. uncountable/integration/__init__.py +0 -0
  88. uncountable/integration/cli.py +49 -0
  89. uncountable/integration/construct_client.py +51 -0
  90. uncountable/integration/cron.py +29 -0
  91. uncountable/integration/db/__init__.py +0 -0
  92. uncountable/integration/db/connect.py +18 -0
  93. uncountable/integration/db/session.py +25 -0
  94. uncountable/integration/entrypoint.py +13 -0
  95. uncountable/integration/executors/__init__.py +0 -0
  96. uncountable/integration/executors/executors.py +148 -0
  97. uncountable/integration/executors/generic_upload_executor.py +284 -0
  98. uncountable/integration/executors/script_executor.py +25 -0
  99. uncountable/integration/job.py +87 -0
  100. uncountable/integration/queue_runner/__init__.py +0 -0
  101. uncountable/integration/queue_runner/command_server/__init__.py +24 -0
  102. uncountable/integration/queue_runner/command_server/command_client.py +68 -0
  103. uncountable/integration/queue_runner/command_server/command_server.py +64 -0
  104. uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  105. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +22 -0
  106. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +40 -0
  107. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +38 -0
  108. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +129 -0
  109. uncountable/integration/queue_runner/command_server/types.py +52 -0
  110. uncountable/integration/queue_runner/datastore/__init__.py +3 -0
  111. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +93 -0
  112. uncountable/integration/queue_runner/datastore/interface.py +19 -0
  113. uncountable/integration/queue_runner/datastore/model.py +17 -0
  114. uncountable/integration/queue_runner/job_scheduler.py +163 -0
  115. uncountable/integration/queue_runner/queue_runner.py +26 -0
  116. uncountable/integration/queue_runner/types.py +7 -0
  117. uncountable/integration/queue_runner/worker.py +119 -0
  118. uncountable/integration/scan_profiles.py +67 -0
  119. uncountable/integration/scheduler.py +150 -0
  120. uncountable/integration/secret_retrieval/__init__.py +3 -0
  121. uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
  122. uncountable/integration/server.py +117 -0
  123. uncountable/integration/telemetry.py +209 -0
  124. uncountable/integration/webhook_server/entrypoint.py +170 -0
  125. uncountable/types/__init__.py +136 -20
  126. uncountable/types/api/batch/execute_batch.py +15 -7
  127. uncountable/types/api/batch/execute_batch_load_async.py +42 -0
  128. uncountable/types/api/chemical/__init__.py +1 -0
  129. uncountable/types/api/chemical/convert_chemical_formats.py +63 -0
  130. uncountable/types/api/entity/create_entities.py +23 -11
  131. uncountable/types/api/entity/create_entity.py +21 -12
  132. uncountable/types/api/entity/get_entities_data.py +18 -8
  133. uncountable/types/api/entity/grant_entity_permissions.py +48 -0
  134. uncountable/types/api/entity/list_entities.py +27 -12
  135. uncountable/types/api/entity/lock_entity.py +45 -0
  136. uncountable/types/api/entity/resolve_entity_ids.py +17 -7
  137. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  138. uncountable/types/api/entity/set_values.py +14 -7
  139. uncountable/types/api/entity/transition_entity_phase.py +80 -0
  140. uncountable/types/api/entity/unlock_entity.py +44 -0
  141. uncountable/types/api/equipment/__init__.py +1 -0
  142. uncountable/types/api/equipment/associate_equipment_input.py +44 -0
  143. uncountable/types/api/field_options/__init__.py +1 -0
  144. uncountable/types/api/field_options/upsert_field_options.py +55 -0
  145. uncountable/types/api/files/__init__.py +1 -0
  146. uncountable/types/api/files/download_file.py +77 -0
  147. uncountable/types/api/id_source/__init__.py +1 -0
  148. uncountable/types/api/id_source/list_id_source.py +56 -0
  149. uncountable/types/api/id_source/match_id_source.py +54 -0
  150. uncountable/types/api/input_groups/get_input_group_names.py +16 -6
  151. uncountable/types/api/inputs/create_inputs.py +24 -11
  152. uncountable/types/api/inputs/get_input_data.py +32 -13
  153. uncountable/types/api/inputs/get_input_names.py +18 -8
  154. uncountable/types/api/inputs/get_inputs_data.py +29 -10
  155. uncountable/types/api/inputs/set_input_attribute_values.py +16 -9
  156. uncountable/types/api/inputs/set_input_category.py +44 -0
  157. uncountable/types/api/inputs/set_input_subcategories.py +45 -0
  158. uncountable/types/api/inputs/set_intermediate_type.py +50 -0
  159. uncountable/types/api/material_families/__init__.py +1 -0
  160. uncountable/types/api/material_families/update_entity_material_families.py +48 -0
  161. uncountable/types/api/outputs/get_output_data.py +32 -16
  162. uncountable/types/api/outputs/get_output_names.py +18 -8
  163. uncountable/types/api/outputs/resolve_output_conditions.py +23 -10
  164. uncountable/types/api/permissions/__init__.py +1 -0
  165. uncountable/types/api/permissions/set_core_permissions.py +105 -0
  166. uncountable/types/api/project/get_projects.py +17 -7
  167. uncountable/types/api/project/get_projects_data.py +21 -11
  168. uncountable/types/api/recipe_links/__init__.py +1 -0
  169. uncountable/types/api/recipe_links/create_recipe_link.py +46 -0
  170. uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
  171. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +18 -8
  172. uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
  173. uncountable/types/api/recipes/archive_recipes.py +42 -0
  174. uncountable/types/api/recipes/associate_recipe_as_input.py +44 -0
  175. uncountable/types/api/recipes/associate_recipe_as_lot.py +43 -0
  176. uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
  177. uncountable/types/api/recipes/create_recipe.py +51 -0
  178. uncountable/types/api/recipes/create_recipes.py +25 -12
  179. uncountable/types/api/recipes/disassociate_recipe_as_input.py +42 -0
  180. uncountable/types/api/recipes/edit_recipe_inputs.py +283 -0
  181. uncountable/types/api/recipes/get_column_calculation_values.py +58 -0
  182. uncountable/types/api/recipes/get_curve.py +15 -7
  183. uncountable/types/api/recipes/get_recipe_calculations.py +17 -10
  184. uncountable/types/api/recipes/get_recipe_links.py +13 -6
  185. uncountable/types/api/recipes/get_recipe_names.py +16 -6
  186. uncountable/types/api/recipes/get_recipe_output_metadata.py +14 -7
  187. uncountable/types/api/recipes/get_recipes_data.py +63 -38
  188. uncountable/types/api/recipes/lock_recipes.py +63 -0
  189. uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
  190. uncountable/types/api/recipes/set_recipe_inputs.py +19 -10
  191. uncountable/types/api/recipes/set_recipe_metadata.py +43 -0
  192. uncountable/types/api/recipes/set_recipe_output_annotations.py +115 -0
  193. uncountable/types/api/recipes/set_recipe_output_file.py +56 -0
  194. uncountable/types/api/recipes/set_recipe_outputs.py +26 -12
  195. uncountable/types/api/recipes/set_recipe_tags.py +109 -0
  196. uncountable/types/api/recipes/unarchive_recipes.py +41 -0
  197. uncountable/types/api/recipes/unlock_recipes.py +50 -0
  198. uncountable/types/api/triggers/__init__.py +1 -0
  199. uncountable/types/api/triggers/run_trigger.py +43 -0
  200. uncountable/types/api/uploader/__init__.py +1 -0
  201. uncountable/types/api/uploader/invoke_uploader.py +47 -0
  202. uncountable/types/async_batch.py +13 -0
  203. uncountable/types/async_batch_processor.py +384 -0
  204. uncountable/types/async_batch_t.py +97 -0
  205. uncountable/types/async_jobs.py +9 -0
  206. uncountable/types/async_jobs_t.py +53 -0
  207. uncountable/types/auth_retrieval.py +12 -0
  208. uncountable/types/auth_retrieval_t.py +75 -0
  209. uncountable/types/base.py +5 -78
  210. uncountable/types/base_t.py +85 -0
  211. uncountable/types/calculations.py +3 -18
  212. uncountable/types/calculations_t.py +27 -0
  213. uncountable/types/chemical_structure.py +8 -0
  214. uncountable/types/chemical_structure_t.py +28 -0
  215. uncountable/types/client_base.py +1093 -54
  216. uncountable/types/client_config.py +8 -0
  217. uncountable/types/client_config_t.py +26 -0
  218. uncountable/types/curves.py +5 -42
  219. uncountable/types/curves_t.py +51 -0
  220. uncountable/types/entity.py +8 -269
  221. uncountable/types/entity_t.py +393 -0
  222. uncountable/types/experiment_groups.py +3 -18
  223. uncountable/types/experiment_groups_t.py +27 -0
  224. uncountable/types/field_values.py +17 -60
  225. uncountable/types/field_values_t.py +204 -0
  226. uncountable/types/fields.py +3 -19
  227. uncountable/types/fields_t.py +28 -0
  228. uncountable/types/generic_upload.py +15 -0
  229. uncountable/types/generic_upload_t.py +119 -0
  230. uncountable/types/id_source.py +12 -0
  231. uncountable/types/id_source_t.py +68 -0
  232. uncountable/types/identifier.py +11 -0
  233. uncountable/types/identifier_t.py +63 -0
  234. uncountable/types/input_attributes.py +3 -24
  235. uncountable/types/input_attributes_t.py +30 -0
  236. uncountable/types/inputs.py +6 -56
  237. uncountable/types/inputs_t.py +83 -0
  238. uncountable/types/integration_server.py +9 -0
  239. uncountable/types/integration_server_t.py +42 -0
  240. uncountable/types/job_definition.py +27 -0
  241. uncountable/types/job_definition_t.py +260 -0
  242. uncountable/types/outputs.py +3 -21
  243. uncountable/types/outputs_t.py +30 -0
  244. uncountable/types/overrides.py +10 -0
  245. uncountable/types/overrides_t.py +49 -0
  246. uncountable/types/permissions.py +8 -0
  247. uncountable/types/permissions_t.py +46 -0
  248. uncountable/types/phases.py +3 -18
  249. uncountable/types/phases_t.py +27 -0
  250. uncountable/types/post_base.py +8 -0
  251. uncountable/types/post_base_t.py +30 -0
  252. uncountable/types/queued_job.py +16 -0
  253. uncountable/types/queued_job_t.py +123 -0
  254. uncountable/types/recipe_identifiers.py +12 -0
  255. uncountable/types/recipe_identifiers_t.py +76 -0
  256. uncountable/types/recipe_inputs.py +9 -0
  257. uncountable/types/recipe_inputs_t.py +30 -0
  258. uncountable/types/recipe_links.py +4 -45
  259. uncountable/types/recipe_links_t.py +54 -0
  260. uncountable/types/recipe_metadata.py +5 -45
  261. uncountable/types/recipe_metadata_t.py +58 -0
  262. uncountable/types/recipe_output_metadata.py +3 -19
  263. uncountable/types/recipe_output_metadata_t.py +28 -0
  264. uncountable/types/recipe_tags.py +3 -18
  265. uncountable/types/recipe_tags_t.py +27 -0
  266. uncountable/types/recipe_workflow_steps.py +14 -0
  267. uncountable/types/recipe_workflow_steps_t.py +95 -0
  268. uncountable/types/recipes.py +8 -0
  269. uncountable/types/recipes_t.py +25 -0
  270. uncountable/types/response.py +3 -20
  271. uncountable/types/response_t.py +26 -0
  272. uncountable/types/secret_retrieval.py +12 -0
  273. uncountable/types/secret_retrieval_t.py +75 -0
  274. uncountable/types/units.py +3 -18
  275. uncountable/types/units_t.py +27 -0
  276. uncountable/types/users.py +3 -19
  277. uncountable/types/users_t.py +28 -0
  278. uncountable/types/webhook_job.py +9 -0
  279. uncountable/types/webhook_job_t.py +37 -0
  280. uncountable/types/workflows.py +4 -27
  281. uncountable/types/workflows_t.py +39 -0
  282. UncountablePythonSDK-0.0.8.dist-info/METADATA +0 -27
  283. UncountablePythonSDK-0.0.8.dist-info/RECORD +0 -134
  284. examples/recipe-import/importer.py +0 -39
  285. type_spec/external/api/batch/execute_batch.yaml +0 -56
  286. type_spec/external/api/entity/create_entities.yaml +0 -33
  287. type_spec/external/api/entity/create_entity.yaml +0 -39
  288. type_spec/external/api/entity/get_entities_data.yaml +0 -29
  289. type_spec/external/api/entity/list_entities.yaml +0 -52
  290. type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
  291. type_spec/external/api/entity/set_values.yaml +0 -18
  292. type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
  293. type_spec/external/api/inputs/create_inputs.yaml +0 -48
  294. type_spec/external/api/inputs/get_input_data.yaml +0 -95
  295. type_spec/external/api/inputs/get_input_names.yaml +0 -38
  296. type_spec/external/api/inputs/get_inputs_data.yaml +0 -82
  297. type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -33
  298. type_spec/external/api/outputs/get_output_data.yaml +0 -92
  299. type_spec/external/api/outputs/get_output_names.yaml +0 -35
  300. type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
  301. type_spec/external/api/project/get_projects.yaml +0 -42
  302. type_spec/external/api/project/get_projects_data.yaml +0 -50
  303. type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
  304. type_spec/external/api/recipes/create_recipes.yaml +0 -47
  305. type_spec/external/api/recipes/get_curve.yaml +0 -18
  306. type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -39
  307. type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
  308. type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
  309. type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -36
  310. type_spec/external/api/recipes/get_recipes_data.yaml +0 -238
  311. type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -36
  312. type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -52
@@ -1,14 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  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
- from dataclasses import dataclass
11
- from ... import base as base_t
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
12
13
 
13
14
  __all__: list[str] = [
14
15
  "Arguments",
@@ -23,20 +24,29 @@ ENDPOINT_PATH = "api/external/input_groups/external_get_input_group_names"
23
24
 
24
25
 
25
26
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.input_groups.get_input_group_names.Arguments",
29
+ )
30
+ @dataclasses.dataclass(kw_only=True)
27
31
  class Arguments:
28
32
  material_family_id: base_t.ObjectId
29
33
 
30
34
 
31
35
  # DO NOT MODIFY -- This file is generated by type_spec
32
- @dataclass(kw_only=True)
36
+ @serial_class(
37
+ named_type_path="sdk.api.input_groups.get_input_group_names.SimpleInputGroup",
38
+ )
39
+ @dataclasses.dataclass(kw_only=True)
33
40
  class SimpleInputGroup:
34
41
  input_group_id: base_t.ObjectId
35
42
  name: str
36
43
 
37
44
 
38
45
  # DO NOT MODIFY -- This file is generated by type_spec
39
- @dataclass(kw_only=True)
46
+ @serial_class(
47
+ named_type_path="sdk.api.input_groups.get_input_group_names.Data",
48
+ )
49
+ @dataclasses.dataclass(kw_only=True)
40
50
  class Data:
41
51
  input_groups: list[SimpleInputGroup]
42
52
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,16 +1,17 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  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
- from dataclasses import dataclass
11
- from ... import base as base_t
12
- from ... import input_attributes as input_attributes_t
13
- from ... import inputs as inputs_t
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
13
+ from ... import input_attributes_t
14
+ from ... import inputs_t
14
15
 
15
16
  __all__: list[str] = [
16
17
  "Arguments",
@@ -26,30 +27,42 @@ ENDPOINT_PATH = "api/external/inputs/external_create_inputs"
26
27
 
27
28
 
28
29
  # DO NOT MODIFY -- This file is generated by type_spec
29
- @dataclass(kw_only=True)
30
+ @serial_class(
31
+ named_type_path="sdk.api.inputs.create_inputs.Arguments",
32
+ )
33
+ @dataclasses.dataclass(kw_only=True)
30
34
  class Arguments:
31
35
  inputs_to_create: list[InputToCreate]
32
36
 
33
37
 
34
38
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.create_inputs.InputToCreate",
41
+ )
42
+ @dataclasses.dataclass(kw_only=True)
36
43
  class InputToCreate:
37
44
  name: str
38
45
  material_family_ids: list[base_t.ObjectId]
39
46
  quantity_type: typing.Union[typing.Literal[inputs_t.IngredientQuantityType.NUMERIC], typing.Literal[inputs_t.IngredientQuantityType.TEXT]]
40
47
  type: typing.Union[typing.Literal[inputs_t.IngredientType.INGREDIENT], typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]]
41
- attributes: typing.Optional[list[input_attributes_t.InputAttributeValue]] = None
42
- category_id: typing.Optional[base_t.ObjectId] = None
48
+ attributes: list[input_attributes_t.InputAttributeValue] | None = None
49
+ category_id: base_t.ObjectId | None = None
43
50
 
44
51
 
45
52
  # DO NOT MODIFY -- This file is generated by type_spec
46
- @dataclass(kw_only=True)
53
+ @serial_class(
54
+ named_type_path="sdk.api.inputs.create_inputs.InputSimple",
55
+ )
56
+ @dataclasses.dataclass(kw_only=True)
47
57
  class InputSimple:
48
58
  input_id: base_t.ObjectId
49
59
 
50
60
 
51
61
  # DO NOT MODIFY -- This file is generated by type_spec
52
- @dataclass(kw_only=True)
62
+ @serial_class(
63
+ named_type_path="sdk.api.inputs.create_inputs.Data",
64
+ )
65
+ @dataclasses.dataclass(kw_only=True)
53
66
  class Data:
54
67
  inputs: list[InputSimple]
55
68
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,15 +1,16 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  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
- from dataclasses import dataclass
11
- from ... import base as base_t
12
- from ... import input_attributes as input_attributes_t
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
13
+ from ... import input_attributes_t
13
14
 
14
15
  __all__: list[str] = [
15
16
  "Arguments",
@@ -27,17 +28,23 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_data"
27
28
 
28
29
 
29
30
  # DO NOT MODIFY -- This file is generated by type_spec
30
- @dataclass(kw_only=True)
31
+ @serial_class(
32
+ named_type_path="sdk.api.inputs.get_input_data.Arguments",
33
+ )
34
+ @dataclasses.dataclass(kw_only=True)
31
35
  class Arguments:
32
36
  material_family_id: base_t.ObjectId
33
37
  input_ids: typing.Optional[list[base_t.ObjectId]]
34
38
  is_parameter: typing.Optional[bool]
35
- offset: typing.Optional[typing.Optional[int]] = None
36
- limit: typing.Optional[typing.Optional[int]] = None
39
+ offset: typing.Optional[int] | None = None
40
+ limit: typing.Optional[int] | None = None
37
41
 
38
42
 
39
43
  # DO NOT MODIFY -- This file is generated by type_spec
40
- @dataclass(kw_only=True)
44
+ @serial_class(
45
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputAttr",
46
+ )
47
+ @dataclasses.dataclass(kw_only=True)
41
48
  class SimpleInputAttr:
42
49
  attribute_id: base_t.ObjectId
43
50
  name: str
@@ -45,33 +52,45 @@ class SimpleInputAttr:
45
52
 
46
53
 
47
54
  # DO NOT MODIFY -- This file is generated by type_spec
48
- @dataclass(kw_only=True)
55
+ @serial_class(
56
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputGlobalCategory",
57
+ )
58
+ @dataclasses.dataclass(kw_only=True)
49
59
  class SimpleInputGlobalCategory:
50
60
  category_id: base_t.ObjectId
51
61
  name: str
52
62
 
53
63
 
54
64
  # DO NOT MODIFY -- This file is generated by type_spec
55
- @dataclass(kw_only=True)
65
+ @serial_class(
66
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputSubcategory",
67
+ )
68
+ @dataclasses.dataclass(kw_only=True)
56
69
  class SimpleInputSubcategory:
57
70
  subcategory_id: base_t.ObjectId
58
71
  name: str
59
72
 
60
73
 
61
74
  # DO NOT MODIFY -- This file is generated by type_spec
62
- @dataclass(kw_only=True)
75
+ @serial_class(
76
+ named_type_path="sdk.api.inputs.get_input_data.FullInput",
77
+ )
78
+ @dataclasses.dataclass(kw_only=True)
63
79
  class FullInput:
64
80
  input_id: base_t.ObjectId
65
81
  name: str
66
82
  quantity_type: str
67
83
  is_parameter: bool
68
84
  attributes: list[input_attributes_t.InputAttributeValue]
69
- global_category_id: base_t.ObjectId
85
+ global_category_id: typing.Optional[base_t.ObjectId]
70
86
  subcategory_ids: list[base_t.ObjectId]
71
87
 
72
88
 
73
89
  # DO NOT MODIFY -- This file is generated by type_spec
74
- @dataclass(kw_only=True)
90
+ @serial_class(
91
+ named_type_path="sdk.api.inputs.get_input_data.Data",
92
+ )
93
+ @dataclasses.dataclass(kw_only=True)
75
94
  class Data:
76
95
  inputs: list[FullInput]
77
96
  attrs: list[SimpleInputAttr]
@@ -1,14 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  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
- from dataclasses import dataclass
11
- from ... import base as base_t
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
12
13
 
13
14
  __all__: list[str] = [
14
15
  "Arguments",
@@ -23,23 +24,32 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_names"
23
24
 
24
25
 
25
26
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.inputs.get_input_names.Arguments",
29
+ )
30
+ @dataclasses.dataclass(kw_only=True)
27
31
  class Arguments:
28
32
  material_family_id: base_t.ObjectId
29
33
  is_parameter: typing.Optional[bool]
30
- offset: typing.Optional[typing.Optional[int]] = None
31
- limit: typing.Optional[typing.Optional[int]] = None
34
+ offset: typing.Optional[int] | None = None
35
+ limit: typing.Optional[int] | None = None
32
36
 
33
37
 
34
38
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.get_input_names.InputWithName",
41
+ )
42
+ @dataclasses.dataclass(kw_only=True)
36
43
  class InputWithName:
37
44
  input_id: base_t.ObjectId
38
45
  name: str
39
46
 
40
47
 
41
48
  # DO NOT MODIFY -- This file is generated by type_spec
42
- @dataclass(kw_only=True)
49
+ @serial_class(
50
+ named_type_path="sdk.api.inputs.get_input_names.Data",
51
+ )
52
+ @dataclasses.dataclass(kw_only=True)
43
53
  class Data:
44
54
  inputs: list[InputWithName]
45
55
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,15 +1,16 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  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
- from dataclasses import dataclass
11
- from ... import base as base_t
12
- from ... import input_attributes as input_attributes_t
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
13
+ from ... import input_attributes_t
13
14
 
14
15
  __all__: list[str] = [
15
16
  "Arguments",
@@ -27,13 +28,19 @@ ENDPOINT_PATH = "api/external/inputs/external_get_inputs_data"
27
28
 
28
29
 
29
30
  # DO NOT MODIFY -- This file is generated by type_spec
30
- @dataclass(kw_only=True)
31
+ @serial_class(
32
+ named_type_path="sdk.api.inputs.get_inputs_data.Arguments",
33
+ )
34
+ @dataclasses.dataclass(kw_only=True)
31
35
  class Arguments:
32
36
  input_ids: list[base_t.ObjectId]
33
37
 
34
38
 
35
39
  # DO NOT MODIFY -- This file is generated by type_spec
36
- @dataclass(kw_only=True)
40
+ @serial_class(
41
+ named_type_path="sdk.api.inputs.get_inputs_data.AttributeDetails",
42
+ )
43
+ @dataclasses.dataclass(kw_only=True)
37
44
  class AttributeDetails:
38
45
  attribute_id: base_t.ObjectId
39
46
  name: str
@@ -41,14 +48,20 @@ class AttributeDetails:
41
48
 
42
49
 
43
50
  # DO NOT MODIFY -- This file is generated by type_spec
44
- @dataclass(kw_only=True)
51
+ @serial_class(
52
+ named_type_path="sdk.api.inputs.get_inputs_data.InputTag",
53
+ )
54
+ @dataclasses.dataclass(kw_only=True)
45
55
  class InputTag:
46
56
  tag_id: base_t.ObjectId
47
57
  tag_name: str
48
58
 
49
59
 
50
60
  # DO NOT MODIFY -- This file is generated by type_spec
51
- @dataclass(kw_only=True)
61
+ @serial_class(
62
+ named_type_path="sdk.api.inputs.get_inputs_data.InputCategory",
63
+ )
64
+ @dataclasses.dataclass(kw_only=True)
52
65
  class InputCategory:
53
66
  material_family_id: base_t.ObjectId
54
67
  category_id: base_t.ObjectId
@@ -56,7 +69,10 @@ class InputCategory:
56
69
 
57
70
 
58
71
  # DO NOT MODIFY -- This file is generated by type_spec
59
- @dataclass(kw_only=True)
72
+ @serial_class(
73
+ named_type_path="sdk.api.inputs.get_inputs_data.InputDetails",
74
+ )
75
+ @dataclasses.dataclass(kw_only=True)
60
76
  class InputDetails:
61
77
  input_id: base_t.ObjectId
62
78
  name: str
@@ -68,7 +84,10 @@ class InputDetails:
68
84
 
69
85
 
70
86
  # DO NOT MODIFY -- This file is generated by type_spec
71
- @dataclass(kw_only=True)
87
+ @serial_class(
88
+ named_type_path="sdk.api.inputs.get_inputs_data.Data",
89
+ )
90
+ @dataclasses.dataclass(kw_only=True)
72
91
  class Data:
73
92
  input_details: list[InputDetails]
74
93
  input_attributes: list[AttributeDetails]
@@ -1,16 +1,16 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  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
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
- from ... import base as base_t
13
- from ... import response as response_t
12
+ from ... import base_t
13
+ from ... import response_t
14
14
 
15
15
  __all__: list[str] = [
16
16
  "Arguments",
@@ -25,26 +25,33 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_attribute_values"
25
25
 
26
26
 
27
27
  # DO NOT MODIFY -- This file is generated by type_spec
28
- @dataclass(kw_only=True)
28
+ @serial_class(
29
+ named_type_path="sdk.api.inputs.set_input_attribute_values.Arguments",
30
+ )
31
+ @dataclasses.dataclass(kw_only=True)
29
32
  class Arguments:
30
33
  attribute_values: list[InputAttributeValue]
31
34
 
32
35
 
33
36
  # DO NOT MODIFY -- This file is generated by type_spec
34
37
  @serial_class(
38
+ named_type_path="sdk.api.inputs.set_input_attribute_values.InputAttributeValue",
35
39
  unconverted_values={"quantity_json"},
36
40
  to_string_values={"quantity_dec"},
37
41
  )
38
- @dataclass(kw_only=True)
42
+ @dataclasses.dataclass(kw_only=True)
39
43
  class InputAttributeValue:
40
44
  input_id: base_t.ObjectId
41
45
  attribute_id: base_t.ObjectId
42
- quantity_dec: typing.Optional[Decimal] = None
43
- quantity_json: typing.Optional[base_t.JsonValue] = None
46
+ quantity_dec: Decimal | None = None
47
+ quantity_json: base_t.JsonValue | None = None
44
48
 
45
49
 
46
50
  # DO NOT MODIFY -- This file is generated by type_spec
47
- @dataclass(kw_only=True)
51
+ @serial_class(
52
+ named_type_path="sdk.api.inputs.set_input_attribute_values.Data",
53
+ )
54
+ @dataclasses.dataclass(kw_only=True)
48
55
  class Data(response_t.Response):
49
56
  pass
50
57
  # 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
+ # 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
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import identifier_t
13
+ from ... import response_t
14
+
15
+ __all__: list[str] = [
16
+ "Arguments",
17
+ "Data",
18
+ "ENDPOINT_METHOD",
19
+ "ENDPOINT_PATH",
20
+ ]
21
+
22
+ ENDPOINT_METHOD = "POST"
23
+ ENDPOINT_PATH = "api/external/inputs/external_set_input_category"
24
+
25
+
26
+ # DO NOT MODIFY -- This file is generated by type_spec
27
+ @serial_class(
28
+ named_type_path="sdk.api.inputs.set_input_category.Arguments",
29
+ )
30
+ @dataclasses.dataclass(kw_only=True)
31
+ class Arguments:
32
+ input_key: identifier_t.IdentifierKey
33
+ category_id: typing.Optional[int]
34
+ material_family_ids: list[int] | None = None
35
+
36
+
37
+ # DO NOT MODIFY -- This file is generated by type_spec
38
+ @serial_class(
39
+ named_type_path="sdk.api.inputs.set_input_category.Data",
40
+ )
41
+ @dataclasses.dataclass(kw_only=True)
42
+ class Data(response_t.Response):
43
+ pass
44
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,45 @@
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
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import identifier_t
13
+ from ... import post_base_t
14
+ from ... import response_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/inputs/external_set_input_subcategories"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.inputs.set_input_subcategories.Arguments",
30
+ )
31
+ @dataclasses.dataclass(kw_only=True)
32
+ class Arguments:
33
+ input_key: identifier_t.IdentifierKey
34
+ subcategory_ids: list[int]
35
+ update_type: post_base_t.UpdateType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.set_input_subcategories.Data",
41
+ )
42
+ @dataclasses.dataclass(kw_only=True)
43
+ class Data(response_t.Response):
44
+ pass
45
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,50 @@
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 ... import identifier_t
14
+
15
+ __all__: list[str] = [
16
+ "Arguments",
17
+ "Data",
18
+ "ENDPOINT_METHOD",
19
+ "ENDPOINT_PATH",
20
+ "IntermediateType",
21
+ ]
22
+
23
+ ENDPOINT_METHOD = "POST"
24
+ ENDPOINT_PATH = "api/external/inputs/set_intermediate_type"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ class IntermediateType(StrEnum):
29
+ FINAL_PRODUCT = "final_product"
30
+ COMPOUND_AS_INTERMEDIATE = "compound_as_intermediate"
31
+
32
+
33
+ # DO NOT MODIFY -- This file is generated by type_spec
34
+ @serial_class(
35
+ named_type_path="sdk.api.inputs.set_intermediate_type.Arguments",
36
+ )
37
+ @dataclasses.dataclass(kw_only=True)
38
+ class Arguments:
39
+ input_key: identifier_t.IdentifierKey
40
+ intermediate_type: IntermediateType
41
+
42
+
43
+ # DO NOT MODIFY -- This file is generated by type_spec
44
+ @serial_class(
45
+ named_type_path="sdk.api.inputs.set_intermediate_type.Data",
46
+ )
47
+ @dataclasses.dataclass(kw_only=True)
48
+ class Data:
49
+ pass
50
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,48 @@
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
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
13
+ from ... import entity_t
14
+ from ... import identifier_t
15
+ from ... import post_base_t
16
+ from ... import response_t
17
+
18
+ __all__: list[str] = [
19
+ "Arguments",
20
+ "Data",
21
+ "ENDPOINT_METHOD",
22
+ "ENDPOINT_PATH",
23
+ ]
24
+
25
+ ENDPOINT_METHOD = "POST"
26
+ ENDPOINT_PATH = "api/external/material_families/external_update_entity_material_families"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.api.material_families.update_entity_material_families.Arguments",
32
+ )
33
+ @dataclasses.dataclass(kw_only=True)
34
+ class Arguments:
35
+ entity_key: identifier_t.IdentifierKey
36
+ entity_type: typing.Union[typing.Literal[entity_t.EntityType.RECIPE_METADATA], typing.Literal[entity_t.EntityType.INGREDIENT], typing.Literal[entity_t.EntityType.OUTPUT], typing.Literal[entity_t.EntityType.CONDITION_PARAMETER], typing.Literal[entity_t.EntityType.INGREDIENT_ATTRIBUTE]]
37
+ material_family_ids: list[base_t.ObjectId]
38
+ update_type: post_base_t.UpdateType
39
+
40
+
41
+ # DO NOT MODIFY -- This file is generated by type_spec
42
+ @serial_class(
43
+ named_type_path="sdk.api.material_families.update_entity_material_families.Data",
44
+ )
45
+ @dataclasses.dataclass(kw_only=True)
46
+ class Data(response_t.Response):
47
+ pass
48
+ # DO NOT MODIFY -- This file is generated by type_spec