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,62 @@
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 pkgs.serialization import serial_alias_annotation
12
+ from . import base_t
13
+
14
+ __all__: list[str] = [
15
+ "IdentifierKey",
16
+ "IdentifierKeyBatchReference",
17
+ "IdentifierKeyId",
18
+ "IdentifierKeyRefName",
19
+ ]
20
+
21
+
22
+ # DO NOT MODIFY -- This file is generated by type_spec
23
+ @serial_class(
24
+ named_type_path="sdk.identifier.IdentifierKeyId",
25
+ parse_require={"type"},
26
+ )
27
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
28
+ class IdentifierKeyId:
29
+ type: typing.Literal["id"] = "id"
30
+ id: base_t.ObjectId
31
+
32
+
33
+ # DO NOT MODIFY -- This file is generated by type_spec
34
+ @serial_class(
35
+ named_type_path="sdk.identifier.IdentifierKeyRefName",
36
+ parse_require={"type"},
37
+ )
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
39
+ class IdentifierKeyRefName:
40
+ type: typing.Literal["ref_name"] = "ref_name"
41
+ ref_name: str
42
+
43
+
44
+ # DO NOT MODIFY -- This file is generated by type_spec
45
+ @serial_class(
46
+ named_type_path="sdk.identifier.IdentifierKeyBatchReference",
47
+ parse_require={"type"},
48
+ )
49
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
50
+ class IdentifierKeyBatchReference:
51
+ type: typing.Literal["batch_reference"] = "batch_reference"
52
+ reference: str
53
+
54
+
55
+ # DO NOT MODIFY -- This file is generated by type_spec
56
+ IdentifierKey = typing.Annotated[
57
+ IdentifierKeyId | IdentifierKeyBatchReference | IdentifierKeyRefName,
58
+ serial_alias_annotation(
59
+ named_type_path="sdk.identifier.IdentifierKey",
60
+ ),
61
+ ]
62
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,29 +1,7 @@
1
- # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
1
+ # ruff: noqa: E402 Q003
4
2
  # fmt: off
5
3
  # isort: skip_file
6
- from __future__ import annotations
7
- import typing # noqa: F401
8
- import datetime # noqa: F401
9
- from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from pkgs.serialization import serial_class
12
- from . import base as base_t
13
-
14
- __all__: list[str] = [
15
- "InputAttributeValue",
16
- ]
17
-
18
-
19
4
  # DO NOT MODIFY -- This file is generated by type_spec
20
- @serial_class(
21
- unconverted_values={"quantity_json"},
22
- to_string_values={"quantity_dec"},
23
- )
24
- @dataclass(kw_only=True)
25
- class InputAttributeValue:
26
- attribute_id: base_t.ObjectId
27
- quantity_dec: typing.Optional[Decimal] = None
28
- quantity_json: typing.Optional[base_t.JsonValue] = None
5
+ # Kept only for SDK backwards compatibility
6
+ from .input_attributes_t import InputAttributeValue as InputAttributeValue
29
7
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,29 @@
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
+
13
+ __all__: list[str] = [
14
+ "InputAttributeValue",
15
+ ]
16
+
17
+
18
+ # DO NOT MODIFY -- This file is generated by type_spec
19
+ @serial_class(
20
+ named_type_path="sdk.input_attributes.InputAttributeValue",
21
+ unconverted_values={"quantity_json"},
22
+ to_string_values={"quantity_dec"},
23
+ )
24
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
25
+ class InputAttributeValue:
26
+ attribute_id: base_t.ObjectId
27
+ quantity_dec: Decimal | None = None
28
+ quantity_json: base_t.JsonValue | None = None
29
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,61 +1,10 @@
1
- # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
- # ruff: noqa: E402
1
+ # ruff: noqa: E402 Q003
4
2
  # fmt: off
5
3
  # 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
- from dataclasses import dataclass
12
- from pkgs.serialization import serial_string_enum
13
- from . import base as base_t
14
-
15
- __all__: list[str] = [
16
- "IngredientQuantityType",
17
- "IngredientType",
18
- "SimpleInput",
19
- ]
20
-
21
-
22
- # DO NOT MODIFY -- This file is generated by type_spec
23
- @serial_string_enum(
24
- labels={
25
- "numeric": "Numeric",
26
- "recipe": "Experiment Component",
27
- "date": "Date",
28
- "categorical": "Categorical",
29
- "timestamp": "Timestamp",
30
- "text": "Text",
31
- "curve": "Curve",
32
- "files": "Attachments",
33
- },
34
- )
35
- class IngredientQuantityType(StrEnum):
36
- NUMERIC = "numeric"
37
- RECIPE = "recipe"
38
- DATE = "date"
39
- CATEGORICAL = "categorical"
40
- TIMESTAMP = "timestamp"
41
- TEXT = "text"
42
- CURVE = "curve"
43
- FILES = "files"
44
-
45
-
46
- # DO NOT MODIFY -- This file is generated by type_spec
47
- class IngredientType(StrEnum):
48
- INGREDIENT = "ingredient"
49
- PROCESS_PARAMETER = "process_parameter"
50
- EQUIPMENT = "equipment"
51
-
52
-
53
4
  # DO NOT MODIFY -- This file is generated by type_spec
