UncountablePythonSDK 0.0.24__py3-none-any.whl → 0.0.131__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 (373) hide show
  1. docs/conf.py +60 -8
  2. docs/index.md +107 -4
  3. docs/integration_examples/create_ingredient.md +43 -0
  4. docs/integration_examples/create_output.md +56 -0
  5. docs/integration_examples/index.md +6 -0
  6. docs/justfile +2 -2
  7. docs/requirements.txt +7 -5
  8. examples/async_batch.py +5 -6
  9. examples/basic_auth.py +7 -0
  10. examples/create_entity.py +4 -6
  11. examples/create_ingredient_sdk.py +34 -0
  12. examples/download_files.py +26 -0
  13. examples/edit_recipe_inputs.py +50 -0
  14. examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
  15. examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
  16. examples/integration-server/jobs/materials_auto/example_http.py +47 -0
  17. examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
  18. examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
  19. examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
  20. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
  21. examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
  22. examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
  23. examples/integration-server/pyproject.toml +224 -0
  24. examples/invoke_uploader.py +26 -0
  25. examples/oauth.py +7 -0
  26. examples/set_recipe_metadata_file.py +40 -0
  27. examples/set_recipe_output_file_sdk.py +26 -0
  28. examples/upload_files.py +2 -3
  29. pkgs/argument_parser/__init__.py +9 -0
  30. pkgs/argument_parser/_is_namedtuple.py +3 -0
  31. pkgs/argument_parser/argument_parser.py +295 -74
  32. pkgs/argument_parser/case_convert.py +4 -3
  33. pkgs/filesystem_utils/__init__.py +20 -0
  34. pkgs/filesystem_utils/_blob_session.py +144 -0
  35. pkgs/filesystem_utils/_gdrive_session.py +309 -0
  36. pkgs/filesystem_utils/_local_session.py +69 -0
  37. pkgs/filesystem_utils/_s3_session.py +118 -0
  38. pkgs/filesystem_utils/_sftp_session.py +151 -0
  39. pkgs/filesystem_utils/file_type_utils.py +91 -0
  40. pkgs/filesystem_utils/filesystem_session.py +39 -0
  41. pkgs/py.typed +0 -0
  42. pkgs/serialization/__init__.py +8 -1
  43. pkgs/serialization/annotation.py +64 -0
  44. pkgs/serialization/missing_sentry.py +1 -1
  45. pkgs/serialization/opaque_key.py +1 -1
  46. pkgs/serialization/serial_alias.py +47 -0
  47. pkgs/serialization/serial_class.py +69 -54
  48. pkgs/serialization/serial_generic.py +16 -0
  49. pkgs/serialization/serial_union.py +84 -0
  50. pkgs/serialization/yaml.py +57 -0
  51. pkgs/serialization_util/__init__.py +7 -7
  52. pkgs/serialization_util/convert_to_snakecase.py +27 -0
  53. pkgs/serialization_util/dataclasses.py +14 -0
  54. pkgs/serialization_util/serialization_helpers.py +117 -71
  55. pkgs/type_spec/actions_registry/__main__.py +0 -4
  56. pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
  57. pkgs/type_spec/builder.py +438 -109
  58. pkgs/type_spec/builder_types.py +9 -0
  59. pkgs/type_spec/config.py +52 -24
  60. pkgs/type_spec/cross_output_links.py +99 -0
  61. pkgs/type_spec/emit_io_ts.py +1 -1
  62. pkgs/type_spec/emit_open_api.py +160 -41
  63. pkgs/type_spec/emit_open_api_util.py +13 -7
  64. pkgs/type_spec/emit_python.py +450 -136
  65. pkgs/type_spec/emit_typescript.py +117 -250
  66. pkgs/type_spec/emit_typescript_util.py +293 -4
  67. pkgs/type_spec/load_types.py +20 -5
  68. pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
  69. pkgs/type_spec/open_api_util.py +29 -4
  70. pkgs/type_spec/parts/base.py.prepart +13 -10
  71. pkgs/type_spec/parts/base.ts.prepart +4 -0
  72. pkgs/type_spec/type_info/__main__.py +3 -1
  73. pkgs/type_spec/type_info/emit_type_info.py +161 -32
  74. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  75. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
  76. pkgs/type_spec/util.py +4 -4
  77. pkgs/type_spec/value_spec/__main__.py +27 -10
  78. pkgs/type_spec/value_spec/convert_type.py +21 -1
  79. pkgs/type_spec/value_spec/emit_python.py +25 -7
  80. pkgs/type_spec/value_spec/types.py +1 -1
  81. uncountable/__init__.py +1 -2
  82. uncountable/core/__init__.py +11 -3
  83. uncountable/core/async_batch.py +16 -1
  84. uncountable/core/client.py +247 -52
  85. uncountable/core/environment.py +41 -0
  86. uncountable/core/file_upload.py +67 -22
  87. uncountable/core/types.py +8 -13
  88. uncountable/integration/cli.py +142 -0
  89. uncountable/integration/construct_client.py +43 -27
  90. uncountable/integration/cron.py +12 -11
  91. uncountable/integration/db/connect.py +12 -2
  92. uncountable/integration/db/session.py +25 -0
  93. uncountable/integration/entrypoint.py +4 -34
  94. uncountable/integration/executors/executors.py +147 -0
  95. uncountable/integration/executors/generic_upload_executor.py +336 -0
  96. uncountable/integration/executors/script_executor.py +15 -9
  97. uncountable/integration/http_server/__init__.py +5 -0
  98. uncountable/integration/http_server/types.py +69 -0
  99. uncountable/integration/job.py +246 -19
  100. uncountable/integration/queue_runner/__init__.py +0 -0
  101. uncountable/integration/queue_runner/command_server/__init__.py +28 -0
  102. uncountable/integration/queue_runner/command_server/command_client.py +133 -0
  103. uncountable/integration/queue_runner/command_server/command_server.py +142 -0
  104. uncountable/integration/queue_runner/command_server/constants.py +4 -0
  105. uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  106. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
  107. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
  108. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
  109. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
  110. uncountable/integration/queue_runner/command_server/types.py +75 -0
  111. uncountable/integration/queue_runner/datastore/__init__.py +3 -0
  112. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
  113. uncountable/integration/queue_runner/datastore/interface.py +29 -0
  114. uncountable/integration/queue_runner/datastore/model.py +24 -0
  115. uncountable/integration/queue_runner/job_scheduler.py +200 -0
  116. uncountable/integration/queue_runner/queue_runner.py +34 -0
  117. uncountable/integration/queue_runner/types.py +7 -0
  118. uncountable/integration/queue_runner/worker.py +116 -0
  119. uncountable/integration/scan_profiles.py +67 -0
  120. uncountable/integration/scheduler.py +199 -0
  121. uncountable/integration/secret_retrieval/__init__.py +3 -0
  122. uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
  123. uncountable/integration/server.py +103 -54
  124. uncountable/integration/telemetry.py +251 -0
  125. uncountable/integration/webhook_server/entrypoint.py +97 -0
  126. uncountable/types/__init__.py +149 -30
  127. uncountable/types/api/batch/execute_batch.py +16 -9
  128. uncountable/types/api/batch/execute_batch_load_async.py +13 -7
  129. uncountable/types/api/chemical/convert_chemical_formats.py +20 -8
  130. uncountable/types/api/condition_parameters/__init__.py +1 -0
  131. uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
  132. uncountable/types/api/entity/create_entities.py +24 -12
  133. uncountable/types/api/entity/create_entity.py +22 -13
  134. uncountable/types/api/entity/create_or_update_entity.py +48 -0
  135. uncountable/types/api/entity/export_entities.py +59 -0
  136. uncountable/types/api/entity/get_entities_data.py +18 -9
  137. uncountable/types/api/entity/grant_entity_permissions.py +48 -0
  138. uncountable/types/api/entity/list_aggregate.py +79 -0
  139. uncountable/types/api/entity/list_entities.py +53 -14
  140. uncountable/types/api/entity/lock_entity.py +45 -0
  141. uncountable/types/api/entity/lookup_entity.py +116 -0
  142. uncountable/types/api/entity/resolve_entity_ids.py +19 -10
  143. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  144. uncountable/types/api/entity/set_values.py +15 -8
  145. uncountable/types/api/entity/transition_entity_phase.py +27 -12
  146. uncountable/types/api/entity/unlock_entity.py +44 -0
  147. uncountable/types/api/equipment/__init__.py +1 -0
  148. uncountable/types/api/equipment/associate_equipment_input.py +43 -0
  149. uncountable/types/api/field_options/__init__.py +1 -0
  150. uncountable/types/api/field_options/upsert_field_options.py +55 -0
  151. uncountable/types/api/files/__init__.py +1 -0
  152. uncountable/types/api/files/download_file.py +77 -0
  153. uncountable/types/api/id_source/list_id_source.py +20 -11
  154. uncountable/types/api/id_source/match_id_source.py +15 -10
  155. uncountable/types/api/input_groups/get_input_group_names.py +16 -7
  156. uncountable/types/api/inputs/create_inputs.py +28 -14
  157. uncountable/types/api/inputs/get_input_data.py +34 -16
  158. uncountable/types/api/inputs/get_input_names.py +19 -10
  159. uncountable/types/api/inputs/get_inputs_data.py +29 -11
  160. uncountable/types/api/inputs/set_input_attribute_values.py +16 -10
  161. uncountable/types/api/inputs/set_input_category.py +44 -0
  162. uncountable/types/api/inputs/set_input_subcategories.py +45 -0
  163. uncountable/types/api/inputs/set_intermediate_type.py +50 -0
  164. uncountable/types/api/integrations/__init__.py +1 -0
  165. uncountable/types/api/integrations/publish_realtime_data.py +41 -0
  166. uncountable/types/api/integrations/push_notification.py +49 -0
  167. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  168. uncountable/types/api/listing/__init__.py +1 -0
  169. uncountable/types/api/listing/fetch_listing.py +58 -0
  170. uncountable/types/api/material_families/__init__.py +1 -0
  171. uncountable/types/api/material_families/update_entity_material_families.py +47 -0
  172. uncountable/types/api/notebooks/__init__.py +1 -0
  173. uncountable/types/api/notebooks/add_notebook_content.py +119 -0
  174. uncountable/types/api/outputs/get_output_data.py +32 -17
  175. uncountable/types/api/outputs/get_output_names.py +18 -9
  176. uncountable/types/api/outputs/get_output_organization.py +173 -0
  177. uncountable/types/api/outputs/resolve_output_conditions.py +23 -11
  178. uncountable/types/api/permissions/set_core_permissions.py +31 -15
  179. uncountable/types/api/project/get_projects.py +20 -11
  180. uncountable/types/api/project/get_projects_data.py +23 -14
  181. uncountable/types/api/recipe_links/create_recipe_link.py +17 -10
  182. uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
  183. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +19 -10
  184. uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
  185. uncountable/types/api/recipes/add_time_series_data.py +64 -0
  186. uncountable/types/api/recipes/archive_recipes.py +14 -7
  187. uncountable/types/api/recipes/associate_recipe_as_input.py +16 -8
  188. uncountable/types/api/recipes/associate_recipe_as_lot.py +14 -7
  189. uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
  190. uncountable/types/api/recipes/create_mix_order.py +44 -0
  191. uncountable/types/api/recipes/create_recipe.py +21 -14
  192. uncountable/types/api/recipes/create_recipes.py +25 -13
  193. uncountable/types/api/recipes/disassociate_recipe_as_input.py +14 -7
  194. uncountable/types/api/recipes/edit_recipe_inputs.py +208 -19
  195. uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
  196. uncountable/types/api/recipes/get_curve.py +15 -9
  197. uncountable/types/api/recipes/get_recipe_calculations.py +17 -11
  198. uncountable/types/api/recipes/get_recipe_links.py +14 -8
  199. uncountable/types/api/recipes/get_recipe_names.py +16 -7
  200. uncountable/types/api/recipes/get_recipe_output_metadata.py +16 -10
  201. uncountable/types/api/recipes/get_recipes_data.py +96 -45
  202. uncountable/types/api/recipes/lock_recipes.py +64 -0
  203. uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
  204. uncountable/types/api/recipes/set_recipe_inputs.py +19 -13
  205. uncountable/types/api/recipes/set_recipe_metadata.py +14 -7
  206. uncountable/types/api/recipes/set_recipe_output_annotations.py +114 -0
  207. uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
  208. uncountable/types/api/recipes/set_recipe_outputs.py +40 -15
  209. uncountable/types/api/recipes/set_recipe_tags.py +30 -13
  210. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  211. uncountable/types/api/recipes/unarchive_recipes.py +41 -0
  212. uncountable/types/api/recipes/unlock_recipes.py +51 -0
  213. uncountable/types/api/runsheet/__init__.py +1 -0
  214. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  215. uncountable/types/api/triggers/run_trigger.py +15 -8
  216. uncountable/types/api/uploader/__init__.py +1 -0
  217. uncountable/types/api/uploader/complete_async_parse.py +46 -0
  218. uncountable/types/api/uploader/invoke_uploader.py +46 -0
  219. uncountable/types/api/user/__init__.py +1 -0
  220. uncountable/types/api/user/get_current_user_info.py +40 -0
  221. uncountable/types/async_batch.py +8 -52
  222. uncountable/types/async_batch_processor.py +694 -18
  223. uncountable/types/async_batch_t.py +108 -0
  224. uncountable/types/async_jobs.py +8 -0
  225. uncountable/types/async_jobs_t.py +52 -0
  226. uncountable/types/auth_retrieval.py +11 -0
  227. uncountable/types/auth_retrieval_t.py +75 -0
  228. uncountable/types/base.py +5 -80
  229. uncountable/types/base_t.py +87 -0
  230. uncountable/types/calculations.py +3 -19
  231. uncountable/types/calculations_t.py +26 -0
  232. uncountable/types/chemical_structure.py +3 -23
  233. uncountable/types/chemical_structure_t.py +28 -0
  234. uncountable/types/client_base.py +1170 -88
  235. uncountable/types/client_config.py +8 -0
  236. uncountable/types/client_config_t.py +36 -0
  237. uncountable/types/curves.py +5 -43
  238. uncountable/types/curves_t.py +50 -0
  239. uncountable/types/data.py +12 -0
  240. uncountable/types/data_t.py +103 -0
  241. uncountable/types/entity.py +8 -270
  242. uncountable/types/entity_t.py +446 -0
  243. uncountable/types/experiment_groups.py +3 -19
  244. uncountable/types/experiment_groups_t.py +26 -0
  245. uncountable/types/exports.py +8 -0
  246. uncountable/types/exports_t.py +34 -0
  247. uncountable/types/field_values.py +25 -61
  248. uncountable/types/field_values_t.py +302 -0
  249. uncountable/types/fields.py +3 -20
  250. uncountable/types/fields_t.py +27 -0
  251. uncountable/types/generic_upload.py +14 -0
  252. uncountable/types/generic_upload_t.py +119 -0
  253. uncountable/types/id_source.py +7 -45
  254. uncountable/types/id_source_t.py +68 -0
  255. uncountable/types/identifier.py +6 -50
  256. uncountable/types/identifier_t.py +62 -0
  257. uncountable/types/input_attributes.py +3 -25
  258. uncountable/types/input_attributes_t.py +29 -0
  259. uncountable/types/inputs.py +6 -57
  260. uncountable/types/inputs_t.py +82 -0
  261. uncountable/types/integration_server.py +8 -0
  262. uncountable/types/integration_server_t.py +46 -0
  263. uncountable/types/integration_session.py +10 -0
  264. uncountable/types/integration_session_t.py +60 -0
  265. uncountable/types/integrations.py +10 -0
  266. uncountable/types/integrations_t.py +62 -0
  267. uncountable/types/job_definition.py +28 -0
  268. uncountable/types/job_definition_t.py +285 -0
  269. uncountable/types/listing.py +9 -0
  270. uncountable/types/listing_t.py +51 -0
  271. uncountable/types/notices.py +8 -0
  272. uncountable/types/notices_t.py +37 -0
  273. uncountable/types/notifications.py +11 -0
  274. uncountable/types/notifications_t.py +74 -0
  275. uncountable/types/outputs.py +3 -22
  276. uncountable/types/outputs_t.py +29 -0
  277. uncountable/types/overrides.py +9 -0
  278. uncountable/types/overrides_t.py +49 -0
  279. uncountable/types/permissions.py +3 -42
  280. uncountable/types/permissions_t.py +45 -0
  281. uncountable/types/phases.py +3 -19
  282. uncountable/types/phases_t.py +26 -0
  283. uncountable/types/post_base.py +3 -26
  284. uncountable/types/post_base_t.py +29 -0
  285. uncountable/types/queued_job.py +17 -0
  286. uncountable/types/queued_job_t.py +140 -0
  287. uncountable/types/recipe_identifiers.py +7 -58
  288. uncountable/types/recipe_identifiers_t.py +75 -0
  289. uncountable/types/recipe_inputs.py +4 -26
  290. uncountable/types/recipe_inputs_t.py +29 -0
  291. uncountable/types/recipe_links.py +4 -46
  292. uncountable/types/recipe_links_t.py +53 -0
  293. uncountable/types/recipe_metadata.py +5 -48
  294. uncountable/types/recipe_metadata_t.py +57 -0
  295. uncountable/types/recipe_output_metadata.py +3 -20
  296. uncountable/types/recipe_output_metadata_t.py +27 -0
  297. uncountable/types/recipe_tags.py +3 -19
  298. uncountable/types/recipe_tags_t.py +26 -0
  299. uncountable/types/recipe_workflow_steps.py +9 -73
  300. uncountable/types/recipe_workflow_steps_t.py +95 -0
  301. uncountable/types/recipes.py +7 -0
  302. uncountable/types/recipes_t.py +25 -0
  303. uncountable/types/response.py +3 -21
  304. uncountable/types/response_t.py +26 -0
  305. uncountable/types/secret_retrieval.py +11 -0
  306. uncountable/types/secret_retrieval_t.py +75 -0
  307. uncountable/types/sockets.py +20 -0
  308. uncountable/types/sockets_t.py +169 -0
  309. uncountable/types/structured_filters.py +25 -0
  310. uncountable/types/structured_filters_t.py +248 -0
  311. uncountable/types/units.py +3 -19
  312. uncountable/types/units_t.py +26 -0
  313. uncountable/types/uploader.py +24 -0
  314. uncountable/types/uploader_t.py +222 -0
  315. uncountable/types/users.py +3 -20
  316. uncountable/types/users_t.py +27 -0
  317. uncountable/types/webhook_job.py +9 -0
  318. uncountable/types/webhook_job_t.py +48 -0
  319. uncountable/types/workflows.py +4 -28
  320. uncountable/types/workflows_t.py +38 -0
  321. uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
  322. uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
  323. {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
  324. {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -1
  325. UncountablePythonSDK-0.0.24.dist-info/METADATA +0 -47
  326. UncountablePythonSDK-0.0.24.dist-info/RECORD +0 -216
  327. docs/quickstart.md +0 -19
  328. examples/recipe-import/importer.py +0 -39
  329. type_spec/external/api/batch/execute_batch.yaml +0 -56
  330. type_spec/external/api/batch/execute_batch_load_async.yaml +0 -18
  331. type_spec/external/api/chemical/convert_chemical_formats.yaml +0 -33
  332. type_spec/external/api/entity/create_entities.yaml +0 -45
  333. type_spec/external/api/entity/create_entity.yaml +0 -51
  334. type_spec/external/api/entity/get_entities_data.yaml +0 -29
  335. type_spec/external/api/entity/list_entities.yaml +0 -52
  336. type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
  337. type_spec/external/api/entity/set_values.yaml +0 -18
  338. type_spec/external/api/entity/transition_entity_phase.yaml +0 -44
  339. type_spec/external/api/id_source/list_id_source.yaml +0 -35
  340. type_spec/external/api/id_source/match_id_source.yaml +0 -32
  341. type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
  342. type_spec/external/api/inputs/create_inputs.yaml +0 -48
  343. type_spec/external/api/inputs/get_input_data.yaml +0 -95
  344. type_spec/external/api/inputs/get_input_names.yaml +0 -38
  345. type_spec/external/api/inputs/get_inputs_data.yaml +0 -82
  346. type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -33
  347. type_spec/external/api/outputs/get_output_data.yaml +0 -92
  348. type_spec/external/api/outputs/get_output_names.yaml +0 -35
  349. type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
  350. type_spec/external/api/permissions/set_core_permissions.yaml +0 -69
  351. type_spec/external/api/project/get_projects.yaml +0 -42
  352. type_spec/external/api/project/get_projects_data.yaml +0 -50
  353. type_spec/external/api/recipe_links/create_recipe_link.yaml +0 -25
  354. type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
  355. type_spec/external/api/recipes/archive_recipes.yaml +0 -20
  356. type_spec/external/api/recipes/associate_recipe_as_input.yaml +0 -19
  357. type_spec/external/api/recipes/associate_recipe_as_lot.yaml +0 -19
  358. type_spec/external/api/recipes/create_recipe.yaml +0 -39
  359. type_spec/external/api/recipes/create_recipes.yaml +0 -47
  360. type_spec/external/api/recipes/disassociate_recipe_as_input.yaml +0 -16
  361. type_spec/external/api/recipes/edit_recipe_inputs.yaml +0 -85
  362. type_spec/external/api/recipes/get_curve.yaml +0 -21
  363. type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -39
  364. type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
  365. type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
  366. type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -36
  367. type_spec/external/api/recipes/get_recipes_data.yaml +0 -244
  368. type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -42
  369. type_spec/external/api/recipes/set_recipe_metadata.yaml +0 -20
  370. type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -52
  371. type_spec/external/api/recipes/set_recipe_tags.yaml +0 -62
  372. type_spec/external/api/triggers/run_trigger.yaml +0 -18
  373. uncountable/integration/types.py +0 -89
@@ -0,0 +1,77 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from ... import base_t
14
+ from ... import entity_t
15
+ from ... import identifier_t
16
+
17
+ __all__: list[str] = [
18
+ "Arguments",
19
+ "ENDPOINT_METHOD",
20
+ "ENDPOINT_PATH",
21
+ "FileDownloadQuery",
22
+ "FileDownloadQueryBase",
23
+ "FileDownloadQueryEntityField",
24
+ "FileDownloadQueryType",
25
+ ]
26
+
27
+ ENDPOINT_METHOD = "GET"
28
+ ENDPOINT_PATH = "api/external/files/download_file"
29
+
30
+
31
+ # DO NOT MODIFY -- This file is generated by type_spec
32
+ class FileDownloadQueryType(StrEnum):
33
+ ENTITY_FIELD = "entity_field"
34
+
35
+
36
+ # DO NOT MODIFY -- This file is generated by type_spec
37
+ @serial_class(
38
+ named_type_path="sdk.api.files.download_file.FileDownloadQueryBase",
39
+ )
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
+ class FileDownloadQueryBase:
42
+ type: FileDownloadQueryType
43
+
44
+
45
+ # DO NOT MODIFY -- This file is generated by type_spec
46
+ @serial_class(
47
+ named_type_path="sdk.api.files.download_file.FileDownloadQueryEntityField",
48
+ parse_require={"type"},
49
+ )
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
51
+ class FileDownloadQueryEntityField(FileDownloadQueryBase):
52
+ type: typing.Literal[FileDownloadQueryType.ENTITY_FIELD] = FileDownloadQueryType.ENTITY_FIELD
53
+ entity: entity_t.EntityIdentifier
54
+ field_key: identifier_t.IdentifierKey
55
+
56
+
57
+ # DO NOT MODIFY -- This file is generated by type_spec
58
+ FileDownloadQuery = typing.Annotated[
59
+ typing.Union[FileDownloadQueryEntityField],
60
+ serial_union_annotation(
61
+ named_type_path="sdk.api.files.download_file.FileDownloadQuery",
62
+ discriminator="type",
63
+ discriminator_map={
64
+ "entity_field": FileDownloadQueryEntityField,
65
+ },
66
+ ),
67
+ ]
68
+
69
+
70
+ # DO NOT MODIFY -- This file is generated by type_spec
71
+ @serial_class(
72
+ named_type_path="sdk.api.files.download_file.Arguments",
73
+ )
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
75
+ class Arguments:
76
+ file_query: FileDownloadQuery
77
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,15 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from ... import base as base_t
12
- from ... import id_source as id_source_t
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import base_t
12
+ from ... import id_source_t
13
13
 
14
14
  __all__: list[str] = [
15
15
  "Arguments",
@@ -24,23 +24,32 @@ ENDPOINT_PATH = "api/external/id_source/list_id_source"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.id_source.list_id_source.Arguments",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
31
  class Arguments:
29
32
  spec: id_source_t.IdSourceSpec
30
33
  search_label: str
31
- offset: typing.Optional[typing.Optional[int]] = None
32
- limit: typing.Optional[typing.Optional[int]] = None
34
+ offset: int | None = None
35
+ limit: int | None = None
33
36
 
34
37
 
35
38
  # DO NOT MODIFY -- This file is generated by type_spec
36
- @dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.id_source.list_id_source.IdName",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
37
43
  class IdName:
38
- id: typing.Union[base_t.ObjectId, str]
44
+ id: base_t.ObjectId | str
39
45
  name: str
40
46
 
41
47
 
42
48
  # DO NOT MODIFY -- This file is generated by type_spec
43
- @dataclass(kw_only=True)
49
+ @serial_class(
50
+ named_type_path="sdk.api.id_source.list_id_source.Data",
51
+ )
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
53
  class Data:
45
54
  results: list[IdName]
46
55
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,16 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
9
+ import dataclasses
11
10
  from pkgs.serialization import serial_class
12
- from ... import base as base_t
13
- from ... import id_source as id_source_t
11
+ from ... import base_t
12
+ from ... import id_source_t
14
13
 
15
14
  __all__: list[str] = [
16
15
  "Arguments",
@@ -25,24 +24,30 @@ ENDPOINT_PATH = "api/external/id_source/match_id_source"
25
24
 
26
25
 
27
26
  # DO NOT MODIFY -- This file is generated by type_spec
28
- @dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.id_source.match_id_source.Arguments",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
31
  class Arguments:
30
32
  spec: id_source_t.IdSourceSpec
31
33
  names: list[str]
32
34
 
33
35
 
34
36
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
37
+ @serial_class(
38
+ named_type_path="sdk.api.id_source.match_id_source.Match",
39
+ )
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
41
  class Match:
37
42
  name: str
38
- ids: list[typing.Union[base_t.ObjectId, str]]
43
+ ids: list[base_t.ObjectId | str]
39
44
 
40
45
 
41
46
  # DO NOT MODIFY -- This file is generated by type_spec
42
47
  @serial_class(
43
- unconverted_values={"results"},
48
+ named_type_path="sdk.api.id_source.match_id_source.Data",
44
49
  )
45
- @dataclass(kw_only=True)
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
51
  class Data:
47
52
  results: list[Match]
48
53
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,14 +1,14 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from ... import base as base_t
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import base_t
12
12
 
13
13
  __all__: list[str] = [
14
14
  "Arguments",
@@ -23,20 +23,29 @@ ENDPOINT_PATH = "api/external/input_groups/external_get_input_group_names"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
26
+ @serial_class(
27
+ named_type_path="sdk.api.input_groups.get_input_group_names.Arguments",
28
+ )
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
30
  class Arguments:
28
31
  material_family_id: base_t.ObjectId
29
32
 
30
33
 
31
34
  # DO NOT MODIFY -- This file is generated by type_spec
32
- @dataclass(kw_only=True)
35
+ @serial_class(
36
+ named_type_path="sdk.api.input_groups.get_input_group_names.SimpleInputGroup",
37
+ )
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
39
  class SimpleInputGroup:
34
40
  input_group_id: base_t.ObjectId
35
41
  name: str
36
42
 
37
43
 
38
44
  # DO NOT MODIFY -- This file is generated by type_spec
39
- @dataclass(kw_only=True)
45
+ @serial_class(
46
+ named_type_path="sdk.api.input_groups.get_input_group_names.Data",
47
+ )
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
40
49
  class Data:
41
50
  input_groups: list[SimpleInputGroup]
42
51
  # 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
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  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
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import base_t
12
+ from ... import field_values_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,43 @@ 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(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
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(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
43
  class InputToCreate:
37
44
  name: str
38
45
  material_family_ids: list[base_t.ObjectId]
39
- quantity_type: typing.Union[typing.Literal[inputs_t.IngredientQuantityType.NUMERIC], typing.Literal[inputs_t.IngredientQuantityType.TEXT]]
40
- 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
46
+ quantity_type: typing.Literal[inputs_t.IngredientQuantityType.NUMERIC] | typing.Literal[inputs_t.IngredientQuantityType.TEXT]
47
+ type: typing.Literal[inputs_t.IngredientType.INGREDIENT] | typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]
48
+ attributes: list[input_attributes_t.InputAttributeValue] | None = None
49
+ category_id: base_t.ObjectId | None = None
50
+ field_values: list[field_values_t.FieldRefNameValue] | None = None
43
51
 
44
52
 
45
53
  # DO NOT MODIFY -- This file is generated by type_spec
46
- @dataclass(kw_only=True)
54
+ @serial_class(
55
+ named_type_path="sdk.api.inputs.create_inputs.InputSimple",
56
+ )
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
58
  class InputSimple:
48
59
  input_id: base_t.ObjectId
49
60
 
50
61
 
51
62
  # DO NOT MODIFY -- This file is generated by type_spec
52
- @dataclass(kw_only=True)
63
+ @serial_class(
64
+ named_type_path="sdk.api.inputs.create_inputs.Data",
65
+ )
66
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
53
67
  class Data:
54
68
  inputs: list[InputSimple]
55
69
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,15 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  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
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import base_t
12
+ from ... import input_attributes_t
13
13
 
14
14
  __all__: list[str] = [
15
15
  "Arguments",
@@ -27,17 +27,23 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_data"
27
27
 
28
28
 
29
29
  # DO NOT MODIFY -- This file is generated by type_spec
30
- @dataclass(kw_only=True)
30
+ @serial_class(
31
+ named_type_path="sdk.api.inputs.get_input_data.Arguments",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
34
  class Arguments:
32
35
  material_family_id: base_t.ObjectId
33
- input_ids: typing.Optional[list[base_t.ObjectId]]
34
- is_parameter: typing.Optional[bool]
35
- offset: typing.Optional[typing.Optional[int]] = None
36
- limit: typing.Optional[typing.Optional[int]] = None
36
+ input_ids: list[base_t.ObjectId] | None
37
+ is_parameter: bool | None
38
+ offset: int | None = None
39
+ limit: int | None = None
37
40
 
38
41
 
39
42
  # DO NOT MODIFY -- This file is generated by type_spec
40
- @dataclass(kw_only=True)
43
+ @serial_class(
44
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputAttr",
45
+ )
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
47
  class SimpleInputAttr:
42
48
  attribute_id: base_t.ObjectId
43
49
  name: str
@@ -45,33 +51,45 @@ class SimpleInputAttr:
45
51
 
46
52
 
47
53
  # DO NOT MODIFY -- This file is generated by type_spec
48
- @dataclass(kw_only=True)
54
+ @serial_class(
55
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputGlobalCategory",
56
+ )
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
49
58
  class SimpleInputGlobalCategory:
50
59
  category_id: base_t.ObjectId
51
60
  name: str
52
61
 
53
62
 
54
63
  # DO NOT MODIFY -- This file is generated by type_spec
55
- @dataclass(kw_only=True)
64
+ @serial_class(
65
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputSubcategory",
66
+ )
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
56
68
  class SimpleInputSubcategory:
57
69
  subcategory_id: base_t.ObjectId
58
70
  name: str
59
71
 
60
72
 
61
73
  # DO NOT MODIFY -- This file is generated by type_spec
62
- @dataclass(kw_only=True)
74
+ @serial_class(
75
+ named_type_path="sdk.api.inputs.get_input_data.FullInput",
76
+ )
77
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
63
78
  class FullInput:
64
79
  input_id: base_t.ObjectId
65
80
  name: str
66
81
  quantity_type: str
67
82
  is_parameter: bool
68
83
  attributes: list[input_attributes_t.InputAttributeValue]
69
- global_category_id: typing.Optional[base_t.ObjectId]
84
+ global_category_id: base_t.ObjectId | None
70
85
  subcategory_ids: list[base_t.ObjectId]
71
86
 
72
87
 
73
88
  # DO NOT MODIFY -- This file is generated by type_spec
74
- @dataclass(kw_only=True)
89
+ @serial_class(
90
+ named_type_path="sdk.api.inputs.get_input_data.Data",
91
+ )
92
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
75
93
  class Data:
76
94
  inputs: list[FullInput]
77
95
  attrs: list[SimpleInputAttr]
@@ -1,14 +1,14 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from ... import base as base_t
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import base_t
12
12
 
13
13
  __all__: list[str] = [
14
14
  "Arguments",
@@ -23,23 +23,32 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_names"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclass(kw_only=True)
26
+ @serial_class(
27
+ named_type_path="sdk.api.inputs.get_input_names.Arguments",
28
+ )
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
30
  class Arguments:
28
31
  material_family_id: base_t.ObjectId
29
- is_parameter: typing.Optional[bool]
30
- offset: typing.Optional[typing.Optional[int]] = None
31
- limit: typing.Optional[typing.Optional[int]] = None
32
+ is_parameter: bool | None
33
+ offset: int | None = None
34
+ limit: int | None = None
32
35
 
33
36
 
34
37
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
38
+ @serial_class(
39
+ named_type_path="sdk.api.inputs.get_input_names.InputWithName",
40
+ )
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
42
  class InputWithName:
37
43
  input_id: base_t.ObjectId
38
44
  name: str
39
45
 
40
46
 
41
47
  # DO NOT MODIFY -- This file is generated by type_spec
42
- @dataclass(kw_only=True)
48
+ @serial_class(
49
+ named_type_path="sdk.api.inputs.get_input_names.Data",
50
+ )
51
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
52
  class Data:
44
53
  inputs: list[InputWithName]
45
54
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,15 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  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
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import base_t
12
+ from ... import input_attributes_t
13
13
 
14
14
  __all__: list[str] = [
15
15
  "Arguments",
@@ -27,13 +27,19 @@ ENDPOINT_PATH = "api/external/inputs/external_get_inputs_data"
27
27
 
28
28
 
29
29
  # DO NOT MODIFY -- This file is generated by type_spec
30
- @dataclass(kw_only=True)
30
+ @serial_class(
31
+ named_type_path="sdk.api.inputs.get_inputs_data.Arguments",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
34
  class Arguments:
32
35
  input_ids: list[base_t.ObjectId]
33
36
 
34
37
 
35
38
  # DO NOT MODIFY -- This file is generated by type_spec
36
- @dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.get_inputs_data.AttributeDetails",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
37
43
  class AttributeDetails:
38
44
  attribute_id: base_t.ObjectId
39
45
  name: str
@@ -41,14 +47,20 @@ class AttributeDetails:
41
47
 
42
48
 
43
49
  # DO NOT MODIFY -- This file is generated by type_spec
44
- @dataclass(kw_only=True)
50
+ @serial_class(
51
+ named_type_path="sdk.api.inputs.get_inputs_data.InputTag",
52
+ )
53
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
45
54
  class InputTag:
46
55
  tag_id: base_t.ObjectId
47
56
  tag_name: str
48
57
 
49
58
 
50
59
  # DO NOT MODIFY -- This file is generated by type_spec
51
- @dataclass(kw_only=True)
60
+ @serial_class(
61
+ named_type_path="sdk.api.inputs.get_inputs_data.InputCategory",
62
+ )
63
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
52
64
  class InputCategory:
53
65
  material_family_id: base_t.ObjectId
54
66
  category_id: base_t.ObjectId
@@ -56,7 +68,10 @@ class InputCategory:
56
68
 
57
69
 
58
70
  # DO NOT MODIFY -- This file is generated by type_spec
59
- @dataclass(kw_only=True)
71
+ @serial_class(
72
+ named_type_path="sdk.api.inputs.get_inputs_data.InputDetails",
73
+ )
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
60
75
  class InputDetails:
61
76
  input_id: base_t.ObjectId
62
77
  name: str
@@ -68,7 +83,10 @@ class InputDetails:
68
83
 
69
84
 
70
85
  # DO NOT MODIFY -- This file is generated by type_spec
71
- @dataclass(kw_only=True)
86
+ @serial_class(
87
+ named_type_path="sdk.api.inputs.get_inputs_data.Data",
88
+ )
89
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
72
90
  class Data:
73
91
  input_details: list[InputDetails]
74
92
  input_attributes: list[AttributeDetails]
@@ -1,16 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
5
  from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
9
+ import dataclasses
11
10
  from pkgs.serialization import serial_class
12
- from ... import base as base_t
13
- from ... import response as response_t
11
+ from ... import base_t
12
+ from ... import response_t
14
13
 
15
14
  __all__: list[str] = [
16
15
  "Arguments",
@@ -25,26 +24,33 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_attribute_values"
25
24
 
26
25
 
27
26
  # DO NOT MODIFY -- This file is generated by type_spec
28
- @dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.inputs.set_input_attribute_values.Arguments",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
31
  class Arguments:
30
32
  attribute_values: list[InputAttributeValue]
31
33
 
32
34
 
33
35
  # DO NOT MODIFY -- This file is generated by type_spec
34
36
  @serial_class(
37
+ named_type_path="sdk.api.inputs.set_input_attribute_values.InputAttributeValue",
35
38
  unconverted_values={"quantity_json"},
36
39
  to_string_values={"quantity_dec"},
37
40
  )
38
- @dataclass(kw_only=True)
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
39
42
  class InputAttributeValue:
40
43
  input_id: base_t.ObjectId
41
44
  attribute_id: base_t.ObjectId
42
- quantity_dec: typing.Optional[Decimal] = None
43
- quantity_json: typing.Optional[base_t.JsonValue] = None
45
+ quantity_dec: Decimal | None = None
46
+ quantity_json: base_t.JsonValue | None = None
44
47
 
45
48
 
46
49
  # DO NOT MODIFY -- This file is generated by type_spec
47
- @dataclass(kw_only=True)
50
+ @serial_class(
51
+ named_type_path="sdk.api.inputs.set_input_attribute_values.Data",
52
+ )
53
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
48
54
  class Data(response_t.Response):
49
55
  pass
50
56
  # 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 base_t
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(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
+ class Arguments:
32
+ input_key: identifier_t.IdentifierKey
33
+ category_id: int | None
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(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
+ class Data(response_t.Response):
43
+ pass
44
+ # DO NOT MODIFY -- This file is generated by type_spec