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,8 +1,8 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
5
4
  # DO NOT MODIFY -- This file is generated by type_spec
6
5
  # Kept only for SDK backwards compatibility
7
6
  from .client_config_t import ClientConfigOptions as ClientConfigOptions
7
+ from .client_config_t import RequestOptions as RequestOptions
8
8
  # 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,15 +7,30 @@ 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
+ from . import base_t
11
12
 
12
13
  __all__: list[str] = [
13
14
  "ClientConfigOptions",
15
+ "RequestOptions",
14
16
  ]
15
17
 
16
18
 
17
19
  # DO NOT MODIFY -- This file is generated by type_spec
18
- @dataclasses.dataclass(kw_only=True)
20
+ @serial_class(
21
+ named_type_path="sdk.client_config.ClientConfigOptions",
22
+ )
23
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
19
24
  class ClientConfigOptions:
20
25
  allow_insecure_tls: bool = False
21
- extra_headers: typing.Optional[typing.Optional[dict[str, str]]] = None
26
+ extra_headers: dict[str, str] | None = None
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.client_config.RequestOptions",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class RequestOptions:
35
+ timeout_secs: int | None = None
22
36
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -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
@@ -26,10 +25,13 @@ class CurveAxisType(StrEnum):
26
25
 
27
26
 
28
27
  # DO NOT MODIFY -- This file is generated by type_spec
