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,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
  from pkgs.serialization import serial_string_enum
12
11
 
13
12
  __all__: list[str] = [
@@ -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.phases.Phase",
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 Phase:
25
24
  id: base_t.ObjectId
26
25
  name: str
@@ -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
  from pkgs.serialization import serial_string_enum
12
11
 
13
12
  __all__: list[str] = [
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -12,5 +11,7 @@ from .queued_job_t import InvocationContextWebhook as InvocationContextWebhook
12
11
  from .queued_job_t import InvocationContext as InvocationContext
13
12
  from .queued_job_t import QueuedJobPayload as QueuedJobPayload
14
13
  from .queued_job_t import QueuedJobResult as QueuedJobResult
14
+ from .queued_job_t import QueuedJobMetadata as QueuedJobMetadata
15
15
  from .queued_job_t import QueuedJob as QueuedJob
16
+ from .queued_job_t import JobStatus as JobStatus
16
17
  # 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,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 pkgs.serialization import serial_union_annotation
@@ -21,7 +20,9 @@ __all__: list[str] = [
21
20
  "InvocationContextManual",
22
21
  "InvocationContextType",
23
22
  "InvocationContextWebhook",
23
+ "JobStatus",
24
24
  "QueuedJob",
25
+ "QueuedJobMetadata",
25
26
  "QueuedJobPayload",
26
27
  "QueuedJobResult",
27
28
  ]
@@ -38,7 +39,7 @@ class InvocationContextType(StrEnum):
38
39
  @serial_class(
39
40
  named_type_path="sdk.queued_job.InvocationContextBase",
40
41
  )
41
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
43
  class InvocationContextBase:
43
44
  type: InvocationContextType
44
45
 
@@ -48,7 +49,7 @@ class InvocationContextBase:
48
49
  named_type_path="sdk.queued_job.InvocationContextCron",
49
50
  parse_require={"type"},
50
51
  )
51
- @dataclasses.dataclass(kw_only=True)
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
52
53
  class InvocationContextCron(InvocationContextBase):
53
54
  type: typing.Literal[InvocationContextType.CRON] = InvocationContextType.CRON
54
55
 
@@ -58,7 +59,7 @@ class InvocationContextCron(InvocationContextBase):
58
59
  named_type_path="sdk.queued_job.InvocationContextManual",
59
60
  parse_require={"type"},
60
61
  )
61
- @dataclasses.dataclass(kw_only=True)
62
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
62
63
  class InvocationContextManual(InvocationContextBase):
63
64
  type: typing.Literal[InvocationContextType.MANUAL] = InvocationContextType.MANUAL
64
65
 
@@ -69,7 +70,7 @@ class InvocationContextManual(InvocationContextBase):
69
70
  unconverted_values={"webhook_payload"},
70
71
  parse_require={"type"},
71
72
  )
72
- @dataclasses.dataclass(kw_only=True)
73
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
73
74
  class InvocationContextWebhook(InvocationContextBase):
74
75
  type: typing.Literal[InvocationContextType.WEBHOOK] = InvocationContextType.WEBHOOK
75
76
  webhook_payload: base_t.JsonValue
@@ -77,7 +78,7 @@ class InvocationContextWebhook(InvocationContextBase):
77
78
 
78
79
  # DO NOT MODIFY -- This file is generated by type_spec
