UncountablePythonSDK 0.0.82__py3-none-any.whl → 0.0.132__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 (298) 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/basic_auth.py +7 -0
  9. examples/create_ingredient_sdk.py +34 -0
  10. examples/download_files.py +26 -0
  11. examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
  12. examples/integration-server/jobs/materials_auto/example_cron.py +3 -0
  13. examples/integration-server/jobs/materials_auto/example_http.py +47 -0
  14. examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
  15. examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
  16. examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
  17. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
  18. examples/integration-server/jobs/materials_auto/example_wh.py +17 -9
  19. examples/integration-server/jobs/materials_auto/profile.yaml +61 -0
  20. examples/integration-server/pyproject.toml +10 -10
  21. examples/oauth.py +7 -0
  22. examples/set_recipe_metadata_file.py +1 -1
  23. examples/upload_files.py +1 -2
  24. pkgs/argument_parser/__init__.py +8 -0
  25. pkgs/argument_parser/_is_namedtuple.py +3 -0
  26. pkgs/argument_parser/argument_parser.py +196 -63
  27. pkgs/filesystem_utils/__init__.py +1 -0
  28. pkgs/filesystem_utils/_blob_session.py +144 -0
  29. pkgs/filesystem_utils/_gdrive_session.py +5 -5
  30. pkgs/filesystem_utils/_s3_session.py +2 -1
  31. pkgs/filesystem_utils/_sftp_session.py +6 -3
  32. pkgs/filesystem_utils/file_type_utils.py +30 -10
  33. pkgs/serialization/__init__.py +7 -2
  34. pkgs/serialization/annotation.py +64 -0
  35. pkgs/serialization/missing_sentry.py +1 -1
  36. pkgs/serialization/opaque_key.py +1 -1
  37. pkgs/serialization/serial_alias.py +47 -0
  38. pkgs/serialization/serial_class.py +40 -48
  39. pkgs/serialization/serial_generic.py +16 -0
  40. pkgs/serialization/serial_union.py +16 -16
  41. pkgs/serialization_util/__init__.py +6 -0
  42. pkgs/serialization_util/dataclasses.py +14 -0
  43. pkgs/serialization_util/serialization_helpers.py +15 -5
  44. pkgs/type_spec/actions_registry/__main__.py +0 -4
  45. pkgs/type_spec/actions_registry/emit_typescript.py +2 -4
  46. pkgs/type_spec/builder.py +248 -70
  47. pkgs/type_spec/builder_types.py +9 -0
  48. pkgs/type_spec/config.py +40 -7
  49. pkgs/type_spec/cross_output_links.py +99 -0
  50. pkgs/type_spec/emit_open_api.py +121 -34
  51. pkgs/type_spec/emit_open_api_util.py +5 -5
  52. pkgs/type_spec/emit_python.py +277 -86
  53. pkgs/type_spec/emit_typescript.py +102 -29
  54. pkgs/type_spec/emit_typescript_util.py +66 -10
  55. pkgs/type_spec/load_types.py +16 -3
  56. pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
  57. pkgs/type_spec/open_api_util.py +29 -4
  58. pkgs/type_spec/parts/base.py.prepart +11 -8
  59. pkgs/type_spec/parts/base.ts.prepart +4 -0
  60. pkgs/type_spec/type_info/__main__.py +3 -1
  61. pkgs/type_spec/type_info/emit_type_info.py +115 -22
  62. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  63. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
  64. pkgs/type_spec/util.py +3 -3
  65. pkgs/type_spec/value_spec/__main__.py +26 -9
  66. pkgs/type_spec/value_spec/convert_type.py +18 -0
  67. pkgs/type_spec/value_spec/emit_python.py +13 -3
  68. pkgs/type_spec/value_spec/types.py +1 -1
  69. uncountable/core/async_batch.py +1 -1
  70. uncountable/core/client.py +133 -34
  71. uncountable/core/environment.py +3 -3
  72. uncountable/core/file_upload.py +39 -15
  73. uncountable/integration/cli.py +116 -23
  74. uncountable/integration/construct_client.py +3 -3
  75. uncountable/integration/executors/executors.py +12 -2
  76. uncountable/integration/executors/generic_upload_executor.py +66 -14
  77. uncountable/integration/http_server/__init__.py +5 -0
  78. uncountable/integration/http_server/types.py +69 -0
  79. uncountable/integration/job.py +192 -7
  80. uncountable/integration/queue_runner/command_server/__init__.py +4 -0
  81. uncountable/integration/queue_runner/command_server/command_client.py +65 -0
  82. uncountable/integration/queue_runner/command_server/command_server.py +83 -5
  83. uncountable/integration/queue_runner/command_server/constants.py +4 -0
  84. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +36 -0
  85. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +28 -11
  86. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +77 -1
  87. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +135 -0
  88. uncountable/integration/queue_runner/command_server/types.py +25 -2
  89. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +168 -11
  90. uncountable/integration/queue_runner/datastore/interface.py +10 -0
  91. uncountable/integration/queue_runner/datastore/model.py +8 -1
  92. uncountable/integration/queue_runner/job_scheduler.py +63 -23
  93. uncountable/integration/queue_runner/queue_runner.py +10 -2
  94. uncountable/integration/queue_runner/worker.py +22 -17
  95. uncountable/integration/scan_profiles.py +1 -1
  96. uncountable/integration/scheduler.py +74 -25
  97. uncountable/integration/secret_retrieval/retrieve_secret.py +1 -1
  98. uncountable/integration/server.py +42 -12
  99. uncountable/integration/telemetry.py +63 -10
  100. uncountable/integration/webhook_server/entrypoint.py +39 -112
  101. uncountable/types/__init__.py +58 -1
  102. uncountable/types/api/batch/execute_batch.py +5 -6
  103. uncountable/types/api/batch/execute_batch_load_async.py +2 -3
  104. uncountable/types/api/chemical/convert_chemical_formats.py +10 -5
  105. uncountable/types/api/condition_parameters/__init__.py +1 -0
  106. uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
  107. uncountable/types/api/entity/create_entities.py +7 -7
  108. uncountable/types/api/entity/create_entity.py +8 -8
  109. uncountable/types/api/entity/create_or_update_entity.py +48 -0
  110. uncountable/types/api/entity/export_entities.py +59 -0
  111. uncountable/types/api/entity/get_entities_data.py +3 -4
  112. uncountable/types/api/entity/grant_entity_permissions.py +6 -6
  113. uncountable/types/api/entity/list_aggregate.py +79 -0
  114. uncountable/types/api/entity/list_entities.py +34 -10
  115. uncountable/types/api/entity/lock_entity.py +4 -4
  116. uncountable/types/api/entity/lookup_entity.py +116 -0
  117. uncountable/types/api/entity/resolve_entity_ids.py +5 -6
  118. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  119. uncountable/types/api/entity/set_values.py +3 -3
  120. uncountable/types/api/entity/transition_entity_phase.py +14 -7
  121. uncountable/types/api/entity/unlock_entity.py +3 -3
  122. uncountable/types/api/equipment/associate_equipment_input.py +2 -3
  123. uncountable/types/api/field_options/upsert_field_options.py +7 -7
  124. uncountable/types/api/files/__init__.py +1 -0
  125. uncountable/types/api/files/download_file.py +77 -0
  126. uncountable/types/api/id_source/list_id_source.py +6 -7
  127. uncountable/types/api/id_source/match_id_source.py +4 -5
  128. uncountable/types/api/input_groups/get_input_group_names.py +3 -4
  129. uncountable/types/api/inputs/create_inputs.py +10 -9
  130. uncountable/types/api/inputs/get_input_data.py +11 -12
  131. uncountable/types/api/inputs/get_input_names.py +6 -7
  132. uncountable/types/api/inputs/get_inputs_data.py +6 -7
  133. uncountable/types/api/inputs/set_input_attribute_values.py +5 -6
  134. uncountable/types/api/inputs/set_input_category.py +5 -5
  135. uncountable/types/api/inputs/set_input_subcategories.py +3 -3
  136. uncountable/types/api/inputs/set_intermediate_type.py +4 -4
  137. uncountable/types/api/integrations/__init__.py +1 -0
  138. uncountable/types/api/integrations/publish_realtime_data.py +41 -0
  139. uncountable/types/api/integrations/push_notification.py +49 -0
  140. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  141. uncountable/types/api/listing/__init__.py +1 -0
  142. uncountable/types/api/listing/fetch_listing.py +58 -0
  143. uncountable/types/api/material_families/update_entity_material_families.py +3 -4
  144. uncountable/types/api/notebooks/__init__.py +1 -0
  145. uncountable/types/api/notebooks/add_notebook_content.py +119 -0
  146. uncountable/types/api/outputs/get_output_data.py +12 -13
  147. uncountable/types/api/outputs/get_output_names.py +5 -6
  148. uncountable/types/api/outputs/get_output_organization.py +173 -0
  149. uncountable/types/api/outputs/resolve_output_conditions.py +7 -8
  150. uncountable/types/api/permissions/set_core_permissions.py +16 -10
  151. uncountable/types/api/project/get_projects.py +6 -7
  152. uncountable/types/api/project/get_projects_data.py +7 -8
  153. uncountable/types/api/recipe_links/create_recipe_link.py +5 -5
  154. uncountable/types/api/recipe_links/remove_recipe_link.py +4 -4
  155. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +6 -7
  156. uncountable/types/api/recipes/add_recipe_to_project.py +3 -3
  157. uncountable/types/api/recipes/add_time_series_data.py +64 -0
  158. uncountable/types/api/recipes/archive_recipes.py +4 -4
  159. uncountable/types/api/recipes/associate_recipe_as_input.py +5 -5
  160. uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -3
  161. uncountable/types/api/recipes/clear_recipe_outputs.py +3 -3
  162. uncountable/types/api/recipes/create_mix_order.py +44 -0
  163. uncountable/types/api/recipes/create_recipe.py +8 -9
  164. uncountable/types/api/recipes/create_recipes.py +8 -9
  165. uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -3
  166. uncountable/types/api/recipes/edit_recipe_inputs.py +101 -24
  167. uncountable/types/api/recipes/get_column_calculation_values.py +4 -5
  168. uncountable/types/api/recipes/get_curve.py +4 -5
  169. uncountable/types/api/recipes/get_recipe_calculations.py +6 -7
  170. uncountable/types/api/recipes/get_recipe_links.py +3 -4
  171. uncountable/types/api/recipes/get_recipe_names.py +3 -4
  172. uncountable/types/api/recipes/get_recipe_output_metadata.py +5 -6
  173. uncountable/types/api/recipes/get_recipes_data.py +62 -34
  174. uncountable/types/api/recipes/lock_recipes.py +9 -8
  175. uncountable/types/api/recipes/remove_recipe_from_project.py +3 -3
  176. uncountable/types/api/recipes/set_recipe_inputs.py +9 -10
  177. uncountable/types/api/recipes/set_recipe_metadata.py +3 -3
  178. uncountable/types/api/recipes/set_recipe_output_annotations.py +11 -12
  179. uncountable/types/api/recipes/set_recipe_output_file.py +5 -6
  180. uncountable/types/api/recipes/set_recipe_outputs.py +24 -13
  181. uncountable/types/api/recipes/set_recipe_tags.py +14 -9
  182. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  183. uncountable/types/api/recipes/unarchive_recipes.py +3 -3
  184. uncountable/types/api/recipes/unlock_recipes.py +7 -6
  185. uncountable/types/api/runsheet/__init__.py +1 -0
  186. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  187. uncountable/types/api/triggers/run_trigger.py +4 -4
  188. uncountable/types/api/uploader/complete_async_parse.py +46 -0
  189. uncountable/types/api/uploader/invoke_uploader.py +4 -5
  190. uncountable/types/api/user/__init__.py +1 -0
  191. uncountable/types/api/user/get_current_user_info.py +40 -0
  192. uncountable/types/async_batch.py +1 -1
  193. uncountable/types/async_batch_processor.py +506 -23
  194. uncountable/types/async_batch_t.py +35 -8
  195. uncountable/types/async_jobs.py +0 -1
  196. uncountable/types/async_jobs_t.py +1 -2
  197. uncountable/types/auth_retrieval.py +0 -1
  198. uncountable/types/auth_retrieval_t.py +6 -6
  199. uncountable/types/base.py +0 -1
  200. uncountable/types/base_t.py +11 -9
  201. uncountable/types/calculations.py +0 -1
  202. uncountable/types/calculations_t.py +1 -2
  203. uncountable/types/chemical_structure.py +0 -1
  204. uncountable/types/chemical_structure_t.py +5 -5
  205. uncountable/types/client_base.py +614 -69
  206. uncountable/types/client_config.py +1 -1
  207. uncountable/types/client_config_t.py +13 -3
  208. uncountable/types/curves.py +0 -1
  209. uncountable/types/curves_t.py +6 -7
  210. uncountable/types/data.py +12 -0
  211. uncountable/types/data_t.py +103 -0
  212. uncountable/types/entity.py +1 -1
  213. uncountable/types/entity_t.py +90 -10
  214. uncountable/types/experiment_groups.py +0 -1
  215. uncountable/types/experiment_groups_t.py +1 -2
  216. uncountable/types/exports.py +8 -0
  217. uncountable/types/exports_t.py +34 -0
  218. uncountable/types/field_values.py +19 -1
  219. uncountable/types/field_values_t.py +242 -9
  220. uncountable/types/fields.py +0 -1
  221. uncountable/types/fields_t.py +1 -2
  222. uncountable/types/generic_upload.py +0 -1
  223. uncountable/types/generic_upload_t.py +14 -14
  224. uncountable/types/id_source.py +0 -1
  225. uncountable/types/id_source_t.py +13 -7
  226. uncountable/types/identifier.py +0 -1
  227. uncountable/types/identifier_t.py +10 -5
  228. uncountable/types/input_attributes.py +0 -1
  229. uncountable/types/input_attributes_t.py +3 -4
  230. uncountable/types/inputs.py +0 -1
  231. uncountable/types/inputs_t.py +3 -4
  232. uncountable/types/integration_server.py +0 -1
  233. uncountable/types/integration_server_t.py +13 -4
  234. uncountable/types/integration_session.py +10 -0
  235. uncountable/types/integration_session_t.py +60 -0
  236. uncountable/types/integrations.py +10 -0
  237. uncountable/types/integrations_t.py +62 -0
  238. uncountable/types/job_definition.py +2 -1
  239. uncountable/types/job_definition_t.py +57 -32
  240. uncountable/types/listing.py +9 -0
  241. uncountable/types/listing_t.py +51 -0
  242. uncountable/types/notices.py +8 -0
  243. uncountable/types/notices_t.py +37 -0
  244. uncountable/types/notifications.py +11 -0
  245. uncountable/types/notifications_t.py +74 -0
  246. uncountable/types/outputs.py +0 -1
  247. uncountable/types/outputs_t.py +2 -3
  248. uncountable/types/overrides.py +0 -1
  249. uncountable/types/overrides_t.py +10 -4
  250. uncountable/types/permissions.py +0 -1
  251. uncountable/types/permissions_t.py +1 -2
  252. uncountable/types/phases.py +0 -1
  253. uncountable/types/phases_t.py +1 -2
  254. uncountable/types/post_base.py +0 -1
  255. uncountable/types/post_base_t.py +1 -2
  256. uncountable/types/queued_job.py +2 -1
  257. uncountable/types/queued_job_t.py +29 -12
  258. uncountable/types/recipe_identifiers.py +0 -1
  259. uncountable/types/recipe_identifiers_t.py +18 -8
  260. uncountable/types/recipe_inputs.py +0 -1
  261. uncountable/types/recipe_inputs_t.py +1 -2
  262. uncountable/types/recipe_links.py +0 -1
  263. uncountable/types/recipe_links_t.py +3 -4
  264. uncountable/types/recipe_metadata.py +0 -1
  265. uncountable/types/recipe_metadata_t.py +9 -10
  266. uncountable/types/recipe_output_metadata.py +0 -1
  267. uncountable/types/recipe_output_metadata_t.py +1 -2
  268. uncountable/types/recipe_tags.py +0 -1
  269. uncountable/types/recipe_tags_t.py +1 -2
  270. uncountable/types/recipe_workflow_steps.py +0 -1
  271. uncountable/types/recipe_workflow_steps_t.py +7 -7
  272. uncountable/types/recipes.py +0 -1
  273. uncountable/types/recipes_t.py +2 -2
  274. uncountable/types/response.py +0 -1
  275. uncountable/types/response_t.py +2 -2
  276. uncountable/types/secret_retrieval.py +0 -1
  277. uncountable/types/secret_retrieval_t.py +7 -7
  278. uncountable/types/sockets.py +20 -0
  279. uncountable/types/sockets_t.py +169 -0
  280. uncountable/types/structured_filters.py +25 -0
  281. uncountable/types/structured_filters_t.py +248 -0
  282. uncountable/types/units.py +0 -1
  283. uncountable/types/units_t.py +1 -2
  284. uncountable/types/uploader.py +24 -0
  285. uncountable/types/uploader_t.py +222 -0
  286. uncountable/types/users.py +0 -1
  287. uncountable/types/users_t.py +1 -2
  288. uncountable/types/webhook_job.py +1 -1
  289. uncountable/types/webhook_job_t.py +14 -3
  290. uncountable/types/workflows.py +0 -1
  291. uncountable/types/workflows_t.py +3 -4
  292. uncountablepythonsdk-0.0.132.dist-info/METADATA +64 -0
  293. uncountablepythonsdk-0.0.132.dist-info/RECORD +363 -0
  294. {UncountablePythonSDK-0.0.82.dist-info → uncountablepythonsdk-0.0.132.dist-info}/WHEEL +1 -1
  295. UncountablePythonSDK-0.0.82.dist-info/METADATA +0 -60
  296. UncountablePythonSDK-0.0.82.dist-info/RECORD +0 -292
  297. docs/quickstart.md +0 -19
  298. {UncountablePythonSDK-0.0.82.dist-info → uncountablepythonsdk-0.0.132.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
@@ -9,9 +8,11 @@ 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 . import base_t
12
12
 
13
13
  __all__: list[str] = [
14
14
  "ClientConfigOptions",
15
+ "RequestOptions",
15
16
  ]
16
17
 
17
18
 
@@ -19,8 +20,17 @@ __all__: list[str] = [
19
20
  @serial_class(
20
21
  named_type_path="sdk.client_config.ClientConfigOptions",
21
22
  )
22
- @dataclasses.dataclass(kw_only=True)
23
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
24
  class ClientConfigOptions:
24
25
  allow_insecure_tls: bool = False
25
- 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
26
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
@@ -29,10 +28,10 @@ class CurveAxisType(StrEnum):
29
28
  @serial_class(
30
29
  named_type_path="sdk.curves.Curve",
31
30
  )
32
- @dataclasses.dataclass(kw_only=True)
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
32
  class Curve:
34
33
  id: base_t.ObjectId
35
- x_type: typing.Union[typing.Literal[CurveAxisType.NUMERIC], typing.Literal[CurveAxisType.TIMESTAMP]]
34
+ x_type: typing.Literal[CurveAxisType.NUMERIC] | typing.Literal[CurveAxisType.TIMESTAMP]
36
35
  x_values: list[CurveValue]
37
36
  y_type: typing.Union[typing.Literal[CurveAxisType.NUMERIC]]
38
37
  y_values: list[CurveValue]
@@ -43,9 +42,9 @@ class Curve:
43
42
  named_type_path="sdk.curves.CurveValue",
44
43
  to_string_values={"quantity"},
45
44
  )
46
- @dataclasses.dataclass(kw_only=True)
45
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
46
  class CurveValue:
48
47
  index: int
49
- quantity: typing.Optional[Decimal] = None
50
- quantity_timestamp: typing.Optional[datetime.datetime] = None
48
+ quantity: Decimal | None = None
49
+ quantity_timestamp: datetime.datetime | None = None
51
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,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -9,4 +8,5 @@ from .entity_t import LimitedEntityType as LimitedEntityType
9
8
  from .entity_t import EntityPermissionType as EntityPermissionType
10
9
  from .entity_t import GrantableEntityPermissionType as GrantableEntityPermissionType
11
10
  from .entity_t import Entity as Entity
11
+ from .entity_t import EntityIdentifier as EntityIdentifier
12
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,17 @@ 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
12
+ from pkgs.serialization import serial_alias_annotation
13
13
  from pkgs.serialization import serial_string_enum
14
14
  from . import base_t
15
+ from . import identifier_t
15
16
 
16
17
  __all__: list[str] = [
17
18
  "Entity",
19
+ "EntityIdentifier",
18
20
  "EntityPermissionType",
19
21
  "EntityType",
20
22
  "GrantableEntityPermissionType",
@@ -30,6 +32,7 @@ __all__: list[str] = [
30
32
  "annotation_type": "Annotation Type",
31
33
  "approval": "Approval",
32
34
  "async_job": "Async Job",
35
+ "barcode": "Barcode",
33
36
  "calculation": "Calculation",
34
37
  "calendar": "Calendar",
35
38
  "calendar_event": "Calendar Event",
@@ -37,19 +40,26 @@ __all__: list[str] = [
37
40
  "characterization": "Characterization",
38
41
  "comment": "Comment",
39
42
  "comment_thread": "Comment Thread",
43
+ "condition_match": "Condition Match",
40
44
  "condition_parameter": "Condition Parameter",
41
45
  "condition_parameter_mat_family": "Condition Parameter Material Family",
46
+ "condition_parameter_matches": "Condition Parameter Matches",
47
+ "condition_parameter_rule": "Condition Parameter Rule",
42
48
  "condition_parameter_value": "Condition Parameter Value",
43
49
  "constraint": "Constraint",
44
50
  "constraint_set": "Constraint Set",
51
+ "control_type": "Control Type",
45
52
  "curve_settings": "Curve Settings",
46
53
  "custom_entity": "Custom Entity",
54
+ "default_permissions_new_project": "Default Permissions New Project",
47
55
  "doe_run": "Suggest Experiments",
48
56
  "email_record_external": "External Emails",
49
57
  "email_relay_server": "Email Relay Server",
50
58
  "enter_recipe_view_preference": "Enter Recipe View Preference",
59
+ "enter_measurement_view_preference": "Enter Measurement View Preference",
51
60
  "entities_viewed": "Entities Viewed",
52
61
  "entity_annotation": "Annotation",
62
+ "entity_definition_field_group": "Entity Definition Field Group",
53
63
  "entity_field": "Field",
54
64
  "entity_field_audit_log": "Entity Field Audit Log",
55
65
  "entity_link": "Entity Link",
@@ -60,6 +70,7 @@ __all__: list[str] = [
60
70
  "equipment_maintenance": "Equipment Maintenance",
61
71
  "equipment_type": "Equipment Type",
62
72
  "experiment_group": "Experiment Group",
73
+ "experiment_group_member": "Experiment Group Member",
63
74
  "experiment_group_type": "Experiment Group Type",
64
75
  "favorite_link": "Favorite Link",
65
76
  "field_option_set": "Field Option Set",
@@ -78,17 +89,20 @@ __all__: list[str] = [
78
89
  "ingredient_mat_family": "Ingredient Material Family",
79
90
  "ingredient_role": "Ingredient Role",
80
91
  "ingredient_tag": "Ingredient Subcategory",
81
- "ingredient_tag_map": "Ingredient Tag Map",
92
+ "ingredient_tag_map": "Ingredient Subcategory Mapping",
82
93
  "input_group": "Input Group",
83
94
  "inv_local_locations": "Inventory Location",
84
- "inventory_amount": "Inventory Amount",
95
+ "inventory_amount": "Inventory Item",
85
96
  "inventory_limit": "Inventory Limit",
86
97
  "inventory_history": "Inventory History",
87
98
  "lab_location": "Lab Location",
88
99
  "lab_request": "Lab Request",
89
100
  "license": "License",
90
- "maintenance_schedule": "Maintenance Schedule",
101
+ "maintenance_schedule": "Equipment Action Type",
91
102
  "material_family": "Material Family",
103
+ "measurement_group": "Measurement Group",
104
+ "measurement_group_input": "Measurement Group Input",
105
+ "measurement_group_recipe": "Measurement Group Recipe",
92
106
  "ml_job": "Batch Processing Job",
93
107
  "naming_scheme": "Naming Scheme",
94
108
  "naming_counter": "Naming Counter",
@@ -98,30 +112,38 @@ __all__: list[str] = [
98
112
  "output_calculation_entity_mapping": "Output Calculation Entity Mapping",
99
113
  "output_category_all": "Output Category",
100
114
  "output_condition": "Output Condition",
115
+ "output_condition_condition_parameter": "Output Condition Condition Parameter",
101
116
  "output_default_condition": "Output Default Condition",
102
117
  "output_condition_parameter": "Output Condition Parameter",
103
118
  "output_condition_parameter_analytical_method_category": "Output Condition Parameter Analytical Method Category",
104
119
  "output_condition_parameter_analytical_method": "Output Condition Parameter Analytical Method",
105
120
  "output_group": "Output Group",
121
+ "output_group_member": "Output Group Member",
122
+ "output_preferences": "Output Preferences",
106
123
  "permission": "Permission",
107
124
  "permissions_recipe_link_inheritance": "Permissions Recipe Link Inheritance",
108
125
  "phase_workflow": "Phase Workflow",
109
126
  "platform_config": "Platform Config",
127
+ "portal_form": "Portal Form",
110
128
  "predictive_model": "Predictive Model",
111
129
  "product": "Product",
130
+ "product_material_family": "Product Material Family",
112
131
  "project": "Project",
113
132
  "project_workbook_comment": "Notebook Cell Comment",
114
133
  "recipe": "Experiment",
115
134
  "recipe_audit_log": "Experiment Audit Log",
116
135
  "recipe_calculation": "Recipe Calculation",
117
136
  "recipe_check": "Experiment Check",
137
+ "recipe_component_witness": "Recipe Component Witness",
118
138
  "recipe_export": "Recipe Export",
119
139
  "recipe_goal": "Experiment Goal",
120
140
  "recipe_ingredient": "Recipe Ingredient",
121
141
  "recipe_ingredient_actual": "Recipe Ingredient Actual",
122
142
  "recipe_ingredients_compounded": "Recipe Ingredients Compounded",
123
- "recipe_ingredients_compounded_calculation": "Recipe Ingredients Compounded Caclulation",
143
+ "recipe_ingredients_compounded_calculation": "Recipe Ingredients Compounded Calculation",
144
+ "recipe_link": "Experiment Link",
124
145
  "recipe_output": "Recipe Output",
146
+ "recipe_output_annotation": "Recipe Output Annotation",
125
147
  "recipe_output_metadata": "Recipe Output Metadata",
126
148
  "recipe_permission_view": "Recipe Permission View",
127
149
  "recipe_project": "Recipe Project",
@@ -134,18 +156,25 @@ __all__: list[str] = [
134
156
  "review": "Review",
135
157
  "review_entity_user_status": "Review Entity User Status",
136
158
  "review_user": "Review User",
159
+ "rlw_audit_log": "Rlw Audit Log",
137
160
  "rlw_phase": "Phase",
138
161
  "rlw_trigger": "Trigger",
139
162
  "rlw_trigger_set": "Trigger Set",
163
+ "runsheet_configuration": "Runsheet Configuration",
140
164
  "safety_data_sheet": "Safety Data Sheet",
141
165
  "scheduled_notification": "Scheduled Notification",
166
+ "scratch_pad": "Scratch Pad",
142
167
  "specs": "Spec",
143
- "split_template": "Split Template",
168
+ "save": "Save",
169
+ "split_template": "Test Method",
144
170
  "structured_loading_user_config": "List Config",
171
+ "subscription": "Subscription",
145
172
  "table_builder_config": "Table Builder Config",
146
173
  "task": "Task",
147
174
  "task_board": "Task Board",
148
175
  "template": "Template",
176
+ "test_entity": "Test Entity",
177
+ "time_series_segment": "Time Series Segment",
149
178
  "timesheet_entry": "Timesheet Entry",
150
179
  "training_run": "Analyze Experiment",
151
180
  "training_run_template": "Scheduled Training Run",
@@ -155,6 +184,7 @@ __all__: list[str] = [
155
184
  "units": "Units",
156
185
  "user_favorite": "User Favorite",
157
186
  "user": "User",
187
+ "user_analytics_event": "User Analytics Event",
158
188
  "user_certification": "User Certification",
159
189
  "user_group": "User Group",
160
190
  "user_list_set": "User List Set",
@@ -179,6 +209,7 @@ __all__: list[str] = [
179
209
  "public_data_sourced_condition_parameter": "ChemQuery Condition Parameter",
180
210
  "public_data_sourced_company": "ChemQuery Company",
181
211
  "uploader": "Uploader",
212
+ "calculation_material_family": "Calculation Material Family",
182
213
  },
183
214
  )
184
215
  class EntityType(StrEnum):
@@ -187,6 +218,7 @@ class EntityType(StrEnum):
187
218
  ANNOTATION_TYPE = "annotation_type"
188
219
  APPROVAL = "approval"
189
220
  ASYNC_JOB = "async_job"
221
+ BARCODE = "barcode"
190
222
  CALCULATION = "calculation"
191
223
  CALENDAR = "calendar"
192
224
  CALENDAR_EVENT = "calendar_event"
@@ -194,19 +226,26 @@ class EntityType(StrEnum):
194
226
  CHARACTERIZATION = "characterization"
195
227
  COMMENT = "comment"
196
228
  COMMENT_THREAD = "comment_thread"
229
+ CONDITION_MATCH = "condition_match"
197
230
  CONDITION_PARAMETER = "condition_parameter"
198
231
  CONDITION_PARAMETER_MAT_FAMILY = "condition_parameter_mat_family"
232
+ CONDITION_PARAMETER_MATCHES = "condition_parameter_matches"
233
+ CONDITION_PARAMETER_RULE = "condition_parameter_rule"
199
234
  CONDITION_PARAMETER_VALUE = "condition_parameter_value"
200
235
  CONSTRAINT = "constraint"
201
236
  CONSTRAINT_SET = "constraint_set"
237
+ CONTROL_TYPE = "control_type"
202
238
  CURVE_SETTINGS = "curve_settings"
203
239
  CUSTOM_ENTITY = "custom_entity"
240
+ DEFAULT_PERMISSIONS_NEW_PROJECT = "default_permissions_new_project"
204
241
  DOE_RUN = "doe_run"
205
242
  EMAIL_RECORD_EXTERNAL = "email_record_external"
206
243
  EMAIL_RELAY_SERVER = "email_relay_server"
207
244
  ENTER_RECIPE_VIEW_PREFERENCE = "enter_recipe_view_preference"
245
+ ENTER_MEASUREMENT_VIEW_PREFERENCE = "enter_measurement_view_preference"
208
246
  ENTITIES_VIEWED = "entities_viewed"
209
247
  ENTITY_ANNOTATION = "entity_annotation"
248
+ ENTITY_DEFINITION_FIELD_GROUP = "entity_definition_field_group"
210
249
  ENTITY_FIELD = "entity_field"
211
250
  ENTITY_FIELD_AUDIT_LOG = "entity_field_audit_log"
212
251
  ENTITY_LINK = "entity_link"
@@ -217,6 +256,7 @@ class EntityType(StrEnum):
217
256
  EQUIPMENT_MAINTENANCE = "equipment_maintenance"
218
257
  EQUIPMENT_TYPE = "equipment_type"
219
258
  EXPERIMENT_GROUP = "experiment_group"
259
+ EXPERIMENT_GROUP_MEMBER = "experiment_group_member"
220
260
  EXPERIMENT_GROUP_TYPE = "experiment_group_type"
221
261
  FAVORITE_LINK = "favorite_link"
222
262
  FIELD_OPTION_SET = "field_option_set"
@@ -246,6 +286,9 @@ class EntityType(StrEnum):
246
286
  LICENSE = "license"
247
287
  MAINTENANCE_SCHEDULE = "maintenance_schedule"
248
288
  MATERIAL_FAMILY = "material_family"
289
+ MEASUREMENT_GROUP = "measurement_group"
290
+ MEASUREMENT_GROUP_INPUT = "measurement_group_input"
291
+ MEASUREMENT_GROUP_RECIPE = "measurement_group_recipe"
249
292
  ML_JOB = "ml_job"
250
293
  NAMING_SCHEME = "naming_scheme"
251
294
  NAMING_COUNTER = "naming_counter"
@@ -255,30 +298,38 @@ class EntityType(StrEnum):
255
298
  OUTPUT_CALCULATION_ENTITY_MAPPING = "output_calculation_entity_mapping"
256
299
  OUTPUT_CATEGORY_ALL = "output_category_all"
257
300
  OUTPUT_CONDITION = "output_condition"
301
+ OUTPUT_CONDITION_CONDITION_PARAMETER = "output_condition_condition_parameter"
258
302
  OUTPUT_DEFAULT_CONDITION = "output_default_condition"
259
303
  OUTPUT_CONDITION_PARAMETER = "output_condition_parameter"
260
304
  OUTPUT_CONDITION_PARAMETER_ANALYTICAL_METHOD_CATEGORY = "output_condition_parameter_analytical_method_category"
261
305
  OUTPUT_CONDITION_PARAMETER_ANALYTICAL_METHOD = "output_condition_parameter_analytical_method"
262
306
  OUTPUT_GROUP = "output_group"
307
+ OUTPUT_GROUP_MEMBER = "output_group_member"
308
+ OUTPUT_PREFERENCES = "output_preferences"
263
309
  PERMISSION = "permission"
264
310
  PERMISSIONS_RECIPE_LINK_INHERITANCE = "permissions_recipe_link_inheritance"
265
311
  PHASE_WORKFLOW = "phase_workflow"
266
312
  PLATFORM_CONFIG = "platform_config"
313
+ PORTAL_FORM = "portal_form"
267
314
  PREDICTIVE_MODEL = "predictive_model"
268
315
  PRODUCT = "product"
316
+ PRODUCT_MATERIAL_FAMILY = "product_material_family"
269
317
  PROJECT = "project"
270
318
  PROJECT_WORKBOOK_COMMENT = "project_workbook_comment"
271
319
  RECIPE = "recipe"
272
320
  RECIPE_AUDIT_LOG = "recipe_audit_log"
273
321
  RECIPE_CALCULATION = "recipe_calculation"
274
322
  RECIPE_CHECK = "recipe_check"
323
+ RECIPE_COMPONENT_WITNESS = "recipe_component_witness"
275
324
  RECIPE_EXPORT = "recipe_export"
276
325
  RECIPE_GOAL = "recipe_goal"
277
326
  RECIPE_INGREDIENT = "recipe_ingredient"
278
327
  RECIPE_INGREDIENT_ACTUAL = "recipe_ingredient_actual"
279
328
  RECIPE_INGREDIENTS_COMPOUNDED = "recipe_ingredients_compounded"
280
329
  RECIPE_INGREDIENTS_COMPOUNDED_CALCULATION = "recipe_ingredients_compounded_calculation"
330
+ RECIPE_LINK = "recipe_link"
281
331
  RECIPE_OUTPUT = "recipe_output"
332
+ RECIPE_OUTPUT_ANNOTATION = "recipe_output_annotation"
282
333
  RECIPE_OUTPUT_METADATA = "recipe_output_metadata"
283
334
  RECIPE_PERMISSION_VIEW = "recipe_permission_view"
284
335
  RECIPE_PROJECT = "recipe_project"
@@ -291,18 +342,25 @@ class EntityType(StrEnum):
291
342
  REVIEW = "review"
292
343
  REVIEW_ENTITY_USER_STATUS = "review_entity_user_status"
293
344
  REVIEW_USER = "review_user"
345
+ RLW_AUDIT_LOG = "rlw_audit_log"
294
346
  RLW_PHASE = "rlw_phase"
295
347
  RLW_TRIGGER = "rlw_trigger"
296
348
  RLW_TRIGGER_SET = "rlw_trigger_set"
349
+ RUNSHEET_CONFIGURATION = "runsheet_configuration"
297
350
  SAFETY_DATA_SHEET = "safety_data_sheet"
298
351
  SCHEDULED_NOTIFICATION = "scheduled_notification"
352
+ SCRATCH_PAD = "scratch_pad"
299
353
  SPECS = "specs"
354
+ SAVE = "save"
300
355
  SPLIT_TEMPLATE = "split_template"
301
356
  STRUCTURED_LOADING_USER_CONFIG = "structured_loading_user_config"
357
+ SUBSCRIPTION = "subscription"
302
358
  TABLE_BUILDER_CONFIG = "table_builder_config"
303
359
  TASK = "task"
304
360
  TASK_BOARD = "task_board"
305
361
  TEMPLATE = "template"
362
+ TEST_ENTITY = "test_entity"
363
+ TIME_SERIES_SEGMENT = "time_series_segment"
306
364
  TIMESHEET_ENTRY = "timesheet_entry"
307
365
  TRAINING_RUN = "training_run"
308
366
  TRAINING_RUN_TEMPLATE = "training_run_template"
@@ -312,6 +370,7 @@ class EntityType(StrEnum):
312
370
  UNITS = "units"
313
371
  USER_FAVORITE = "user_favorite"
314
372
  USER = "user"
373
+ USER_ANALYTICS_EVENT = "user_analytics_event"
315
374
  USER_CERTIFICATION = "user_certification"
316
375
  USER_GROUP = "user_group"
317
376
  USER_LIST_SET = "user_list_set"
@@ -336,10 +395,16 @@ class EntityType(StrEnum):
336
395
  PUBLIC_DATA_SOURCED_CONDITION_PARAMETER = "public_data_sourced_condition_parameter"
337
396
  PUBLIC_DATA_SOURCED_COMPANY = "public_data_sourced_company"
338
397
  UPLOADER = "uploader"
398
+ CALCULATION_MATERIAL_FAMILY = "calculation_material_family"
339
399
 
340
400
 
341
401
  # DO NOT MODIFY -- This file is generated by type_spec
342
- LimitedEntityType = typing.Union[typing.Literal[EntityType.LAB_REQUEST], typing.Literal[EntityType.APPROVAL], typing.Literal[EntityType.CUSTOM_ENTITY], 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.OUTPUT], typing.Literal[EntityType.ASYNC_JOB]]
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
+ ]
343
408
 
344
409
 
345
410
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -352,15 +417,30 @@ class EntityPermissionType(StrEnum):
352
417
 
353
418
 
354
419
  # DO NOT MODIFY -- This file is generated by type_spec
355
- GrantableEntityPermissionType = typing.Union[typing.Literal[EntityPermissionType.READ], typing.Literal[EntityPermissionType.WRITE]]
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
+ ]
356
426
 
357
427
 
358
428
  # DO NOT MODIFY -- This file is generated by type_spec
359
429
  @serial_class(
360
430
  named_type_path="sdk.entity.Entity",
361
431
  )
362
- @dataclasses.dataclass(kw_only=True)
432
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
363
433
  class Entity:
364
434
  id: base_t.ObjectId
365
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
366
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
@@ -20,7 +19,7 @@ __all__: list[str] = [
20
19
  @serial_class(
21
20
  named_type_path="sdk.experiment_groups.SimpleExperimentGroup",
22
21
  )
23
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
24
23
  class SimpleExperimentGroup:
25
24
  experiment_group_id: base_t.ObjectId
26
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
@@ -0,0 +1,34 @@
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 base_t
13
+
14
+ __all__: list[str] = [
15
+ "ExportType",
16
+ "ListingExportUserTimezone",
17
+ ]
18
+
19
+
20
+ # DO NOT MODIFY -- This file is generated by type_spec
21
+ @serial_class(
22
+ named_type_path="sdk.exports.ListingExportUserTimezone",
23
+ )
24
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
25
+ class ListingExportUserTimezone:
26
+ timezone_name: str
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ class ExportType(StrEnum):
31
+ EXCEL = "excel"
32
+ PDF = "pdf"
33
+ JSON = "json"
34
+ # 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
@@ -8,4 +7,23 @@ from .field_values_t import FieldRefNameValue as FieldRefNameValue
8
7
  from .field_values_t import FieldRefIdNameValue as FieldRefIdNameValue
9
8
  from .field_values_t import ArgumentValueRefName as ArgumentValueRefName
10
9
  from .field_values_t import ArgumentValueId as ArgumentValueId
10
+ from .field_values_t import FieldValueType as FieldValueType
11
+ from .field_values_t import FieldValueBase as FieldValueBase
12
+ from .field_values_t import FieldValueFiles as FieldValueFiles
13
+ from .field_values_t import ValueResolution as ValueResolution
14
+ from .field_values_t import FieldValueFieldOption as FieldValueFieldOption
15
+ from .field_values_t import FieldValueFieldOptions as FieldValueFieldOptions
16
+ from .field_values_t import FieldValueId as FieldValueId
17
+ from .field_values_t import FieldValueIds as FieldValueIds
18
+ from .field_values_t import FieldValueText as FieldValueText
19
+ from .field_values_t import FieldValueTexts as FieldValueTexts
20
+ from .field_values_t import FieldValueBoolean as FieldValueBoolean
21
+ from .field_values_t import FieldValueNumeric as FieldValueNumeric
22
+ from .field_values_t import FieldValueBatchReference as FieldValueBatchReference
23
+ from .field_values_t import FieldValueNull as FieldValueNull
24
+ from .field_values_t import FieldValueNotes as FieldValueNotes
25
+ from .field_values_t import FieldValueDate as FieldValueDate
26
+ from .field_values_t import FieldValueDatetime as FieldValueDatetime
27
+ from .field_values_t import FieldValue as FieldValue
28
+ from .field_values_t import FieldArgumentValue as FieldArgumentValue
11
29
  # DO NOT MODIFY -- This file is generated by type_spec