29
- @dataclasses.dataclass(kw_only=True)
28
+ @serial_class(
29
+ named_type_path="sdk.curves.Curve",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
30
32
  class Curve:
31
33
  id: base_t.ObjectId
32
- x_type: typing.Union[typing.Literal[CurveAxisType.NUMERIC], typing.Literal[CurveAxisType.TIMESTAMP]]
34
+ x_type: typing.Literal[CurveAxisType.NUMERIC] | typing.Literal[CurveAxisType.TIMESTAMP]
33
35
  x_values: list[CurveValue]
34
36
  y_type: typing.Union[typing.Literal[CurveAxisType.NUMERIC]]
35
37
  y_values: list[CurveValue]
@@ -37,11 +39,12 @@ class Curve:
37
39
 
38
40
  # DO NOT MODIFY -- This file is generated by type_spec
39
41
  @serial_class(
42
+ named_type_path="sdk.curves.CurveValue",
40
43
  to_string_values={"quantity"},
41
44
  )
42
- @dataclasses.dataclass(kw_only=True)
45
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
46
  class CurveValue:
44
47
  index: int
45
- quantity: typing.Optional[Decimal] = None
46
- quantity_timestamp: typing.Optional[datetime.datetime] = None
48
+ quantity: Decimal | None = None
49
+ quantity_timestamp: datetime.datetime | None = None
47
50
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,12 @@
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 .data_t import ColorFormat as ColorFormat
7
+ from .data_t import RgbColor as RgbColor
8
+ from .data_t import CielabColor as CielabColor
9
+ from .data_t import XyzColor as XyzColor
10
+ from .data_t import LChColor as LChColor
11
+ from .data_t import SupportedColorFormatColor as SupportedColorFormatColor
12
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,103 @@
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
+
15
+ __all__: list[str] = [
16
+ "CielabColor",
17
+ "ColorFormat",
18
+ "LChColor",
19
+ "RgbColor",
20
+ "SupportedColorFormatColor",
21
+ "XyzColor",
22
+ ]
23
+
24
+
25
+ # DO NOT MODIFY -- This file is generated by type_spec
26
+ class ColorFormat(StrEnum):
27
+ RGB = "rgb"
28
+ LAB = "lab"
29
+ XYZ = "xyz"
30
+ LCH = "lch"
31
+
32
+
33
+ # DO NOT MODIFY -- This file is generated by type_spec
34
+ @serial_class(
35
+ named_type_path="sdk.data.RgbColor",
36
+ unconverted_keys={"B", "G", "R", "type"},
37
+ parse_require={"type"},
38
+ )
39
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
40
+ class RgbColor:
41
+ type: typing.Literal[ColorFormat.RGB] = ColorFormat.RGB
42
+ R: Decimal
43
+ G: Decimal
44
+ B: Decimal
45
+
46
+
47
+ # DO NOT MODIFY -- This file is generated by type_spec
48
+ @serial_class(
49
+ named_type_path="sdk.data.CielabColor",
50
+ unconverted_keys={"L", "a", "b", "type"},
51
+ parse_require={"type"},
52
+ )
53
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
54
+ class CielabColor:
55
+ type: typing.Literal[ColorFormat.LAB] = ColorFormat.LAB
56
+ L: Decimal
57
+ a: Decimal
58
+ b: Decimal
59
+
60
+
61
+ # DO NOT MODIFY -- This file is generated by type_spec
62
+ @serial_class(
63
+ named_type_path="sdk.data.XyzColor",
64
+ unconverted_keys={"X", "Y", "Z", "type"},
65
+ parse_require={"type"},
66
+ )
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
68
+ class XyzColor:
69
+ type: typing.Literal[ColorFormat.XYZ] = ColorFormat.XYZ
70
+ X: Decimal
71
+ Y: Decimal
72
+ Z: Decimal
73
+
74
+
75
+ # DO NOT MODIFY -- This file is generated by type_spec
76
+ @serial_class(
77
+ named_type_path="sdk.data.LChColor",
78
+ unconverted_keys={"C", "L", "h", "type"},
79
+ parse_require={"type"},
80
+ )
81
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
82
+ class LChColor:
83
+ type: typing.Literal[ColorFormat.LCH] = ColorFormat.LCH
84
+ L: Decimal
85
+ C: Decimal
86
+ h: Decimal
87
+
88
+
89
+ # DO NOT MODIFY -- This file is generated by type_spec
90
+ SupportedColorFormatColor = typing.Annotated[
91
+ RgbColor | CielabColor | XyzColor | LChColor,
92
+ serial_union_annotation(
93
+ named_type_path="sdk.data.SupportedColorFormatColor",
94
+ discriminator="type",
95
+ discriminator_map={
96
+ "rgb": RgbColor,
97
+ "lab": CielabColor,
98
+ "xyz": XyzColor,
99
+ "lch": LChColor,
100
+ },
101
+ ),
102
+ ]
103
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,9 +1,12 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
5
4
  # DO NOT MODIFY -- This file is generated by type_spec
6
5
  # Kept only for SDK backwards compatibility
7
6
  from .entity_t import EntityType as EntityType
7
+ from .entity_t import LimitedEntityType as LimitedEntityType
8
+ from .entity_t import EntityPermissionType as EntityPermissionType
9
+ from .entity_t import GrantableEntityPermissionType as GrantableEntityPermissionType
8
10
  from .entity_t import Entity as Entity
11
+ from .entity_t import EntityIdentifier as EntityIdentifier
9
12
  # 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
@@ -7,14 +6,21 @@ 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
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_alias_annotation
12
13
  from pkgs.serialization import serial_string_enum
13
14
  from . import base_t
15
+ from . import identifier_t
14
16
 
15
17
  __all__: list[str] = [
16
18
  "Entity",
19
+ "EntityIdentifier",
20
+ "EntityPermissionType",
17
21
  "EntityType",
22
+ "GrantableEntityPermissionType",
23
+ "LimitedEntityType",
18
24
  ]
19
25
 
20
26
 
@@ -25,6 +31,8 @@ __all__: list[str] = [
25
31
  "analytical_method_category": "Analytical Method Category",
26
32
  "annotation_type": "Annotation Type",
27
33
  "approval": "Approval",
34
+ "async_job": "Async Job",
35
+ "barcode": "Barcode",
28
36
  "calculation": "Calculation",
29
37
  "calendar": "Calendar",
30
38
  "calendar_event": "Calendar Event",
@@ -32,19 +40,26 @@ __all__: list[str] = [
32
40
  "characterization": "Characterization",
33
41
  "comment": "Comment",
34
42
  "comment_thread": "Comment Thread",
43
+ "condition_match": "Condition Match",
35
44
  "condition_parameter": "Condition Parameter",
36
45
  "condition_parameter_mat_family": "Condition Parameter Material Family",
46
+ "condition_parameter_matches": "Condition Parameter Matches",
47
+ "condition_parameter_rule": "Condition Parameter Rule",
37
48
  "condition_parameter_value": "Condition Parameter Value",
38
49
  "constraint": "Constraint",
39
50
  "constraint_set": "Constraint Set",
51
+ "control_type": "Control Type",
40
52
  "curve_settings": "Curve Settings",
41
53
  "custom_entity": "Custom Entity",
54
+ "default_permissions_new_project": "Default Permissions New Project",
42
55
  "doe_run": "Suggest Experiments",
43
56
  "email_record_external": "External Emails",
44
57
  "email_relay_server": "Email Relay Server",
45
58
  "enter_recipe_view_preference": "Enter Recipe View Preference",
59
+ "enter_measurement_view_preference": "Enter Measurement View Preference",
46
60
  "entities_viewed": "Entities Viewed",
47
61
  "entity_annotation": "Annotation",
62
+ "entity_definition_field_group": "Entity Definition Field Group",
48
63
  "entity_field": "Field",
49
64
  "entity_field_audit_log": "Entity Field Audit Log",
50
65
  "entity_link": "Entity Link",
@@ -55,6 +70,7 @@ __all__: list[str] = [
55
70
  "equipment_maintenance": "Equipment Maintenance",
56
71
  "equipment_type": "Equipment Type",
57
72
  "experiment_group": "Experiment Group",
73
+ "experiment_group_member": "Experiment Group Member",
58
74
  "experiment_group_type": "Experiment Group Type",
59
75
  "favorite_link": "Favorite Link",
60
76
  "field_option_set": "Field Option Set",
@@ -65,22 +81,28 @@ __all__: list[str] = [
65
81
  "ingredient": "Ingredient",
66
82
  "ingredient_attribute": "Ingredient Attribute",
67
83
  "ingredient_attribute_category": "Ingredient Attribute Category",
84
+ "ingredient_attribute_value": "Ingredient Attribute Value",
68
85
  "ingredient_category": "Ingredient Category (Project)",
69
86
  "ingredient_category_all": "Ingredient Category",
70
87
  "ingredient_category_all_material_family": "Ingredient Category Material Family",
71
88
  "ingredient_lot": "Ingredient Lot",
89
+ "ingredient_mat_family": "Ingredient Material Family",
72
90
  "ingredient_role": "Ingredient Role",
73
91
  "ingredient_tag": "Ingredient Subcategory",
92
+ "ingredient_tag_map": "Ingredient Subcategory Mapping",
74
93
  "input_group": "Input Group",
75
94
  "inv_local_locations": "Inventory Location",
76
- "inventory_amount": "Inventory Amount",
95
+ "inventory_amount": "Inventory Item",
77
96
  "inventory_limit": "Inventory Limit",
78
97
  "inventory_history": "Inventory History",
79
98
  "lab_location": "Lab Location",
80
99
  "lab_request": "Lab Request",
81
100
  "license": "License",
82
- "maintenance_schedule": "Maintenance Schedule",
101
+ "maintenance_schedule": "Equipment Action Type",
83
102
  "material_family": "Material Family",
103
+ "measurement_group": "Measurement Group",
104
+ "measurement_group_input": "Measurement Group Input",
105
+ "measurement_group_recipe": "Measurement Group Recipe",
84
106
  "ml_job": "Batch Processing Job",
85
107
  "naming_scheme": "Naming Scheme",
86
108
  "naming_counter": "Naming Counter",
@@ -90,51 +112,69 @@ __all__: list[str] = [
90
112
  "output_calculation_entity_mapping": "Output Calculation Entity Mapping",
91
113
  "output_category_all": "Output Category",
92
114
  "output_condition": "Output Condition",
115
+ "output_condition_condition_parameter": "Output Condition Condition Parameter",
93
116
  "output_default_condition": "Output Default Condition",
94
117
  "output_condition_parameter": "Output Condition Parameter",
95
118
  "output_condition_parameter_analytical_method_category": "Output Condition Parameter Analytical Method Category",
96
119
  "output_condition_parameter_analytical_method": "Output Condition Parameter Analytical Method",
97
120
  "output_group": "Output Group",
121
+ "output_group_member": "Output Group Member",
122
+ "output_preferences": "Output Preferences",
98
123
  "permission": "Permission",
99
124
  "permissions_recipe_link_inheritance": "Permissions Recipe Link Inheritance",
100
125
  "phase_workflow": "Phase Workflow",
101
126
  "platform_config": "Platform Config",
127
+ "portal_form": "Portal Form",
102
128
  "predictive_model": "Predictive Model",
103
129
  "product": "Product",
130
+ "product_material_family": "Product Material Family",
104
131
  "project": "Project",
105
132
  "project_workbook_comment": "Notebook Cell Comment",
106
133
  "recipe": "Experiment",
107
134
  "recipe_audit_log": "Experiment Audit Log",
108
135
  "recipe_calculation": "Recipe Calculation",
109
136
  "recipe_check": "Experiment Check",
137
+ "recipe_component_witness": "Recipe Component Witness",
110
138
  "recipe_export": "Recipe Export",
139
+ "recipe_goal": "Experiment Goal",
111
140
  "recipe_ingredient": "Recipe Ingredient",
112
141
  "recipe_ingredient_actual": "Recipe Ingredient Actual",
113
142
  "recipe_ingredients_compounded": "Recipe Ingredients Compounded",
114
- "recipe_ingredients_compounded_calculation": "Recipe Ingredients Compounded Caclulation",
143
+ "recipe_ingredients_compounded_calculation": "Recipe Ingredients Compounded Calculation",
144
+ "recipe_link": "Experiment Link",
115
145
  "recipe_output": "Recipe Output",
146
+ "recipe_output_annotation": "Recipe Output Annotation",
116
147
  "recipe_output_metadata": "Recipe Output Metadata",
117
148
  "recipe_permission_view": "Recipe Permission View",
118
149
  "recipe_project": "Recipe Project",
119
150
  "recipe_step": "Recipe Step",
151
+ "recipe_workflow_step": "Recipe Workflow Step",
120
152
  "recipe_tag": "Recipe Tag",
121
153
  "recipe_metadata": "Experiment Metadata",
154
+ "recipe_metadata_mapping": "Experiment Metadata Mapping",
122
155
  "metadata_value": "Metadata Value",
123
156
  "review": "Review",
124
157
  "review_entity_user_status": "Review Entity User Status",
125
158
  "review_user": "Review User",
159
+ "rlw_audit_log": "Rlw Audit Log",
126
160
  "rlw_phase": "Phase",
127
161
  "rlw_trigger": "Trigger",
128
162
  "rlw_trigger_set": "Trigger Set",
163
+ "runsheet_configuration": "Runsheet Configuration",
129
164
  "safety_data_sheet": "Safety Data Sheet",
130
165
  "scheduled_notification": "Scheduled Notification",
166
+ "scratch_pad": "Scratch Pad",
131
167
  "specs": "Spec",
132
- "split_template": "Split Template",
168
+ "save": "Save",
169
+ "split_template": "Test Method",
133
170
  "structured_loading_user_config": "List Config",
171
+ "subscription": "Subscription",
134
172
  "table_builder_config": "Table Builder Config",
135
173
  "task": "Task",
136
174
  "task_board": "Task Board",
137
175
  "template": "Template",
176
+ "test_entity": "Test Entity",
177
+ "time_series_segment": "Time Series Segment",
138
178
  "timesheet_entry": "Timesheet Entry",
139
179
  "training_run": "Analyze Experiment",
140
180
  "training_run_template": "Scheduled Training Run",
@@ -144,6 +184,7 @@ __all__: list[str] = [
144
184
  "units": "Units",
145
185
  "user_favorite": "User Favorite",
146
186
  "user": "User",
187
+ "user_analytics_event": "User Analytics Event",
147
188
  "user_certification": "User Certification",
148
189
  "user_group": "User Group",
149
190
  "user_list_set": "User List Set",
@@ -168,6 +209,7 @@ __all__: list[str] = [
168
209
  "public_data_sourced_condition_parameter": "ChemQuery Condition Parameter",
169
210
  "public_data_sourced_company": "ChemQuery Company",
170
211
  "uploader": "Uploader",
212
+ "calculation_material_family": "Calculation Material Family",
171
213
  },
172
214
  )
173
215
  class EntityType(StrEnum):
@@ -175,6 +217,8 @@ class EntityType(StrEnum):
175
217
  ANALYTICAL_METHOD_CATEGORY = "analytical_method_category"
176
218
  ANNOTATION_TYPE = "annotation_type"
177
219
  APPROVAL = "approval"
220
+ ASYNC_JOB = "async_job"
221
+ BARCODE = "barcode"
178
222
  CALCULATION = "calculation"
179
223
  CALENDAR = "calendar"
180
224
  CALENDAR_EVENT = "calendar_event"
@@ -182,19 +226,26 @@ class EntityType(StrEnum):
182
226
  CHARACTERIZATION = "characterization"
183
227
  COMMENT = "comment"
184
228
  COMMENT_THREAD = "comment_thread"
229
+ CONDITION_MATCH = "condition_match"
185
230
  CONDITION_PARAMETER = "condition_parameter"
186
231
  CONDITION_PARAMETER_MAT_FAMILY = "condition_parameter_mat_family"
232
+ CONDITION_PARAMETER_MATCHES = "condition_parameter_matches"
233
+ CONDITION_PARAMETER_RULE = "condition_parameter_rule"
187
234
  CONDITION_PARAMETER_VALUE = "condition_parameter_value"
188
235
  CONSTRAINT = "constraint"
189
236
  CONSTRAINT_SET = "constraint_set"
237
+ CONTROL_TYPE = "control_type"
190
238
  CURVE_SETTINGS = "curve_settings"
191
239
  CUSTOM_ENTITY = "custom_entity"
240
+ DEFAULT_PERMISSIONS_NEW_PROJECT = "default_permissions_new_project"
192
241
  DOE_RUN = "doe_run"
193
242
  EMAIL_RECORD_EXTERNAL = "email_record_external"
194
243
  EMAIL_RELAY_SERVER = "email_relay_server"
195
244
  ENTER_RECIPE_VIEW_PREFERENCE = "enter_recipe_view_preference"
245
+ ENTER_MEASUREMENT_VIEW_PREFERENCE = "enter_measurement_view_preference"
196
246
  ENTITIES_VIEWED = "entities_viewed"
197
247
  ENTITY_ANNOTATION = "entity_annotation"
248
+ ENTITY_DEFINITION_FIELD_GROUP = "entity_definition_field_group"
198
249
  ENTITY_FIELD = "entity_field"
199
250
  ENTITY_FIELD_AUDIT_LOG = "entity_field_audit_log"
200
251
  ENTITY_LINK = "entity_link"
@@ -205,6 +256,7 @@ class EntityType(StrEnum):
205
256
  EQUIPMENT_MAINTENANCE = "equipment_maintenance"
206
257
  EQUIPMENT_TYPE = "equipment_type"
207
258
  EXPERIMENT_GROUP = "experiment_group"
259
+ EXPERIMENT_GROUP_MEMBER = "experiment_group_member"
208
260
  EXPERIMENT_GROUP_TYPE = "experiment_group_type"
209
261
  FAVORITE_LINK = "favorite_link"
210
262
  FIELD_OPTION_SET = "field_option_set"
@@ -215,12 +267,15 @@ class EntityType(StrEnum):
215
267
  INGREDIENT = "ingredient"
216
268
  INGREDIENT_ATTRIBUTE = "ingredient_attribute"
217
269
  INGREDIENT_ATTRIBUTE_CATEGORY = "ingredient_attribute_category"
270
+ INGREDIENT_ATTRIBUTE_VALUE = "ingredient_attribute_value"
218
271
  INGREDIENT_CATEGORY = "ingredient_category"
219
272
  INGREDIENT_CATEGORY_ALL = "ingredient_category_all"
220
273
  INGREDIENT_CATEGORY_ALL_MATERIAL_FAMILY = "ingredient_category_all_material_family"
221
274
  INGREDIENT_LOT = "ingredient_lot"
275
+ INGREDIENT_MAT_FAMILY = "ingredient_mat_family"
222
276
  INGREDIENT_ROLE = "ingredient_role"
223
277
  INGREDIENT_TAG = "ingredient_tag"
278
+ INGREDIENT_TAG_MAP = "ingredient_tag_map"
224
279
  INPUT_GROUP = "input_group"
225
280
  INV_LOCAL_LOCATIONS = "inv_local_locations"
226
281
  INVENTORY_AMOUNT = "inventory_amount"
@@ -231,6 +286,9 @@ class EntityType(StrEnum):
231
286
  LICENSE = "license"
232
287
  MAINTENANCE_SCHEDULE = "maintenance_schedule"
233
288
  MATERIAL_FAMILY = "material_family"
289
+ MEASUREMENT_GROUP = "measurement_group"
290
+ MEASUREMENT_GROUP_INPUT = "measurement_group_input"
291
+ MEASUREMENT_GROUP_RECIPE = "measurement_group_recipe"
234
292
  ML_JOB = "ml_job"
235
293
  NAMING_SCHEME = "naming_scheme"
236
294
  NAMING_COUNTER = "naming_counter"
@@ -240,51 +298,69 @@ class EntityType(StrEnum):
240
298
  OUTPUT_CALCULATION_ENTITY_MAPPING = "output_calculation_entity_mapping"
241
299
  OUTPUT_CATEGORY_ALL = "output_category_all"
242
300
  OUTPUT_CONDITION = "output_condition"
301
+ OUTPUT_CONDITION_CONDITION_PARAMETER = "output_condition_condition_parameter"
243
302
  OUTPUT_DEFAULT_CONDITION = "output_default_condition"
244
303
  OUTPUT_CONDITION_PARAMETER = "output_condition_parameter"
245
304
  OUTPUT_CONDITION_PARAMETER_ANALYTICAL_METHOD_CATEGORY = "output_condition_parameter_analytical_method_category"
246
305
  OUTPUT_CONDITION_PARAMETER_ANALYTICAL_METHOD = "output_condition_parameter_analytical_method"
247
306
  OUTPUT_GROUP = "output_group"
307
+ OUTPUT_GROUP_MEMBER = "output_group_member"
308
+ OUTPUT_PREFERENCES = "output_preferences"
248
309
  PERMISSION = "permission"
249
310
  PERMISSIONS_RECIPE_LINK_INHERITANCE = "permissions_recipe_link_inheritance"
250
311
  PHASE_WORKFLOW = "phase_workflow"
251
312
  PLATFORM_CONFIG = "platform_config"
313
+ PORTAL_FORM = "portal_form"
252
314
  PREDICTIVE_MODEL = "predictive_model"
253
315
  PRODUCT = "product"
316
+ PRODUCT_MATERIAL_FAMILY = "product_material_family"
254
317
  PROJECT = "project"
255
318
  PROJECT_WORKBOOK_COMMENT = "project_workbook_comment"
256
319
  RECIPE = "recipe"
257
320
  RECIPE_AUDIT_LOG = "recipe_audit_log"
258
321
  RECIPE_CALCULATION = "recipe_calculation"
259
322
  RECIPE_CHECK = "recipe_check"
323
+ RECIPE_COMPONENT_WITNESS = "recipe_component_witness"
260
324
  RECIPE_EXPORT = "recipe_export"
325
+ RECIPE_GOAL = "recipe_goal"
261
326
  RECIPE_INGREDIENT = "recipe_ingredient"
262
327
  RECIPE_INGREDIENT_ACTUAL = "recipe_ingredient_actual"
263
328
  RECIPE_INGREDIENTS_COMPOUNDED = "recipe_ingredients_compounded"
264
329
  RECIPE_INGREDIENTS_COMPOUNDED_CALCULATION = "recipe_ingredients_compounded_calculation"
330
+ RECIPE_LINK = "recipe_link"
265
331
  RECIPE_OUTPUT = "recipe_output"
332
+ RECIPE_OUTPUT_ANNOTATION = "recipe_output_annotation"
266
333
  RECIPE_OUTPUT_METADATA = "recipe_output_metadata"
267
334
  RECIPE_PERMISSION_VIEW = "recipe_permission_view"
268
335
  RECIPE_PROJECT = "recipe_project"
269
336
  RECIPE_STEP = "recipe_step"
337
+ RECIPE_WORKFLOW_STEP = "recipe_workflow_step"
270
338
  RECIPE_TAG = "recipe_tag"
271
339
  RECIPE_METADATA = "recipe_metadata"
340
+ RECIPE_METADATA_MAPPING = "recipe_metadata_mapping"
272
341
  METADATA_VALUE = "metadata_value"
273
342
  REVIEW = "review"
274
343
  REVIEW_ENTITY_USER_STATUS = "review_entity_user_status"
275
344
  REVIEW_USER = "review_user"
345
+ RLW_AUDIT_LOG = "rlw_audit_log"
276
346
  RLW_PHASE = "rlw_phase"
277
347
  RLW_TRIGGER = "rlw_trigger"
278
348
  RLW_TRIGGER_SET = "rlw_trigger_set"
349
+ RUNSHEET_CONFIGURATION = "runsheet_configuration"
279
350
  SAFETY_DATA_SHEET = "safety_data_sheet"
280
351
  SCHEDULED_NOTIFICATION = "scheduled_notification"
352
+ SCRATCH_PAD = "scratch_pad"
281
353
  SPECS = "specs"
354
+ SAVE = "save"
282
355
  SPLIT_TEMPLATE = "split_template"
283
356
  STRUCTURED_LOADING_USER_CONFIG = "structured_loading_user_config"
357
+ SUBSCRIPTION = "subscription"
284
358
  TABLE_BUILDER_CONFIG = "table_builder_config"
285
359
  TASK = "task"
286
360
  TASK_BOARD = "task_board"
287
361
  TEMPLATE = "template"
362
+ TEST_ENTITY = "test_entity"
363
+ TIME_SERIES_SEGMENT = "time_series_segment"
288
364
  TIMESHEET_ENTRY = "timesheet_entry"
289
365
  TRAINING_RUN = "training_run"
290
366
  TRAINING_RUN_TEMPLATE = "training_run_template"
@@ -294,6 +370,7 @@ class EntityType(StrEnum):
294
370
  UNITS = "units"
295
371
  USER_FAVORITE = "user_favorite"
296
372
  USER = "user"
373
+ USER_ANALYTICS_EVENT = "user_analytics_event"
297
374
  USER_CERTIFICATION = "user_certification"
298
375
  USER_GROUP = "user_group"
299
376
  USER_LIST_SET = "user_list_set"
@@ -318,11 +395,52 @@ class EntityType(StrEnum):
318
395
  PUBLIC_DATA_SOURCED_CONDITION_PARAMETER = "public_data_sourced_condition_parameter"
319
396
  PUBLIC_DATA_SOURCED_COMPANY = "public_data_sourced_company"
320
397
  UPLOADER = "uploader"
398
+ CALCULATION_MATERIAL_FAMILY = "calculation_material_family"
321
399
 
322
400
 
323
401
  # DO NOT MODIFY -- This file is generated by type_spec
324
- @dataclasses.dataclass(kw_only=True)
402
+ LimitedEntityType = typing.Annotated[
403
+ typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.NOTEBOOK] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT] | typing.Literal[EntityType.EQUIPMENT_MAINTENANCE] | typing.Literal[EntityType.MAINTENANCE_SCHEDULE] | typing.Literal[EntityType.CONDITION_PARAMETER_RULE] | typing.Literal[EntityType.INGREDIENT] | typing.Literal[EntityType.TIMESHEET_ENTRY] | typing.Literal[EntityType.SAVE] | typing.Literal[EntityType.RECIPE_CHECK] | typing.Literal[EntityType.EXPERIMENT_GROUP_MEMBER],
404
+ serial_alias_annotation(
405
+ named_type_path="sdk.entity.LimitedEntityType",
406
+ ),
407
+ ]
408
+
409
+
410
+ # DO NOT MODIFY -- This file is generated by type_spec
411
+ class EntityPermissionType(StrEnum):
412
+ READ = "read"
413
+ WRITE = "write"
414
+ CREATE = "create"
415
+ REOPEN = "reopen"
416
+ ADMIN = "admin"
417
+
418
+
419
+ # DO NOT MODIFY -- This file is generated by type_spec
420
+ GrantableEntityPermissionType = typing.Annotated[
421
+ typing.Literal[EntityPermissionType.READ] | typing.Literal[EntityPermissionType.WRITE],
422
+ serial_alias_annotation(
423
+ named_type_path="sdk.entity.GrantableEntityPermissionType",
424
+ ),
425
+ ]
426
+
427
+
428
+ # DO NOT MODIFY -- This file is generated by type_spec
429
+ @serial_class(
430
+ named_type_path="sdk.entity.Entity",
431
+ )
432
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
325
433
  class Entity:
326
434
  id: base_t.ObjectId
327
435
  type: EntityType
436
+
437
+
438
+ # DO NOT MODIFY -- This file is generated by type_spec
439
+ @serial_class(
440
+ named_type_path="sdk.entity.EntityIdentifier",
441
+ )
442
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
443
+ class EntityIdentifier:
444
+ identifier_key: identifier_t.IdentifierKey
445
+ type: EntityType
328
446
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -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 base_t
12
12
 
13
13
  __all__: list[str] = [
@@ -16,7 +16,10 @@ __all__: list[str] = [
16
16
 
17
17
 
18
18
  # DO NOT MODIFY -- This file is generated by type_spec
19
- @dataclasses.dataclass(kw_only=True)
19
+ @serial_class(
20
+ named_type_path="sdk.experiment_groups.SimpleExperimentGroup",
21
+ )
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
20
23
  class SimpleExperimentGroup:
21
24
  experiment_group_id: base_t.ObjectId
22
25
  name: str
@@ -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 .exports_t import ListingExportUserTimezone as ListingExportUserTimezone
7
+ from .exports_t import ExportType as ExportType
8
+ # DO NOT MODIFY -- This file is generated by type_spec