79
80
  InvocationContext = typing.Annotated[
80
- typing.Union[InvocationContextCron, InvocationContextManual, InvocationContextWebhook],
81
+ InvocationContextCron | InvocationContextManual | InvocationContextWebhook,
81
82
  serial_union_annotation(
82
83
  named_type_path="sdk.queued_job.InvocationContext",
83
84
  discriminator="type",
@@ -94,7 +95,7 @@ InvocationContext = typing.Annotated[
94
95
  @serial_class(
95
96
  named_type_path="sdk.queued_job.QueuedJobPayload",
96
97
  )
97
- @dataclasses.dataclass(kw_only=True)
98
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
98
99
  class QueuedJobPayload:
99
100
  invocation_context: InvocationContext
100
101
 
@@ -103,7 +104,7 @@ class QueuedJobPayload:
103
104
  @serial_class(
104
105
  named_type_path="sdk.queued_job.QueuedJobResult",
105
106
  )
106
- @dataclasses.dataclass(kw_only=True)
107
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
107
108
  class QueuedJobResult:
108
109
  queued_job_uuid: str
109
110
  job_result: job_definition_t.JobResult
@@ -111,13 +112,29 @@ class QueuedJobResult:
111
112
 
112
113
  # DO NOT MODIFY -- This file is generated by type_spec
113
114
  @serial_class(
114
- named_type_path="sdk.queued_job.QueuedJob",
115
+ named_type_path="sdk.queued_job.QueuedJobMetadata",
115
116
  )
116
- @dataclasses.dataclass(kw_only=True)
117
- class QueuedJob:
117
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
118
+ class QueuedJobMetadata:
118
119
  queued_job_uuid: str
119
120
  job_ref_name: str
120
121
  num_attempts: int
121
122
  submitted_at: datetime.datetime
123
+ status: JobStatus | None = None
124
+
125
+
126
+ # DO NOT MODIFY -- This file is generated by type_spec
127
+ @serial_class(
128
+ named_type_path="sdk.queued_job.QueuedJob",
129
+ )
130
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
131
+ class QueuedJob(QueuedJobMetadata):
122
132
  payload: QueuedJobPayload
133
+
134
+
135
+ # DO NOT MODIFY -- This file is generated by type_spec
136
+ class JobStatus(StrEnum):
137
+ QUEUED = "queued"
138
+ FAILED = "failed"
139
+ SUCCESS = "success"
123
140
  # 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
@@ -9,6 +8,7 @@ import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
11
+ from pkgs.serialization import serial_alias_annotation
12
12
  from . import base_t
13
13
 
14
14
  __all__: list[str] = [
@@ -25,7 +25,7 @@ __all__: list[str] = [
25
25
  named_type_path="sdk.recipe_identifiers.RecipeIdentifierEditableName",
26
26
  parse_require={"type"},
27
27
  )
28
- @dataclasses.dataclass(kw_only=True)
28
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
29
  class RecipeIdentifierEditableName:
30
30
  type: typing.Literal["name"] = "name"
31
31
  editable_name: str
@@ -37,12 +37,12 @@ class RecipeIdentifierEditableName:
37
37
  to_string_values={"quantity_dec"},
38
38
  parse_require={"type"},
39
39
  )
40
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
41
  class RecipeIdentifierMetadata:
42
42
  type: typing.Literal["metadata"] = "metadata"
43
43
  recipe_metadata_id: base_t.ObjectId
44
- quantity_dec: typing.Optional[Decimal] = None
45
- quantity_json: typing.Optional[str] = None
44
+ quantity_dec: Decimal | None = None
45
+ quantity_json: str | None = None
46
46
 
47
47
 
48
48
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -50,16 +50,26 @@ class RecipeIdentifierMetadata:
50
50
  named_type_path="sdk.recipe_identifiers.RecipeIdentifierMaterialFamily",
51
51
  parse_require={"type"},
52
52
  )
53
- @dataclasses.dataclass(kw_only=True)
53
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
54
54
  class RecipeIdentifierMaterialFamily:
55
55
  type: typing.Literal["material_family_id"] = "material_family_id"
56
56
  material_family_id: base_t.ObjectId
57
57
 
58
58
 
59
59
  # DO NOT MODIFY -- This file is generated by type_spec
60
- RecipeIdentifier = typing.Union[RecipeIdentifierEditableName, RecipeIdentifierMetadata, RecipeIdentifierMaterialFamily]
60
+ RecipeIdentifier = typing.Annotated[
61
+ RecipeIdentifierEditableName | RecipeIdentifierMetadata | RecipeIdentifierMaterialFamily,
62
+ serial_alias_annotation(
63
+ named_type_path="sdk.recipe_identifiers.RecipeIdentifier",
64
+ ),
65
+ ]
61
66
 
62
67
 
63
68
  # DO NOT MODIFY -- This file is generated by type_spec
64
- RecipeIdentifiers = list[RecipeIdentifier]
69
+ RecipeIdentifiers = typing.Annotated[
70
+ list[RecipeIdentifier],
71
+ serial_alias_annotation(
72
+ named_type_path="sdk.recipe_identifiers.RecipeIdentifiers",
73
+ ),
74
+ ]
65
75
  # 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
 
12
11
  __all__: list[str] = [
13
12
  "InputValueType",
@@ -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 pkgs.serialization import serial_string_enum
@@ -45,10 +44,10 @@ class RecipeLinkType(StrEnum):
45
44
  @serial_class(
46
45
  named_type_path="sdk.recipe_links.RecipeLink",
47
46
  )
48
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
47
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
49
48
  class RecipeLink:
50
49
  recipe_id_from: base_t.ObjectId
51
50
  recipe_id_to: base_t.ObjectId
52
51
  link_type: str
53
- name: typing.Optional[str]
52
+ name: str | None
54
53
  # 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
@@ -24,20 +23,20 @@ __all__: list[str] = [
24
23
  unconverted_values={"value_json"},
25
24
  to_string_values={"value_numeric"},
26
25
  )
27
- @dataclasses.dataclass(kw_only=True)
26
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
27
  class MetadataValue:
29
28
  metadata_id: base_t.ObjectId
30
- value_numeric: typing.Optional[Decimal] = None
31
- value_str: typing.Optional[str] = None
32
- value_json: typing.Optional[base_t.JsonValue] = None
33
- value_file_ids: typing.Optional[list[base_t.ObjectId]] = None
29
+ value_numeric: Decimal | None = None
30
+ value_str: str | None = None
31
+ value_json: base_t.JsonValue | None = None
32
+ value_file_ids: list[base_t.ObjectId] | None = None
34
33
 
35
34
 
36
35
  # DO NOT MODIFY -- This file is generated by type_spec
37
36
  @serial_class(
38
37
  named_type_path="sdk.recipe_metadata.SimpleRecipeMetadataField",
39
38
  )
40
- @dataclasses.dataclass(kw_only=True)
39
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
40
  class SimpleRecipeMetadataField:
42
41
  metadata_id: base_t.ObjectId
43
42
  name: str
@@ -50,9 +49,9 @@ class SimpleRecipeMetadataField:
50
49
  unconverted_values={"quantity_json"},
51
50
  to_string_values={"quantity_dec"},
52
51
  )
53
- @dataclasses.dataclass(kw_only=True)
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
54
53
  class RecipeMetadata:
55
54
  metadata_id: base_t.ObjectId
56
- quantity_dec: typing.Optional[Decimal] = None
57
- quantity_json: typing.Optional[base_t.JsonValue] = None
55
+ quantity_dec: Decimal | None = None
56
+ quantity_json: base_t.JsonValue | None = None
58
57
  # 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.recipe_output_metadata.RecipeOutputMetadataField",
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 RecipeOutputMetadataField:
25
24
  id: base_t.ObjectId
26
25
  name: str
@@ -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.recipe_tags.SimpleRecipeTag",
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 SimpleRecipeTag:
25
24
  recipe_tag_id: base_t.ObjectId
26
25
  name: str
@@ -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,10 +6,11 @@ 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 pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
14
  from . import identifier_t
15
15
 
16
16
  __all__: list[str] = [
@@ -35,7 +35,7 @@ class RecipeWorkflowStepIdentifierType(StrEnum):
35
35
  @serial_class(
36
36
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierBase",
37
37
  )
38
- @dataclasses.dataclass(kw_only=True)
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
39
39
  class RecipeWorkflowStepIdentifierBase:
40
40
  type: RecipeWorkflowStepIdentifierType
41
41
 
@@ -45,7 +45,7 @@ class RecipeWorkflowStepIdentifierBase:
45
45
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierDefault",
46
46
  parse_require={"type"},
47
47
  )
48
- @dataclasses.dataclass(kw_only=True)
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
49
49
  class RecipeWorkflowStepIdentifierDefault(RecipeWorkflowStepIdentifierBase):
50
50
  type: typing.Literal[RecipeWorkflowStepIdentifierType.DEFAULT] = RecipeWorkflowStepIdentifierType.DEFAULT
51
51
 
@@ -61,7 +61,7 @@ class RecipeWorkflowStepPosition(StrEnum):
61
61
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierWorkflowStep",
62
62
  parse_require={"type"},
63
63
  )
64
- @dataclasses.dataclass(kw_only=True)
64
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
65
65
  class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase):
