UncountablePythonSDK 0.0.52__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 (316) hide show
  1. docs/conf.py +54 -7
  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 +6 -4
  8. examples/async_batch.py +3 -3
  9. examples/basic_auth.py +7 -0
  10. examples/create_entity.py +3 -1
  11. examples/create_ingredient_sdk.py +34 -0
  12. examples/download_files.py +26 -0
  13. examples/edit_recipe_inputs.py +4 -2
  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 +4 -1
  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 +1 -2
  29. pkgs/argument_parser/__init__.py +9 -0
  30. pkgs/argument_parser/_is_namedtuple.py +3 -0
  31. pkgs/argument_parser/argument_parser.py +217 -70
  32. pkgs/filesystem_utils/__init__.py +1 -0
  33. pkgs/filesystem_utils/_blob_session.py +144 -0
  34. pkgs/filesystem_utils/_gdrive_session.py +10 -7
  35. pkgs/filesystem_utils/_s3_session.py +15 -13
  36. pkgs/filesystem_utils/_sftp_session.py +11 -7
  37. pkgs/filesystem_utils/file_type_utils.py +30 -10
  38. pkgs/py.typed +0 -0
  39. pkgs/serialization/__init__.py +7 -2
  40. pkgs/serialization/annotation.py +64 -0
  41. pkgs/serialization/missing_sentry.py +1 -1
  42. pkgs/serialization/opaque_key.py +1 -1
  43. pkgs/serialization/serial_alias.py +47 -0
  44. pkgs/serialization/serial_class.py +47 -26
  45. pkgs/serialization/serial_generic.py +16 -0
  46. pkgs/serialization/serial_union.py +17 -14
  47. pkgs/serialization/yaml.py +4 -1
  48. pkgs/serialization_util/__init__.py +6 -0
  49. pkgs/serialization_util/dataclasses.py +14 -0
  50. pkgs/serialization_util/serialization_helpers.py +15 -5
  51. pkgs/type_spec/actions_registry/__main__.py +0 -4
  52. pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
  53. pkgs/type_spec/builder.py +354 -119
  54. pkgs/type_spec/builder_types.py +9 -0
  55. pkgs/type_spec/config.py +51 -11
  56. pkgs/type_spec/cross_output_links.py +99 -0
  57. pkgs/type_spec/emit_io_ts.py +1 -1
  58. pkgs/type_spec/emit_open_api.py +127 -36
  59. pkgs/type_spec/emit_open_api_util.py +5 -6
  60. pkgs/type_spec/emit_python.py +329 -121
  61. pkgs/type_spec/emit_typescript.py +117 -256
  62. pkgs/type_spec/emit_typescript_util.py +291 -2
  63. pkgs/type_spec/load_types.py +18 -4
  64. pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
  65. pkgs/type_spec/open_api_util.py +29 -4
  66. pkgs/type_spec/parts/base.py.prepart +13 -10
  67. pkgs/type_spec/parts/base.ts.prepart +4 -0
  68. pkgs/type_spec/type_info/__main__.py +3 -1
  69. pkgs/type_spec/type_info/emit_type_info.py +124 -29
  70. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  71. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
  72. pkgs/type_spec/util.py +4 -4
  73. pkgs/type_spec/value_spec/__main__.py +26 -9
  74. pkgs/type_spec/value_spec/convert_type.py +21 -1
  75. pkgs/type_spec/value_spec/emit_python.py +25 -7
  76. pkgs/type_spec/value_spec/types.py +1 -1
  77. uncountable/core/async_batch.py +1 -1
  78. uncountable/core/client.py +142 -39
  79. uncountable/core/environment.py +41 -0
  80. uncountable/core/file_upload.py +52 -18
  81. uncountable/integration/cli.py +142 -0
  82. uncountable/integration/construct_client.py +8 -8
  83. uncountable/integration/cron.py +11 -37
  84. uncountable/integration/db/connect.py +12 -2
  85. uncountable/integration/db/session.py +25 -0
  86. uncountable/integration/entrypoint.py +8 -37
  87. uncountable/integration/executors/executors.py +125 -2
  88. uncountable/integration/executors/generic_upload_executor.py +87 -29
  89. uncountable/integration/executors/script_executor.py +3 -3
  90. uncountable/integration/http_server/__init__.py +5 -0
  91. uncountable/integration/http_server/types.py +69 -0
  92. uncountable/integration/job.py +242 -12
  93. uncountable/integration/queue_runner/__init__.py +0 -0
  94. uncountable/integration/queue_runner/command_server/__init__.py +28 -0
  95. uncountable/integration/queue_runner/command_server/command_client.py +133 -0
  96. uncountable/integration/queue_runner/command_server/command_server.py +142 -0
  97. uncountable/integration/queue_runner/command_server/constants.py +4 -0
  98. uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  99. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
  100. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
  101. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
  102. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
  103. uncountable/integration/queue_runner/command_server/types.py +75 -0
  104. uncountable/integration/queue_runner/datastore/__init__.py +3 -0
  105. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
  106. uncountable/integration/queue_runner/datastore/interface.py +29 -0
  107. uncountable/integration/queue_runner/datastore/model.py +24 -0
  108. uncountable/integration/queue_runner/job_scheduler.py +200 -0
  109. uncountable/integration/queue_runner/queue_runner.py +34 -0
  110. uncountable/integration/queue_runner/types.py +7 -0
  111. uncountable/integration/queue_runner/worker.py +116 -0
  112. uncountable/integration/scan_profiles.py +67 -0
  113. uncountable/integration/scheduler.py +199 -0
  114. uncountable/integration/secret_retrieval/retrieve_secret.py +26 -4
  115. uncountable/integration/server.py +94 -69
  116. uncountable/integration/telemetry.py +150 -34
  117. uncountable/integration/webhook_server/entrypoint.py +97 -0
  118. uncountable/types/__init__.py +78 -1
  119. uncountable/types/api/batch/execute_batch.py +13 -6
  120. uncountable/types/api/batch/execute_batch_load_async.py +9 -3
  121. uncountable/types/api/chemical/convert_chemical_formats.py +17 -5
  122. uncountable/types/api/condition_parameters/__init__.py +1 -0
  123. uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
  124. uncountable/types/api/entity/create_entities.py +19 -7
  125. uncountable/types/api/entity/create_entity.py +17 -8
  126. uncountable/types/api/entity/create_or_update_entity.py +48 -0
  127. uncountable/types/api/entity/export_entities.py +59 -0
  128. uncountable/types/api/entity/get_entities_data.py +13 -4
  129. uncountable/types/api/entity/grant_entity_permissions.py +48 -0
  130. uncountable/types/api/entity/list_aggregate.py +79 -0
  131. uncountable/types/api/entity/list_entities.py +42 -10
  132. uncountable/types/api/entity/lock_entity.py +11 -4
  133. uncountable/types/api/entity/lookup_entity.py +116 -0
  134. uncountable/types/api/entity/resolve_entity_ids.py +15 -6
  135. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  136. uncountable/types/api/entity/set_values.py +10 -3
  137. uncountable/types/api/entity/transition_entity_phase.py +22 -7
  138. uncountable/types/api/entity/unlock_entity.py +10 -3
  139. uncountable/types/api/equipment/associate_equipment_input.py +9 -3
  140. uncountable/types/api/field_options/upsert_field_options.py +17 -7
  141. uncountable/types/api/files/__init__.py +1 -0
  142. uncountable/types/api/files/download_file.py +77 -0
  143. uncountable/types/api/id_source/list_id_source.py +16 -7
  144. uncountable/types/api/id_source/match_id_source.py +14 -5
  145. uncountable/types/api/input_groups/get_input_group_names.py +13 -4
  146. uncountable/types/api/inputs/create_inputs.py +23 -9
  147. uncountable/types/api/inputs/get_input_data.py +30 -12
  148. uncountable/types/api/inputs/get_input_names.py +16 -7
  149. uncountable/types/api/inputs/get_inputs_data.py +25 -7
  150. uncountable/types/api/inputs/set_input_attribute_values.py +12 -6
  151. uncountable/types/api/inputs/set_input_category.py +12 -5
  152. uncountable/types/api/inputs/set_input_subcategories.py +10 -3
  153. uncountable/types/api/inputs/set_intermediate_type.py +11 -4
  154. uncountable/types/api/integrations/__init__.py +1 -0
  155. uncountable/types/api/integrations/publish_realtime_data.py +41 -0
  156. uncountable/types/api/integrations/push_notification.py +49 -0
  157. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  158. uncountable/types/api/listing/__init__.py +1 -0
  159. uncountable/types/api/listing/fetch_listing.py +58 -0
  160. uncountable/types/api/material_families/update_entity_material_families.py +10 -4
  161. uncountable/types/api/notebooks/__init__.py +1 -0
  162. uncountable/types/api/notebooks/add_notebook_content.py +119 -0
  163. uncountable/types/api/outputs/get_output_data.py +28 -13
  164. uncountable/types/api/outputs/get_output_names.py +15 -6
  165. uncountable/types/api/outputs/get_output_organization.py +173 -0
  166. uncountable/types/api/outputs/resolve_output_conditions.py +20 -8
  167. uncountable/types/api/permissions/set_core_permissions.py +26 -10
  168. uncountable/types/api/project/get_projects.py +16 -7
  169. uncountable/types/api/project/get_projects_data.py +17 -8
  170. uncountable/types/api/recipe_links/create_recipe_link.py +12 -5
  171. uncountable/types/api/recipe_links/remove_recipe_link.py +11 -4
  172. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +16 -7
  173. uncountable/types/api/recipes/add_recipe_to_project.py +10 -3
  174. uncountable/types/api/recipes/add_time_series_data.py +64 -0
  175. uncountable/types/api/recipes/archive_recipes.py +11 -4
  176. uncountable/types/api/recipes/associate_recipe_as_input.py +12 -5
  177. uncountable/types/api/recipes/associate_recipe_as_lot.py +10 -3
  178. uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
  179. uncountable/types/api/recipes/create_mix_order.py +44 -0
  180. uncountable/types/api/recipes/create_recipe.py +15 -9
  181. uncountable/types/api/recipes/create_recipes.py +21 -9
  182. uncountable/types/api/recipes/disassociate_recipe_as_input.py +10 -3
  183. uncountable/types/api/recipes/edit_recipe_inputs.py +134 -22
  184. uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
  185. uncountable/types/api/recipes/get_curve.py +11 -5
  186. uncountable/types/api/recipes/get_recipe_calculations.py +13 -7
  187. uncountable/types/api/recipes/get_recipe_links.py +10 -4
  188. uncountable/types/api/recipes/get_recipe_names.py +13 -4
  189. uncountable/types/api/recipes/get_recipe_output_metadata.py +12 -6
  190. uncountable/types/api/recipes/get_recipes_data.py +87 -33
  191. uncountable/types/api/recipes/lock_recipes.py +19 -8
  192. uncountable/types/api/recipes/remove_recipe_from_project.py +10 -3
  193. uncountable/types/api/recipes/set_recipe_inputs.py +16 -10
  194. uncountable/types/api/recipes/set_recipe_metadata.py +10 -3
  195. uncountable/types/api/recipes/set_recipe_output_annotations.py +24 -12
  196. uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
  197. uncountable/types/api/recipes/set_recipe_outputs.py +35 -12
  198. uncountable/types/api/recipes/set_recipe_tags.py +26 -9
  199. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  200. uncountable/types/api/recipes/unarchive_recipes.py +10 -3
  201. uncountable/types/api/recipes/unlock_recipes.py +14 -6
  202. uncountable/types/api/runsheet/__init__.py +1 -0
  203. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  204. uncountable/types/api/triggers/run_trigger.py +11 -4
  205. uncountable/types/api/uploader/complete_async_parse.py +46 -0
  206. uncountable/types/api/uploader/invoke_uploader.py +13 -6
  207. uncountable/types/api/user/__init__.py +1 -0
  208. uncountable/types/api/user/get_current_user_info.py +40 -0
  209. uncountable/types/async_batch.py +2 -1
  210. uncountable/types/async_batch_processor.py +618 -18
  211. uncountable/types/async_batch_t.py +54 -7
  212. uncountable/types/async_jobs.py +8 -0
  213. uncountable/types/async_jobs_t.py +52 -0
  214. uncountable/types/auth_retrieval.py +11 -0
  215. uncountable/types/auth_retrieval_t.py +75 -0
  216. uncountable/types/base.py +0 -1
  217. uncountable/types/base_t.py +13 -11
  218. uncountable/types/calculations.py +0 -1
  219. uncountable/types/calculations_t.py +5 -2
  220. uncountable/types/chemical_structure.py +0 -1
  221. uncountable/types/chemical_structure_t.py +6 -5
  222. uncountable/types/client_base.py +751 -70
  223. uncountable/types/client_config.py +1 -1
  224. uncountable/types/client_config_t.py +17 -3
  225. uncountable/types/curves.py +0 -1
  226. uncountable/types/curves_t.py +10 -7
  227. uncountable/types/data.py +12 -0
  228. uncountable/types/data_t.py +103 -0
  229. uncountable/types/entity.py +4 -1
  230. uncountable/types/entity_t.py +125 -7
  231. uncountable/types/experiment_groups.py +0 -1
  232. uncountable/types/experiment_groups_t.py +5 -2
  233. uncountable/types/exports.py +8 -0
  234. uncountable/types/exports_t.py +34 -0
  235. uncountable/types/field_values.py +19 -1
  236. uncountable/types/field_values_t.py +246 -9
  237. uncountable/types/fields.py +0 -1
  238. uncountable/types/fields_t.py +5 -2
  239. uncountable/types/generic_upload.py +6 -1
  240. uncountable/types/generic_upload_t.py +88 -9
  241. uncountable/types/id_source.py +0 -1
  242. uncountable/types/id_source_t.py +26 -7
  243. uncountable/types/identifier.py +0 -1
  244. uncountable/types/identifier_t.py +13 -5
  245. uncountable/types/input_attributes.py +0 -1
  246. uncountable/types/input_attributes_t.py +4 -4
  247. uncountable/types/inputs.py +1 -1
  248. uncountable/types/inputs_t.py +24 -4
  249. uncountable/types/integration_server.py +8 -0
  250. uncountable/types/integration_server_t.py +46 -0
  251. uncountable/types/integration_session.py +10 -0
  252. uncountable/types/integration_session_t.py +60 -0
  253. uncountable/types/integrations.py +10 -0
  254. uncountable/types/integrations_t.py +62 -0
  255. uncountable/types/job_definition.py +4 -6
  256. uncountable/types/job_definition_t.py +96 -65
  257. uncountable/types/listing.py +9 -0
  258. uncountable/types/listing_t.py +51 -0
  259. uncountable/types/notices.py +8 -0
  260. uncountable/types/notices_t.py +37 -0
  261. uncountable/types/notifications.py +11 -0
  262. uncountable/types/notifications_t.py +74 -0
  263. uncountable/types/outputs.py +0 -1
  264. uncountable/types/outputs_t.py +6 -3
  265. uncountable/types/overrides.py +9 -0
  266. uncountable/types/overrides_t.py +49 -0
  267. uncountable/types/permissions.py +0 -1
  268. uncountable/types/permissions_t.py +1 -2
  269. uncountable/types/phases.py +0 -1
  270. uncountable/types/phases_t.py +5 -2
  271. uncountable/types/post_base.py +0 -1
  272. uncountable/types/post_base_t.py +1 -2
  273. uncountable/types/queued_job.py +17 -0
  274. uncountable/types/queued_job_t.py +140 -0
  275. uncountable/types/recipe_identifiers.py +0 -1
  276. uncountable/types/recipe_identifiers_t.py +21 -8
  277. uncountable/types/recipe_inputs.py +0 -1
  278. uncountable/types/recipe_inputs_t.py +1 -2
  279. uncountable/types/recipe_links.py +0 -1
  280. uncountable/types/recipe_links_t.py +7 -4
  281. uncountable/types/recipe_metadata.py +0 -1
  282. uncountable/types/recipe_metadata_t.py +14 -9
  283. uncountable/types/recipe_output_metadata.py +0 -1
  284. uncountable/types/recipe_output_metadata_t.py +5 -2
  285. uncountable/types/recipe_tags.py +0 -1
  286. uncountable/types/recipe_tags_t.py +5 -2
  287. uncountable/types/recipe_workflow_steps.py +0 -1
  288. uncountable/types/recipe_workflow_steps_t.py +14 -7
  289. uncountable/types/recipes.py +0 -1
  290. uncountable/types/recipes_t.py +6 -2
  291. uncountable/types/response.py +0 -1
  292. uncountable/types/response_t.py +3 -2
  293. uncountable/types/secret_retrieval.py +0 -1
  294. uncountable/types/secret_retrieval_t.py +13 -7
  295. uncountable/types/sockets.py +20 -0
  296. uncountable/types/sockets_t.py +169 -0
  297. uncountable/types/structured_filters.py +25 -0
  298. uncountable/types/structured_filters_t.py +248 -0
  299. uncountable/types/units.py +0 -1
  300. uncountable/types/units_t.py +5 -2
  301. uncountable/types/uploader.py +24 -0
  302. uncountable/types/uploader_t.py +222 -0
  303. uncountable/types/users.py +0 -1
  304. uncountable/types/users_t.py +5 -2
  305. uncountable/types/webhook_job.py +9 -0
  306. uncountable/types/webhook_job_t.py +48 -0
  307. uncountable/types/workflows.py +0 -1
  308. uncountable/types/workflows_t.py +10 -4
  309. uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
  310. uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
  311. {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
  312. UncountablePythonSDK-0.0.52.dist-info/METADATA +0 -56
  313. UncountablePythonSDK-0.0.52.dist-info/RECORD +0 -246
  314. docs/quickstart.md +0 -19
  315. uncountable/core/version.py +0 -11
  316. {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -0
@@ -1,35 +1,50 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
5
+ from .api.notebooks import add_notebook_content as add_notebook_content_t
6
6
  from .api.recipes import add_recipe_to_project as add_recipe_to_project_t
7
+ from .api.recipes import add_time_series_data as add_time_series_data_t
7
8
  from .api.recipes import archive_recipes as archive_recipes_t
8
9
  from .api.equipment import associate_equipment_input as associate_equipment_input_t
9
10
  from .api.recipes import associate_recipe_as_input as associate_recipe_as_input_t
10
11
  from .api.recipes import associate_recipe_as_lot as associate_recipe_as_lot_t
11
12
  from . import async_batch_t as async_batch_t
13
+ from . import async_jobs_t as async_jobs_t
14
+ from . import auth_retrieval_t as auth_retrieval_t
12
15
  from . import base_t as base_t
13
16
  from . import calculations_t as calculations_t
14
17
  from . import chemical_structure_t as chemical_structure_t
18
+ from .api.recipes import clear_recipe_outputs as clear_recipe_outputs_t
15
19
  from . import client_config_t as client_config_t
20
+ from .api.uploader import complete_async_parse as complete_async_parse_t
21
+ from .api.runsheet import complete_async_upload as complete_async_upload_t
16
22
  from .api.chemical import convert_chemical_formats as convert_chemical_formats_t
17
23
  from .api.entity import create_entities as create_entities_t
18
24
  from .api.entity import create_entity as create_entity_t
19
25
  from .api.inputs import create_inputs as create_inputs_t
26
+ from .api.recipes import create_mix_order as create_mix_order_t
27
+ from .api.entity import create_or_update_entity as create_or_update_entity_t
20
28
  from .api.recipes import create_recipe as create_recipe_t
21
29
  from .api.recipe_links import create_recipe_link as create_recipe_link_t
22
30
  from .api.recipes import create_recipes as create_recipes_t
23
31
  from . import curves_t as curves_t
32
+ from . import data_t as data_t
24
33
  from .api.recipes import disassociate_recipe_as_input as disassociate_recipe_as_input_t
34
+ from .api.files import download_file as download_file_t
25
35
  from .api.recipes import edit_recipe_inputs as edit_recipe_inputs_t
26
36
  from . import entity_t as entity_t
27
37
  from .api.batch import execute_batch as execute_batch_t
28
38
  from .api.batch import execute_batch_load_async as execute_batch_load_async_t
29
39
  from . import experiment_groups_t as experiment_groups_t
40
+ from .api.entity import export_entities as export_entities_t
41
+ from . import exports_t as exports_t
42
+ from .api.listing import fetch_listing as fetch_listing_t
30
43
  from . import field_values_t as field_values_t
31
44
  from . import fields_t as fields_t
32
45
  from . import generic_upload_t as generic_upload_t
46
+ from .api.recipes import get_column_calculation_values as get_column_calculation_values_t
47
+ from .api.user import get_current_user_info as get_current_user_info_t
33
48
  from .api.recipes import get_curve as get_curve_t
34
49
  from .api.entity import get_entities_data as get_entities_data_t
35
50
  from .api.inputs import get_input_data as get_input_data_t
@@ -38,6 +53,7 @@ from .api.inputs import get_input_names as get_input_names_t
38
53
  from .api.inputs import get_inputs_data as get_inputs_data_t
39
54
  from .api.outputs import get_output_data as get_output_data_t
40
55
  from .api.outputs import get_output_names as get_output_names_t
56
+ from .api.outputs import get_output_organization as get_output_organization_t
41
57
  from .api.project import get_projects as get_projects_t
42
58
  from .api.project import get_projects_data as get_projects_data_t
43
59
  from .api.recipes import get_recipe_calculations as get_recipe_calculations_t
@@ -46,21 +62,34 @@ from .api.recipe_metadata import get_recipe_metadata_data as get_recipe_metadata
46
62
  from .api.recipes import get_recipe_names as get_recipe_names_t
47
63
  from .api.recipes import get_recipe_output_metadata as get_recipe_output_metadata_t
48
64
  from .api.recipes import get_recipes_data as get_recipes_data_t
65
+ from .api.entity import grant_entity_permissions as grant_entity_permissions_t
49
66
  from . import id_source_t as id_source_t
50
67
  from . import identifier_t as identifier_t
51
68
  from . import input_attributes_t as input_attributes_t
52
69
  from . import inputs_t as inputs_t
70
+ from . import integration_server_t as integration_server_t
71
+ from . import integration_session_t as integration_session_t
72
+ from . import integrations_t as integrations_t
53
73
  from .api.uploader import invoke_uploader as invoke_uploader_t
54
74
  from . import job_definition_t as job_definition_t
75
+ from .api.entity import list_aggregate as list_aggregate_t
55
76
  from .api.entity import list_entities as list_entities_t
56
77
  from .api.id_source import list_id_source as list_id_source_t
78
+ from . import listing_t as listing_t
57
79
  from .api.entity import lock_entity as lock_entity_t
58
80
  from .api.recipes import lock_recipes as lock_recipes_t
81
+ from .api.entity import lookup_entity as lookup_entity_t
59
82
  from .api.id_source import match_id_source as match_id_source_t
83
+ from . import notices_t as notices_t
84
+ from . import notifications_t as notifications_t
60
85
  from . import outputs_t as outputs_t
86
+ from . import overrides_t as overrides_t
61
87
  from . import permissions_t as permissions_t
62
88
  from . import phases_t as phases_t
63
89
  from . import post_base_t as post_base_t
90
+ from .api.integrations import publish_realtime_data as publish_realtime_data_t
91
+ from .api.integrations import push_notification as push_notification_t
92
+ from . import queued_job_t as queued_job_t
64
93
  from . import recipe_identifiers_t as recipe_identifiers_t
65
94
  from . import recipe_inputs_t as recipe_inputs_t
66
95
  from . import recipe_links_t as recipe_links_t
@@ -69,6 +98,7 @@ from . import recipe_output_metadata_t as recipe_output_metadata_t
69
98
  from . import recipe_tags_t as recipe_tags_t
70
99
  from . import recipe_workflow_steps_t as recipe_workflow_steps_t
71
100
  from . import recipes_t as recipes_t
101
+ from .api.integrations import register_sockets_token as register_sockets_token_t
72
102
  from .api.recipes import remove_recipe_from_project as remove_recipe_from_project_t
73
103
  from .api.recipe_links import remove_recipe_link as remove_recipe_link_t
74
104
  from .api.entity import resolve_entity_ids as resolve_entity_ids_t
@@ -77,6 +107,7 @@ from . import response_t as response_t
77
107
  from .api.triggers import run_trigger as run_trigger_t
78
108
  from . import secret_retrieval_t as secret_retrieval_t
79
109
  from .api.permissions import set_core_permissions as set_core_permissions_t
110
+ from .api.entity import set_entity_field_values as set_entity_field_values_t
80
111
  from .api.inputs import set_input_attribute_values as set_input_attribute_values_t
81
112
  from .api.inputs import set_input_category as set_input_category_t
82
113
  from .api.inputs import set_input_subcategories as set_input_subcategories_t
@@ -84,48 +115,71 @@ from .api.inputs import set_intermediate_type as set_intermediate_type_t
84
115
  from .api.recipes import set_recipe_inputs as set_recipe_inputs_t
85
116
  from .api.recipes import set_recipe_metadata as set_recipe_metadata_t
86
117
  from .api.recipes import set_recipe_output_annotations as set_recipe_output_annotations_t
118
+ from .api.recipes import set_recipe_output_file as set_recipe_output_file_t
87
119
  from .api.recipes import set_recipe_outputs as set_recipe_outputs_t
88
120
  from .api.recipes import set_recipe_tags as set_recipe_tags_t
121
+ from .api.recipes import set_recipe_total as set_recipe_total_t
89
122
  from .api.entity import set_values as set_values_t
123
+ from . import sockets_t as sockets_t
124
+ from . import structured_filters_t as structured_filters_t
90
125
  from .api.entity import transition_entity_phase as transition_entity_phase_t
91
126
  from .api.recipes import unarchive_recipes as unarchive_recipes_t
92
127
  from . import units_t as units_t
93
128
  from .api.entity import unlock_entity as unlock_entity_t
94
129
  from .api.recipes import unlock_recipes as unlock_recipes_t
95
130
  from .api.material_families import update_entity_material_families as update_entity_material_families_t
131
+ from . import uploader_t as uploader_t
132
+ from .api.condition_parameters import upsert_condition_match as upsert_condition_match_t
96
133
  from .api.field_options import upsert_field_options as upsert_field_options_t
97
134
  from . import users_t as users_t
135
+ from . import webhook_job_t as webhook_job_t
98
136
  from . import workflows_t as workflows_t
99
137
 
100
138
 
101
139
  __all__: list[str] = [
140
+ "add_notebook_content_t",
102
141
  "add_recipe_to_project_t",
142
+ "add_time_series_data_t",
103
143
  "archive_recipes_t",
104
144
  "associate_equipment_input_t",
105
145
  "associate_recipe_as_input_t",
106
146
  "associate_recipe_as_lot_t",
107
147
  "async_batch_t",
148
+ "async_jobs_t",
149
+ "auth_retrieval_t",
108
150
  "base_t",
109
151
  "calculations_t",
110
152
  "chemical_structure_t",
153
+ "clear_recipe_outputs_t",
111
154
  "client_config_t",
155
+ "complete_async_parse_t",
156
+ "complete_async_upload_t",
112
157
  "convert_chemical_formats_t",
113
158
  "create_entities_t",
114
159
  "create_entity_t",
115
160
  "create_inputs_t",
161
+ "create_mix_order_t",
162
+ "create_or_update_entity_t",
116
163
  "create_recipe_t",
117
164
  "create_recipe_link_t",
118
165
  "create_recipes_t",
119
166
  "curves_t",
167
+ "data_t",
120
168
  "disassociate_recipe_as_input_t",
169
+ "download_file_t",
121
170
  "edit_recipe_inputs_t",
122
171
  "entity_t",
123
172
  "execute_batch_t",
124
173
  "execute_batch_load_async_t",
125
174
  "experiment_groups_t",
175
+ "export_entities_t",
176
+ "exports_t",
177
+ "fetch_listing_t",
126
178
  "field_values_t",
127
179
  "fields_t",
128
180
  "generic_upload_t",
181
+ "get_column_calculation_values_t",
182
+ "get_current_user_info_t",
129
183
  "get_curve_t",
130
184
  "get_entities_data_t",
131
185
  "get_input_data_t",
@@ -134,6 +188,7 @@ __all__: list[str] = [
134
188
  "get_inputs_data_t",
135
189
  "get_output_data_t",
136
190
  "get_output_names_t",
191
+ "get_output_organization_t",
137
192
  "get_projects_t",
138
193
  "get_projects_data_t",
139
194
  "get_recipe_calculations_t",
@@ -142,21 +197,34 @@ __all__: list[str] = [
142
197
  "get_recipe_names_t",
143
198
  "get_recipe_output_metadata_t",
144
199
  "get_recipes_data_t",
200
+ "grant_entity_permissions_t",
145
201
  "id_source_t",
146
202
  "identifier_t",
147
203
  "input_attributes_t",
148
204
  "inputs_t",
205
+ "integration_server_t",
206
+ "integration_session_t",
207
+ "integrations_t",
149
208
  "invoke_uploader_t",
150
209
  "job_definition_t",
210
+ "list_aggregate_t",
151
211
  "list_entities_t",
152
212
  "list_id_source_t",
213
+ "listing_t",
153
214
  "lock_entity_t",
154
215
  "lock_recipes_t",
216
+ "lookup_entity_t",
155
217
  "match_id_source_t",
218
+ "notices_t",
219
+ "notifications_t",
156
220
  "outputs_t",
221
+ "overrides_t",
157
222
  "permissions_t",
158
223
  "phases_t",
159
224
  "post_base_t",
225
+ "publish_realtime_data_t",
226
+ "push_notification_t",
227
+ "queued_job_t",
160
228
  "recipe_identifiers_t",
161
229
  "recipe_inputs_t",
162
230
  "recipe_links_t",
@@ -165,6 +233,7 @@ __all__: list[str] = [
165
233
  "recipe_tags_t",
166
234
  "recipe_workflow_steps_t",
167
235
  "recipes_t",
236
+ "register_sockets_token_t",
168
237
  "remove_recipe_from_project_t",
169
238
  "remove_recipe_link_t",
170
239
  "resolve_entity_ids_t",
@@ -173,6 +242,7 @@ __all__: list[str] = [
173
242
  "run_trigger_t",
174
243
  "secret_retrieval_t",
175
244
  "set_core_permissions_t",
245
+ "set_entity_field_values_t",
176
246
  "set_input_attribute_values_t",
177
247
  "set_input_category_t",
178
248
  "set_input_subcategories_t",
@@ -180,16 +250,23 @@ __all__: list[str] = [
180
250
  "set_recipe_inputs_t",
181
251
  "set_recipe_metadata_t",
182
252
  "set_recipe_output_annotations_t",
253
+ "set_recipe_output_file_t",
183
254
  "set_recipe_outputs_t",
184
255
  "set_recipe_tags_t",
256
+ "set_recipe_total_t",
185
257
  "set_values_t",
258
+ "sockets_t",
259
+ "structured_filters_t",
186
260
  "transition_entity_phase_t",
187
261
  "unarchive_recipes_t",
188
262
  "units_t",
189
263
  "unlock_entity_t",
190
264
  "unlock_recipes_t",
191
265
  "update_entity_material_families_t",
266
+ "uploader_t",
267
+ "upsert_condition_match_t",
192
268
  "upsert_field_options_t",
193
269
  "users_t",
270
+ "webhook_job_t",
194
271
  "workflows_t",
195
272
  ]
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ 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 pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from ... import base_t
@@ -41,9 +40,10 @@ class RequestMethod(StrEnum):
41
40
 
42
41
  # DO NOT MODIFY -- This file is generated by type_spec
43
42
  @serial_class(
43
+ named_type_path="sdk.api.batch.execute_batch.BatchRequest",
44
44
  unconverted_values={"data"},
45
45
  )
46
- @dataclasses.dataclass(kw_only=True)
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
47
  class BatchRequest:
48
48
  path: str
49
49
  method: RequestMethod
@@ -51,16 +51,20 @@ class BatchRequest:
51
51
 
52
52
 
53
53
  # DO NOT MODIFY -- This file is generated by type_spec
54
- @dataclasses.dataclass(kw_only=True)
54
+ @serial_class(
55
+ named_type_path="sdk.api.batch.execute_batch.Arguments",
56
+ )
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
55
58
  class Arguments:
56
59
  requests: list[BatchRequest]
57
60
 
58
61
 
59
62
  # DO NOT MODIFY -- This file is generated by type_spec
60
63
  @serial_class(
64
+ named_type_path="sdk.api.batch.execute_batch.BatchResponse",
61
65
  unconverted_values={"response"},
62
66
  )
63
- @dataclasses.dataclass(kw_only=True)
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
64
68
  class BatchResponse:
65
69
  path: str
66
70
  method: RequestMethod
@@ -69,7 +73,10 @@ class BatchResponse:
69
73
 
70
74
 
71
75
  # DO NOT MODIFY -- This file is generated by type_spec
72
- @dataclasses.dataclass(kw_only=True)
76
+ @serial_class(
77
+ named_type_path="sdk.api.batch.execute_batch.Data",
78
+ )
79
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
73
80
  class Data:
74
81
  responses: list[BatchResponse]
75
82
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import async_batch_t
12
12
  from ... import base_t
13
13
 
@@ -23,13 +23,19 @@ ENDPOINT_PATH = "api/external/batch/execute_batch_load_async"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclasses.dataclass(kw_only=True)
26
+ @serial_class(
27
+ named_type_path="sdk.api.batch.execute_batch_load_async.Arguments",
28
+ )
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
30
  class Arguments:
28
31
  requests: list[async_batch_t.AsyncBatchRequest]
29
32
 
30
33
 
31
34
  # DO NOT MODIFY -- This file is generated by type_spec
32
- @dataclasses.dataclass(kw_only=True)
35
+ @serial_class(
36
+ named_type_path="sdk.api.batch.execute_batch_load_async.Data",
37
+ )
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
39
  class Data:
34
40
  job_id: base_t.ObjectId
35
41
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -9,6 +8,7 @@ import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
11
+ from pkgs.serialization import serial_alias_annotation
12
12
  from ... import base_t
13
13
 
14
14
  __all__: list[str] = [
@@ -25,26 +25,38 @@ ENDPOINT_PATH = "api/external/chemical/convert_chemical_formats"
25
25
 
26
26
 
27
27
  # DO NOT MODIFY -- This file is generated by type_spec
28
- @dataclasses.dataclass(kw_only=True)
28
+ @serial_class(
29
+ named_type_path="sdk.api.chemical.convert_chemical_formats.ChemicalStructureFile",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
32
  class ChemicalStructureFile:
30
33
  struct_file: str
31
34
 
32
35
 
33
36
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclasses.dataclass(kw_only=True)
37
+ @serial_class(
38
+ named_type_path="sdk.api.chemical.convert_chemical_formats.Arguments",
39
+ )
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
41
  class Arguments:
36
42
  source_chemical_structures: list[ChemicalStructureFile]
37
43
 
38
44
 
39
45
  # DO NOT MODIFY -- This file is generated by type_spec
40
- UncountableChemicalStructure = dict[str, base_t.JsonValue]
46
+ UncountableChemicalStructure = typing.Annotated[
47
+ dict[str, base_t.JsonValue],
48
+ serial_alias_annotation(
49
+ named_type_path="sdk.api.chemical.convert_chemical_formats.UncountableChemicalStructure",
50
+ ),
51
+ ]
41
52
 
42
53
 
43
54
  # DO NOT MODIFY -- This file is generated by type_spec
44
55
  @serial_class(
56
+ named_type_path="sdk.api.chemical.convert_chemical_formats.Data",
45
57
  unconverted_values={"chemical_structures"},
46
58
  )
47
- @dataclasses.dataclass(kw_only=True)
59
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
48
60
  class Data:
49
61
  chemical_structures: list[UncountableChemicalStructure]
50
62
  # 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,72 @@
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 async_batch_t
13
+ from ... import base_t
14
+ from ... import identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "Arguments",
18
+ "ConditionParameter",
19
+ "Data",
20
+ "ENDPOINT_METHOD",
21
+ "ENDPOINT_PATH",
22
+ "MatchType",
23
+ ]
24
+
25
+ ENDPOINT_METHOD = "POST"
26
+ ENDPOINT_PATH = "api/external/condition_parameters/upsert_condition_match"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.api.condition_parameters.upsert_condition_match.ConditionParameter",
32
+ to_string_values={"max_value", "min_value"},
33
+ )
34
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
+ class ConditionParameter:
36
+ condition_parameter_key: identifier_t.IdentifierKey
37
+ allow_null: bool
38
+ min_value: Decimal | None = None
39
+ max_value: Decimal | None = None
40
+ categorical_values: list[str | None] | None = None
41
+ match_type: MatchType | None = None
42
+
43
+
44
+ # DO NOT MODIFY -- This file is generated by type_spec
45
+ class MatchType(StrEnum):
46
+ ALL = "all"
47
+ EQ = "eq"
48
+ EQCATEGORICAL = "eqCategorical"
49
+ RANGE = "range"
50
+
51
+
52
+ # DO NOT MODIFY -- This file is generated by type_spec
53
+ @serial_class(
54
+ named_type_path="sdk.api.condition_parameters.upsert_condition_match.Arguments",
55
+ )
56
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
+ class Arguments:
58
+ explicit_name: bool = False
59
+ name: str | None = None
60
+ condition_parameters: list[ConditionParameter] | None = None
61
+ output_conditions: list[identifier_t.IdentifierKey] | None = None
62
+ existing_condition_match: identifier_t.IdentifierKey | None = None
63
+
64
+
65
+ # DO NOT MODIFY -- This file is generated by type_spec
66
+ @serial_class(
67
+ named_type_path="sdk.api.condition_parameters.upsert_condition_match.Data",
68
+ )
69
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
70
+ class Data(async_batch_t.AsyncBatchActionReturn):
71
+ pass
72
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -8,9 +7,11 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
12
  from ... import entity_t
13
13
  from ... import field_values_t
14
+ from ... import identifier_t
14
15
 
15
16
  __all__: list[str] = [
16
17
  "Arguments",
@@ -25,21 +26,32 @@ ENDPOINT_PATH = "api/external/entity/external_create_entities"
25
26
 
26
27
 
27
28
  # DO NOT MODIFY -- This file is generated by type_spec
28
- @dataclasses.dataclass(kw_only=True)
29
+ @serial_class(
30
+ named_type_path="sdk.api.entity.create_entities.EntityToCreate",
31
+ )
32
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
33
  class EntityToCreate:
30
- field_values: typing.Optional[typing.Optional[list[field_values_t.FieldRefNameValue]]] = None
34
+ field_values: list[field_values_t.FieldRefNameValue] | None = None
35
+ parent_entity: entity_t.Entity | None = None
31
36
 
32
37
 
33
38
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclasses.dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.entity.create_entities.Arguments",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
43
  class Arguments:
36
- definition_id: base_t.ObjectId
37
- entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL]]
44
+ entity_type: entity_t.LimitedEntityType
38
45
  entities_to_create: list[EntityToCreate]
46
+ definition_id: base_t.ObjectId | None = None
47
+ definition_key: identifier_t.IdentifierKey | None = None
39
48
 
40
49
 
41
50
  # DO NOT MODIFY -- This file is generated by type_spec
42
- @dataclasses.dataclass(kw_only=True)
51
+ @serial_class(
52
+ named_type_path="sdk.api.entity.create_entities.Data",
53
+ )
54
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
55
  class Data:
44
56
  entities: list[entity_t.Entity]
45
57
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -12,6 +11,7 @@ from pkgs.serialization import serial_class
12
11
  from ... import base_t
13
12
  from ... import entity_t
14
13
  from ... import field_values_t
14
+ from ... import identifier_t
15
15
 
16
16
  __all__: list[str] = [
17
17
  "Arguments",
@@ -27,25 +27,34 @@ ENDPOINT_PATH = "api/external/entity/external_create_entity"
27
27
 
28
28
  # DO NOT MODIFY -- This file is generated by type_spec
29
29
  @serial_class(
30
+ named_type_path="sdk.api.entity.create_entity.EntityFieldInitialValue",
30
31
  unconverted_values={"value"},
31
32
  )
32
- @dataclasses.dataclass(kw_only=True)
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
34
  class EntityFieldInitialValue:
34
35
  field_ref_name: str
35
36
  value: base_t.JsonValue
36
- row_index: typing.Optional[typing.Optional[int]] = None
37
+ row_index: int | None = None
37
38
 
38
39
 
39
40
  # DO NOT MODIFY -- This file is generated by type_spec
40
- @dataclasses.dataclass(kw_only=True)
41
+ @serial_class(
42
+ named_type_path="sdk.api.entity.create_entity.Arguments",
43
+ )
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
45
  class Arguments:
42
- definition_id: base_t.ObjectId
43
- entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL]]
44
- field_values: typing.Optional[typing.Optional[list[field_values_t.FieldRefNameValue]]] = None
46
+ entity_type: entity_t.LimitedEntityType
47
+ definition_id: base_t.ObjectId | None = None
48
+ definition_key: identifier_t.IdentifierKey | None = None
49
+ field_values: list[field_values_t.FieldRefNameValue] | None = None
50
+ parent_entity: entity_t.Entity | None = None
45
51
 
46
52
 
47
53
  # DO NOT MODIFY -- This file is generated by type_spec
48
- @dataclasses.dataclass(kw_only=True)
54
+ @serial_class(
55
+ named_type_path="sdk.api.entity.create_entity.Data",
56
+ )
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
49
58
  class Data:
50
59
  entity: entity_t.Entity
51
60
  # 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
+ # 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 async_batch_t
12
+ from ... import base_t
13
+ from ... import entity_t
14
+ from ... import field_values_t
15
+ from ... import identifier_t
16
+
17
+ __all__: list[str] = [
18
+ "Arguments",
19
+ "Data",
20
+ "ENDPOINT_METHOD",
21
+ "ENDPOINT_PATH",
22
+ ]
23
+
24
+ ENDPOINT_METHOD = "POST"
25
+ ENDPOINT_PATH = "api/external/entity/create_or_update_entity"
26
+
27
+
28
+ # DO NOT MODIFY -- This file is generated by type_spec
29
+ @serial_class(
30
+ named_type_path="sdk.api.entity.create_or_update_entity.Arguments",
31
+ )
32
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
+ class Arguments:
34
+ entity_type: entity_t.EntityType
35
+ definition_key: identifier_t.IdentifierKey
36
+ field_values: list[field_values_t.FieldArgumentValue]
37
+ entity_key: identifier_t.IdentifierKey | None = None
38
+ on_create_init_field_values: list[field_values_t.FieldArgumentValue] | None = None
39
+
40
+
41
+ # DO NOT MODIFY -- This file is generated by type_spec
42
+ @serial_class(
43
+ named_type_path="sdk.api.entity.create_or_update_entity.Data",
44
+ )
45
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
+ class Data(async_batch_t.AsyncBatchActionReturn):
47
+ pass
48
+ # DO NOT MODIFY -- This file is generated by type_spec