54
- @dataclass(kw_only=True)
55
- class SimpleInput:
56
- input_id: base_t.ObjectId
57
- quantity_type: IngredientQuantityType
58
- name: str
59
- is_parameter: bool
60
- intermediate_recipe_id: typing.Optional[base_t.ObjectId]
5
+ # Kept only for SDK backwards compatibility
6
+ from .inputs_t import IngredientQuantityType as IngredientQuantityType
7
+ from .inputs_t import IngredientType as IngredientType
8
+ from .inputs_t import IngredientBehavior as IngredientBehavior
9
+ from .inputs_t import SimpleInput as SimpleInput
61
10
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,82 @@
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_string_enum
13
+ from . import base_t
14
+
15
+ __all__: list[str] = [
16
+ "IngredientBehavior",
17
+ "IngredientQuantityType",
18
+ "IngredientType",
19
+ "SimpleInput",
20
+ ]
21
+
22
+
23
+ # DO NOT MODIFY -- This file is generated by type_spec
24
+ @serial_string_enum(
25
+ labels={
26
+ "numeric": "Numeric",
27
+ "recipe": "Experiment Component",
28
+ "date": "Date",
29
+ "categorical": "Categorical",
30
+ "timestamp": "Timestamp",
31
+ "text": "Text",
32
+ "curve": "Curve",
33
+ "files": "Attachments",
34
+ },
35
+ )
36
+ class IngredientQuantityType(StrEnum):
37
+ NUMERIC = "numeric"
38
+ RECIPE = "recipe"
39
+ DATE = "date"
40
+ CATEGORICAL = "categorical"
41
+ TIMESTAMP = "timestamp"
42
+ TEXT = "text"
43
+ CURVE = "curve"
44
+ FILES = "files"
45
+
46
+
47
+ # DO NOT MODIFY -- This file is generated by type_spec
48
+ class IngredientType(StrEnum):
49
+ INGREDIENT = "ingredient"
50
+ PROCESS_PARAMETER = "process_parameter"
51
+ EQUIPMENT = "equipment"
52
+
53
+
54
+ # DO NOT MODIFY -- This file is generated by type_spec
55
+ @serial_string_enum(
56
+ labels={
57
+ "included": "Included",
58
+ "use_quantity": "Use Quantity",
59
+ "not_included": "Not Included",
60
+ "autofill": "Autofill",
61
+ },
62
+ )
63
+ class IngredientBehavior(StrEnum):
64
+ INCLUDED = "included"
65
+ USE_QUANTITY = "use_quantity"
66
+ NOT_INCLUDED = "not_included"
67
+ AUTOFILL = "autofill"
68
+
69
+
70
+ # DO NOT MODIFY -- This file is generated by type_spec
71
+ @serial_class(
72
+ named_type_path="sdk.inputs.SimpleInput",
73
+ )
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
75
+ class SimpleInput:
76
+ input_id: base_t.ObjectId
77
+ quantity_type: IngredientQuantityType
78
+ name: str
79
+ is_parameter: bool
80
+ intermediate_recipe_id: base_t.ObjectId | None
81
+ input_type: str
82
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,8 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .integration_server_t import IntegrationEnvironment as IntegrationEnvironment
7
+ from .integration_server_t import EnvironmentConfig as EnvironmentConfig
8
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,46 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from . import auth_retrieval_t
13
+ from . import base_t
14
+ from . import client_config_t
15
+
16
+ __all__: list[str] = [
17
+ "EnvironmentConfig",
18
+ "INTEGRATION_SERVER_RUN_UUID_FIELD_REF_NAME",
19
+ "IntegrationEnvironment",
20
+ ]
21
+
22
+
23
+ # DO NOT MODIFY -- This file is generated by type_spec
24
+ class IntegrationEnvironment(StrEnum):
25
+ LOCAL = "local"
26
+ DEV = "dev"
27
+ TEST = "test"
28
+ PROD = "prod"
29
+ STG = "stg"
30
+ SBX = "sbx"
31
+
32
+
33
+ # DO NOT MODIFY -- This file is generated by type_spec
34
+ @serial_class(
35
+ named_type_path="sdk.integration_server.EnvironmentConfig",
36
+ )
37
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
38
+ class EnvironmentConfig:
39
+ auth_retrieval: auth_retrieval_t.AuthRetrieval
40
+ base_url: str
41
+ client_options: client_config_t.ClientConfigOptions | None = None
42
+
43
+
44
+ # DO NOT MODIFY -- This file is generated by type_spec
45
+ INTEGRATION_SERVER_RUN_UUID_FIELD_REF_NAME = "unc_integration_server_run_uuid"
46
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,10 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .integration_session_t import IntegrationSessionType as IntegrationSessionType
7
+ from .integration_session_t import IntegrationSessionBase as IntegrationSessionBase
8
+ from .integration_session_t import IntegrationSessionInstrument as IntegrationSessionInstrument
9
+ from .integration_session_t import IntegrationSession as IntegrationSession
10
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,60 @@
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 identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "IntegrationSession",
18
+ "IntegrationSessionBase",
19
+ "IntegrationSessionInstrument",
20
+ "IntegrationSessionType",
21
+ ]
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ class IntegrationSessionType(StrEnum):
26
+ INSTRUMENT = "instrument"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.integration_session.IntegrationSessionBase",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class IntegrationSessionBase:
35
+ type: IntegrationSessionType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.integration_session.IntegrationSessionInstrument",
41
+ parse_require={"type"},
42
+ )
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
+ class IntegrationSessionInstrument(IntegrationSessionBase):
45
+ type: typing.Literal[IntegrationSessionType.INSTRUMENT] = IntegrationSessionType.INSTRUMENT
46
+ equipment_key: identifier_t.IdentifierKey
47
+
48
+
49
+ # DO NOT MODIFY -- This file is generated by type_spec
50
+ IntegrationSession = typing.Annotated[
51
+ typing.Union[IntegrationSessionInstrument],
52
+ serial_union_annotation(
53
+ named_type_path="sdk.integration_session.IntegrationSession",
54
+ discriminator="type",
55
+ discriminator_map={
56
+ "instrument": IntegrationSessionInstrument,
57
+ },
58
+ ),
59
+ ]
60
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,10 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .integrations_t import DataPackageType as DataPackageType
7
+ from .integrations_t import DataPackageBase as DataPackageBase
8
+ from .integrations_t import DataPackageNumericReading as DataPackageNumericReading
9
+ from .integrations_t import DataPackage as DataPackage
10
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,62 @@
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
+
16
+ __all__: list[str] = [
17
+ "DataPackage",
18
+ "DataPackageBase",
19
+ "DataPackageNumericReading",
20
+ "DataPackageType",
21
+ ]
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ class DataPackageType(StrEnum):
26
+ NUMERIC_READING = "numeric_reading"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.integrations.DataPackageBase",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class DataPackageBase:
35
+ type: DataPackageType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.integrations.DataPackageNumericReading",
41
+ to_string_values={"value"},
42
+ parse_require={"type"},
43
+ )
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
45
+ class DataPackageNumericReading(DataPackageBase):
46
+ type: typing.Literal[DataPackageType.NUMERIC_READING] = DataPackageType.NUMERIC_READING
47
+ value: Decimal
48
+ target_entity: entity_t.EntityIdentifier
49
+
50
+
51
+ # DO NOT MODIFY -- This file is generated by type_spec
52
+ DataPackage = typing.Annotated[
53
+ typing.Union[DataPackageNumericReading],
54
+ serial_union_annotation(
55
+ named_type_path="sdk.integrations.DataPackage",
56
+ discriminator="type",
57
+ discriminator_map={
58
+ "numeric_reading": DataPackageNumericReading,
59
+ },
60
+ ),
61
+ ]
62
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,28 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .job_definition_t import JobDefinitionType as JobDefinitionType
7
+ from .job_definition_t import JobExecutorType as JobExecutorType
8
+ from .job_definition_t import GenericUploadDataSourceType as GenericUploadDataSourceType
9
+ from .job_definition_t import JobExecutorBase as JobExecutorBase
10
+ from .job_definition_t import JobExecutorScript as JobExecutorScript
11
+ from .job_definition_t import GenericUploadDataSourceBase as GenericUploadDataSourceBase
12
+ from .job_definition_t import GenericUploadDataSourceSFTP as GenericUploadDataSourceSFTP
13
+ from .job_definition_t import S3CloudProvider as S3CloudProvider
14
+ from .job_definition_t import GenericUploadDataSourceS3 as GenericUploadDataSourceS3
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 JobLoggingSettings as JobLoggingSettings
19
+ from .job_definition_t import JobDefinitionBase as JobDefinitionBase
20
+ from .job_definition_t import CronJobDefinition as CronJobDefinition
21
+ from .job_definition_t import HttpJobDefinitionBase as HttpJobDefinitionBase
22
+ from .job_definition_t import CustomHttpJobDefinition as CustomHttpJobDefinition
23
+ from .job_definition_t import WebhookJobDefinition as WebhookJobDefinition
24
+ from .job_definition_t import JobDefinition as JobDefinition
25
+ from .job_definition_t import ProfileDefinition as ProfileDefinition
26
+ from .job_definition_t import ProfileMetadata as ProfileMetadata
27
+ from .job_definition_t import JobResult as JobResult
28
+ # DO NOT MODIFY -- This file is generated by type_spec