66
66
  type: typing.Literal[RecipeWorkflowStepIdentifierType.WORKFLOW_STEP] = RecipeWorkflowStepIdentifierType.WORKFLOW_STEP
67
67
  workflow_step_key: identifier_t.IdentifierKey
@@ -73,7 +73,7 @@ class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase)
73
73
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierKey",
74
74
  parse_require={"type"},
75
75
  )
76
- @dataclasses.dataclass(kw_only=True)
76
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
77
77
  class RecipeWorkflowStepIdentifierKey:
78
78
  type: typing.Literal[RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY] = RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY
79
79
  recipe_workflow_step_key: identifier_t.IdentifierKey
@@ -81,7 +81,7 @@ class RecipeWorkflowStepIdentifierKey:
81
81
 
82
82
  # DO NOT MODIFY -- This file is generated by type_spec
83
83
  RecipeWorkflowStepIdentifier = typing.Annotated[
84
- typing.Union[RecipeWorkflowStepIdentifierDefault, RecipeWorkflowStepIdentifierWorkflowStep, RecipeWorkflowStepIdentifierKey],
84
+ RecipeWorkflowStepIdentifierDefault | RecipeWorkflowStepIdentifierWorkflowStep | RecipeWorkflowStepIdentifierKey,
85
85
  serial_union_annotation(
86
86
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifier",
87
87
  discriminator="type",
@@ -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
@@ -9,6 +8,7 @@ import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
11
+ from . import base_t
12
12
 
13
13
  __all__: list[str] = [
14
14
  "RecipeAttributeFormatting",
@@ -19,7 +19,7 @@ __all__: list[str] = [
19
19
  @serial_class(
20
20
  named_type_path="sdk.recipes.RecipeAttributeFormatting",
21
21
  )
22
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
23
23
  class RecipeAttributeFormatting:
24
24
  background_color: str
25
25
  # 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
@@ -9,6 +8,7 @@ import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
11
+ from . import base_t
12
12
 
13
13
  __all__: list[str] = [
14
14
  "Response",
@@ -20,7 +20,7 @@ __all__: list[str] = [
20
20
  named_type_path="sdk.response.Response",
21
21
  parse_require={"status"},
22
22
  )
23
- @dataclasses.dataclass(kw_only=True)
23
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
24
24
  class Response:
25
25
  status: typing.Literal["ok"] = "ok"
26
26
  # 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,10 +6,11 @@ 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 pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
14
 
15
15
  __all__: list[str] = [
16
16
  "SecretRetrieval",
@@ -25,7 +25,7 @@ __all__: list[str] = [
25
25
  @serial_class(
26
26
  named_type_path="sdk.secret_retrieval.SecretRetrievalBase",
27
27
  )
28
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
28
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
29
29
  class SecretRetrievalBase:
30
30
  type: SecretRetrievalType
31
31
 
@@ -41,7 +41,7 @@ class SecretRetrievalType(StrEnum):
41
41
  named_type_path="sdk.secret_retrieval.SecretRetrievalEnv",
42
42
  parse_require={"type"},
43
43
  )
44
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
45
45
  class SecretRetrievalEnv(SecretRetrievalBase):
46
46
  type: typing.Literal[SecretRetrievalType.ENV] = SecretRetrievalType.ENV
47
47
  env_key: str
@@ -52,17 +52,17 @@ class SecretRetrievalEnv(SecretRetrievalBase):
52
52
  named_type_path="sdk.secret_retrieval.SecretRetrievalAWS",
53
53
  parse_require={"type"},
54
54
  )
55
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
55
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
56
56
  class SecretRetrievalAWS(SecretRetrievalBase):
57
57
  type: typing.Literal[SecretRetrievalType.AWS] = SecretRetrievalType.AWS
58
58
  secret_name: str
59
59
  region: str
60
- sub_key: typing.Optional[str] = None
60
+ sub_key: str | None = None
61
61
 
62
62
 
63
63
  # DO NOT MODIFY -- This file is generated by type_spec
64
64
  SecretRetrieval = typing.Annotated[
65
- typing.Union[SecretRetrievalEnv, SecretRetrievalAWS],
65
+ SecretRetrievalEnv | SecretRetrievalAWS,
66
66
  serial_union_annotation(
67
67
  named_type_path="sdk.secret_retrieval.SecretRetrieval",
68
68
  discriminator="type",
@@ -0,0 +1,20 @@
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 .sockets_t import SocketRequestBase as SocketRequestBase
7
+ from .sockets_t import SocketRequestType as SocketRequestType
8
+ from .sockets_t import SocketRequestIntegrationSession as SocketRequestIntegrationSession
9
+ from .sockets_t import SocketTokenRequest as SocketTokenRequest
10
+ from .sockets_t import SocketTokenResponse as SocketTokenResponse
11
+ from .sockets_t import SocketEventType as SocketEventType
12
+ from .sockets_t import BaseSocketEventData as BaseSocketEventData
13
+ from .sockets_t import UsersInRoomUpdatedEventData as UsersInRoomUpdatedEventData
14
+ from .sockets_t import SocketEventData as SocketEventData
15
+ from .sockets_t import SocketResponse as SocketResponse
16
+ from .sockets_t import SocketClientMessageType as SocketClientMessageType
17
+ from .sockets_t import JoinRoomWithTokenSocketClientMessage as JoinRoomWithTokenSocketClientMessage
18
+ from .sockets_t import SendInstrumentReadingClientMessage as SendInstrumentReadingClientMessage
19
+ from .sockets_t import SocketClientMessage as SocketClientMessage
20
+ # DO NOT MODIFY -- This file is generated by type_spec