UncountablePythonSDK 0.0.83__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 +3 -5
  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.83.dist-info → uncountablepythonsdk-0.0.132.dist-info}/WHEEL +1 -1
  295. UncountablePythonSDK-0.0.83.dist-info/METADATA +0 -60
  296. UncountablePythonSDK-0.0.83.dist-info/RECORD +0 -292
  297. docs/quickstart.md +0 -19
  298. {UncountablePythonSDK-0.0.83.dist-info → uncountablepythonsdk-0.0.132.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,116 @@
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 async_batch_t
14
+ from ... import base_t
15
+ from ... import entity_t
16
+ from ... import field_values_t
17
+ from ... import identifier_t
18
+
19
+ __all__: list[str] = [
20
+ "Arguments",
21
+ "Data",
22
+ "ENDPOINT_METHOD",
23
+ "ENDPOINT_PATH",
24
+ "LookupEntityCompositeFieldValues",
25
+ "LookupEntityFieldValue",
26
+ "LookupEntityQuery",
27
+ "LookupEntityQueryBase",
28
+ "LookupEntityQueryType",
29
+ "LookupFieldArgumentValue",
30
+ ]
31
+
32
+ ENDPOINT_METHOD = "GET"
33
+ ENDPOINT_PATH = "api/external/entity/lookup_entity"
34
+
35
+
36
+ # DO NOT MODIFY -- This file is generated by type_spec
37
+ class LookupEntityQueryType(StrEnum):
38
+ FIELD_VALUE = "field_value"
39
+ COMPOSITE_FIELD_VALUES = "composite_field_values"
40
+
41
+
42
+ # DO NOT MODIFY -- This file is generated by type_spec
43
+ @serial_class(
44
+ named_type_path="sdk.api.entity.lookup_entity.LookupEntityQueryBase",
45
+ )
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
+ class LookupEntityQueryBase:
48
+ type: LookupEntityQueryType
49
+
50
+
51
+ # DO NOT MODIFY -- This file is generated by type_spec
52
+ @serial_class(
53
+ named_type_path="sdk.api.entity.lookup_entity.LookupFieldArgumentValue",
54
+ unconverted_values={"field_value"},
55
+ )
56
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
+ class LookupFieldArgumentValue:
58
+ field_key: identifier_t.IdentifierKey
59
+ field_value: base_t.JsonValue
60
+ value_resolution: field_values_t.ValueResolution = field_values_t.ValueResolution.DIRECT
61
+
62
+
63
+ # DO NOT MODIFY -- This file is generated by type_spec
64
+ @serial_class(
65
+ named_type_path="sdk.api.entity.lookup_entity.LookupEntityFieldValue",
66
+ parse_require={"type"},
67
+ )
68
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
69
+ class LookupEntityFieldValue:
70
+ type: typing.Literal[LookupEntityQueryType.FIELD_VALUE] = LookupEntityQueryType.FIELD_VALUE
71
+ value: LookupFieldArgumentValue
72
+
73
+
74
+ # DO NOT MODIFY -- This file is generated by type_spec
75
+ @serial_class(
76
+ named_type_path="sdk.api.entity.lookup_entity.LookupEntityCompositeFieldValues",
77
+ parse_require={"type"},
78
+ )
79
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
80
+ class LookupEntityCompositeFieldValues:
81
+ type: typing.Literal[LookupEntityQueryType.COMPOSITE_FIELD_VALUES] = LookupEntityQueryType.COMPOSITE_FIELD_VALUES
82
+ values: list[LookupFieldArgumentValue]
83
+
84
+
85
+ # DO NOT MODIFY -- This file is generated by type_spec
86
+ LookupEntityQuery = typing.Annotated[
87
+ LookupEntityFieldValue | LookupEntityCompositeFieldValues,
88
+ serial_union_annotation(
89
+ named_type_path="sdk.api.entity.lookup_entity.LookupEntityQuery",
90
+ discriminator="type",
91
+ discriminator_map={
92
+ "field_value": LookupEntityFieldValue,
93
+ "composite_field_values": LookupEntityCompositeFieldValues,
94
+ },
95
+ ),
96
+ ]
97
+
98
+
99
+ # DO NOT MODIFY -- This file is generated by type_spec
100
+ @serial_class(
101
+ named_type_path="sdk.api.entity.lookup_entity.Arguments",
102
+ )
103
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
104
+ class Arguments:
105
+ entity_type: entity_t.EntityType
106
+ query: LookupEntityQuery
107
+
108
+
109
+ # DO NOT MODIFY -- This file is generated by type_spec
110
+ @serial_class(
111
+ named_type_path="sdk.api.entity.lookup_entity.Data",
112
+ )
113
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
114
+ class Data(async_batch_t.AsyncBatchActionReturn):
115
+ pass
116
+ # 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
@@ -28,9 +27,9 @@ ENDPOINT_PATH = "api/external/entity/external_resolve_entity_ids"
28
27
  @serial_class(
29
28
  named_type_path="sdk.api.entity.resolve_entity_ids.Arguments",
30
29
  )
31
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
31
  class Arguments:
33
- entity_ids: list[typing.Union[str, base_t.ObjectId]]
32
+ entity_ids: list[str | base_t.ObjectId]
34
33
  entity_type: entity_t.EntityType
35
34
 
36
35
 
@@ -38,9 +37,9 @@ class Arguments:
38
37
  @serial_class(
39
38
  named_type_path="sdk.api.entity.resolve_entity_ids.EntityNames",
40
39
  )
41
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
41
  class EntityNames:
43
- id: typing.Union[str, int]
42
+ id: str | int
44
43
  name: str
45
44
 
46
45
 
@@ -48,7 +47,7 @@ class EntityNames:
48
47
  @serial_class(
49
48
  named_type_path="sdk.api.entity.resolve_entity_ids.Data",
50
49
  )
51
- @dataclasses.dataclass(kw_only=True)
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
52
51
  class Data:
53
52
  items: list[EntityNames]
54
53
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,44 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import async_batch_t
12
+ from ... import base_t
13
+ from ... import entity_t
14
+ from ... import field_values_t
15
+
16
+ __all__: list[str] = [
17
+ "Arguments",
18
+ "Data",
19
+ "ENDPOINT_METHOD",
20
+ "ENDPOINT_PATH",
21
+ ]
22
+
23
+ ENDPOINT_METHOD = "POST"
24
+ ENDPOINT_PATH = "api/external/entity/set_entity_field_values"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.entity.set_entity_field_values.Arguments",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
+ class Arguments:
33
+ entity_identifier: entity_t.EntityIdentifier
34
+ field_values: list[field_values_t.FieldArgumentValue]
35
+
36
+
37
+ # DO NOT MODIFY -- This file is generated by type_spec
38
+ @serial_class(
39
+ named_type_path="sdk.api.entity.set_entity_field_values.Data",
40
+ )
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
+ class Data(async_batch_t.AsyncBatchActionReturn):
43
+ pass
44
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -9,6 +8,7 @@ import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
11
+ from ... import base_t
12
12
  from ... import entity_t
13
13
  from ... import field_values_t
14
14
  from ... import response_t
@@ -28,7 +28,7 @@ ENDPOINT_PATH = "api/external/entity/external_set_values"
28
28
  @serial_class(
29
29
  named_type_path="sdk.api.entity.set_values.Arguments",
30
30
  )
31
- @dataclasses.dataclass(kw_only=True)
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
32
  class Arguments:
33
33
  entity: entity_t.Entity
34
34
  values: list[field_values_t.ArgumentValueRefName]
@@ -38,7 +38,7 @@ class Arguments:
38
38
  @serial_class(
39
39
  named_type_path="sdk.api.entity.set_values.Data",
40
40
  )
41
- @dataclasses.dataclass(kw_only=True)
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
42
  class Data(response_t.Response):
43
43
  pass
44
44
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -9,6 +8,8 @@ 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
+ from ... import base_t
12
13
  from ... import entity_t
13
14
  from ... import identifier_t
14
15
  from ... import response_t
@@ -32,7 +33,7 @@ ENDPOINT_PATH = "api/external/entity/transition_entity_phase"
32
33
  named_type_path="sdk.api.entity.transition_entity_phase.TransitionIdentifierPhases",
33
34
  parse_require={"type"},
34
35
  )
35
- @dataclasses.dataclass(kw_only=True)
36
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
37
  class TransitionIdentifierPhases:
37
38
  type: typing.Literal["phases"] = "phases"
38
39
  phase_from_key: identifier_t.IdentifierKey
@@ -44,31 +45,37 @@ class TransitionIdentifierPhases:
44
45
  named_type_path="sdk.api.entity.transition_entity_phase.TransitionIdentifierTransition",
45
46
  parse_require={"type"},
46
47
  )
47
- @dataclasses.dataclass(kw_only=True)
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
48
49
  class TransitionIdentifierTransition:
49
50
  type: typing.Literal["transition"] = "transition"
50
51
  transition_key: identifier_t.IdentifierKey
51
52
 
52
53
 
53
54
  # DO NOT MODIFY -- This file is generated by type_spec
54
- TransitionIdentifier = typing.Union[TransitionIdentifierPhases, TransitionIdentifierTransition]
55
+ TransitionIdentifier = typing.Annotated[
56
+ TransitionIdentifierPhases | TransitionIdentifierTransition,
57
+ serial_alias_annotation(
58
+ named_type_path="sdk.api.entity.transition_entity_phase.TransitionIdentifier",
59
+ ),
60
+ ]
55
61
 
56
62
 
57
63
  # DO NOT MODIFY -- This file is generated by type_spec
58
64
  @serial_class(
59
65
  named_type_path="sdk.api.entity.transition_entity_phase.Arguments",
60
66
  )
61
- @dataclasses.dataclass(kw_only=True)
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
62
68
  class Arguments:
63
- entity: entity_t.Entity
64
69
  transition: TransitionIdentifier
70
+ entity: entity_t.Entity | None = None
71
+ entity_identifier: entity_t.EntityIdentifier | None = None
65
72
 
66
73
 
67
74
  # DO NOT MODIFY -- This file is generated by type_spec
68
75
  @serial_class(
69
76
  named_type_path="sdk.api.entity.transition_entity_phase.Data",
70
77
  )
71
- @dataclasses.dataclass(kw_only=True)
78
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
72
79
  class Data(response_t.Response):
73
80
  pass
74
81
  # 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
@@ -10,6 +9,7 @@ from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
12
11
  from ... import async_batch_t
12
+ from ... import base_t
13
13
  from ... import entity_t
14
14
  from ... import identifier_t
15
15
 
@@ -28,7 +28,7 @@ ENDPOINT_PATH = "api/external/entity/external_unlock_entity"
28
28
  @serial_class(
29
29
  named_type_path="sdk.api.entity.unlock_entity.Arguments",
30
30
  )
31
- @dataclasses.dataclass(kw_only=True)
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
32
  class Arguments:
33
33
  entity_key: identifier_t.IdentifierKey
34
34
  entity_type: entity_t.EntityType
@@ -38,7 +38,7 @@ class Arguments:
38
38
  @serial_class(
39
39
  named_type_path="sdk.api.entity.unlock_entity.Data",
40
40
  )
41
- @dataclasses.dataclass(kw_only=True)
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
42
  class Data(async_batch_t.AsyncBatchActionReturn):
43
43
  pass
44
44
  # 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
@@ -28,7 +27,7 @@ ENDPOINT_PATH = "api/external/equipment/associate_equipment_input"
28
27
  @serial_class(
29
28
  named_type_path="sdk.api.equipment.associate_equipment_input.Arguments",
30
29
  )
31
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
31
  class Arguments:
33
32
  equipment_key: identifier_t.IdentifierKey
34
33
  material_family_ids: list[base_t.ObjectId]
@@ -38,7 +37,7 @@ class Arguments:
38
37
  @serial_class(
39
38
  named_type_path="sdk.api.equipment.associate_equipment_input.Data",
40
39
  )
41
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
41
  class Data(async_batch_t.AsyncBatchActionReturn):
43
42
  pass
44
43
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -9,6 +8,7 @@ import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
11
+ from ... import base_t
12
12
  from ... import identifier_t
13
13
 
14
14
  __all__: list[str] = [
@@ -27,19 +27,19 @@ ENDPOINT_PATH = "api/external/field_options/upsert_field_options"
27
27
  @serial_class(
28
28
  named_type_path="sdk.api.field_options.upsert_field_options.FieldOption",
29
29
  )
30
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
31
  class FieldOption:
32
32
  option_id: str
33
- option_value: typing.Optional[str] = None
34
- archived: typing.Optional[bool] = None
35
- subsets: typing.Optional[list[str]] = None
33
+ option_value: str | None = None
34
+ archived: bool | None = None
35
+ subsets: list[str] | None = None
36
36
 
37
37
 
38
38
  # DO NOT MODIFY -- This file is generated by type_spec
39
39
  @serial_class(
40
40
  named_type_path="sdk.api.field_options.upsert_field_options.Arguments",
41
41
  )
42
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
43
  class Arguments:
44
44
  option_set_key: identifier_t.IdentifierKey
45
45
  field_options: list[FieldOption]
@@ -49,7 +49,7 @@ class Arguments:
49
49
  @serial_class(
50
50
  named_type_path="sdk.api.field_options.upsert_field_options.Data",
51
51
  )
52
- @dataclasses.dataclass(kw_only=True)
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
53
53
  class Data:
54
54
  pass
55
55
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,77 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from ... import base_t
14
+ from ... import entity_t
15
+ from ... import identifier_t
16
+
17
+ __all__: list[str] = [
18
+ "Arguments",
19
+ "ENDPOINT_METHOD",
20
+ "ENDPOINT_PATH",
21
+ "FileDownloadQuery",
22
+ "FileDownloadQueryBase",
23
+ "FileDownloadQueryEntityField",
24
+ "FileDownloadQueryType",
25
+ ]
26
+
27
+ ENDPOINT_METHOD = "GET"
28
+ ENDPOINT_PATH = "api/external/files/download_file"
29
+
30
+
31
+ # DO NOT MODIFY -- This file is generated by type_spec
32
+ class FileDownloadQueryType(StrEnum):
33
+ ENTITY_FIELD = "entity_field"
34
+
35
+
36
+ # DO NOT MODIFY -- This file is generated by type_spec
37
+ @serial_class(
38
+ named_type_path="sdk.api.files.download_file.FileDownloadQueryBase",
39
+ )
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
+ class FileDownloadQueryBase:
42
+ type: FileDownloadQueryType
43
+
44
+
45
+ # DO NOT MODIFY -- This file is generated by type_spec
46
+ @serial_class(
47
+ named_type_path="sdk.api.files.download_file.FileDownloadQueryEntityField",
48
+ parse_require={"type"},
49
+ )
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
51
+ class FileDownloadQueryEntityField(FileDownloadQueryBase):
52
+ type: typing.Literal[FileDownloadQueryType.ENTITY_FIELD] = FileDownloadQueryType.ENTITY_FIELD
53
+ entity: entity_t.EntityIdentifier
54
+ field_key: identifier_t.IdentifierKey
55
+
56
+
57
+ # DO NOT MODIFY -- This file is generated by type_spec
58
+ FileDownloadQuery = typing.Annotated[
59
+ typing.Union[FileDownloadQueryEntityField],
60
+ serial_union_annotation(
61
+ named_type_path="sdk.api.files.download_file.FileDownloadQuery",
62
+ discriminator="type",
63
+ discriminator_map={
64
+ "entity_field": FileDownloadQueryEntityField,
65
+ },
66
+ ),
67
+ ]
68
+
69
+
70
+ # DO NOT MODIFY -- This file is generated by type_spec
71
+ @serial_class(
72
+ named_type_path="sdk.api.files.download_file.Arguments",
73
+ )
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
75
+ class Arguments:
76
+ file_query: FileDownloadQuery
77
+ # 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
@@ -28,21 +27,21 @@ ENDPOINT_PATH = "api/external/id_source/list_id_source"
28
27
  @serial_class(
29
28
  named_type_path="sdk.api.id_source.list_id_source.Arguments",
30
29
  )
31
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
31
  class Arguments:
33
32
  spec: id_source_t.IdSourceSpec
34
33
  search_label: str
35
- offset: typing.Optional[typing.Optional[int]] = None
36
- limit: typing.Optional[typing.Optional[int]] = None
34
+ offset: int | None = None
35
+ limit: int | None = None
37
36
 
38
37
 
39
38
  # DO NOT MODIFY -- This file is generated by type_spec
40
39
  @serial_class(
41
40
  named_type_path="sdk.api.id_source.list_id_source.IdName",
42
41
  )
43
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
43
  class IdName:
45
- id: typing.Union[base_t.ObjectId, str]
44
+ id: base_t.ObjectId | str
46
45
  name: str
47
46
 
48
47
 
@@ -50,7 +49,7 @@ class IdName:
50
49
  @serial_class(
51
50
  named_type_path="sdk.api.id_source.list_id_source.Data",
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 Data:
55
54
  results: list[IdName]
56
55
  # 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
@@ -28,7 +27,7 @@ ENDPOINT_PATH = "api/external/id_source/match_id_source"
28
27
  @serial_class(
29
28
  named_type_path="sdk.api.id_source.match_id_source.Arguments",
30
29
  )
31
- @dataclasses.dataclass(kw_only=True)
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
31
  class Arguments:
33
32
  spec: id_source_t.IdSourceSpec
34
33
  names: list[str]
@@ -38,17 +37,17 @@ class Arguments:
38
37
  @serial_class(
39
38
  named_type_path="sdk.api.id_source.match_id_source.Match",
40
39
  )
41
- @dataclasses.dataclass(kw_only=True)
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
41
  class Match:
43
42
  name: str
44
- ids: list[typing.Union[base_t.ObjectId, str]]
43
+ ids: list[base_t.ObjectId | str]
45
44
 
46
45
 
47
46
  # DO NOT MODIFY -- This file is generated by type_spec
48
47
  @serial_class(
49
48
  named_type_path="sdk.api.id_source.match_id_source.Data",
50
49
  )
51
- @dataclasses.dataclass(kw_only=True)
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
52
51
  class Data:
53
52
  results: list[Match]
54
53
  # 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
@@ -27,7 +26,7 @@ ENDPOINT_PATH = "api/external/input_groups/external_get_input_group_names"
27
26
  @serial_class(
28
27
  named_type_path="sdk.api.input_groups.get_input_group_names.Arguments",
29
28
  )
30
- @dataclasses.dataclass(kw_only=True)
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
30
  class Arguments:
32
31
  material_family_id: base_t.ObjectId
33
32
 
@@ -36,7 +35,7 @@ class Arguments:
36
35
  @serial_class(
37
36
  named_type_path="sdk.api.input_groups.get_input_group_names.SimpleInputGroup",
38
37
  )
39
- @dataclasses.dataclass(kw_only=True)
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
40
39
  class SimpleInputGroup:
41
40
  input_group_id: base_t.ObjectId
42
41
  name: str
@@ -46,7 +45,7 @@ class SimpleInputGroup:
46
45
  @serial_class(
47
46
  named_type_path="sdk.api.input_groups.get_input_group_names.Data",
48
47
  )
49
- @dataclasses.dataclass(kw_only=True)
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
50
49
  class Data:
51
50
  input_groups: list[SimpleInputGroup]
52
51
  # 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
@@ -10,6 +9,7 @@ from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
12
11
  from ... import base_t
12
+ from ... import field_values_t
13
13
  from ... import input_attributes_t
14
14
  from ... import inputs_t
15
15
 
@@ -30,7 +30,7 @@ ENDPOINT_PATH = "api/external/inputs/external_create_inputs"
30
30
  @serial_class(
31
31
  named_type_path="sdk.api.inputs.create_inputs.Arguments",
32
32
  )
33
- @dataclasses.dataclass(kw_only=True)
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
34
  class Arguments:
35
35
  inputs_to_create: list[InputToCreate]
36
36
 
@@ -39,21 +39,22 @@ class Arguments:
39
39
  @serial_class(
40
40
  named_type_path="sdk.api.inputs.create_inputs.InputToCreate",
41
41
  )
42
- @dataclasses.dataclass(kw_only=True)
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
43
  class InputToCreate:
44
44
  name: str
45
45
  material_family_ids: list[base_t.ObjectId]
46
- quantity_type: typing.Union[typing.Literal[inputs_t.IngredientQuantityType.NUMERIC], typing.Literal[inputs_t.IngredientQuantityType.TEXT]]
47
- type: typing.Union[typing.Literal[inputs_t.IngredientType.INGREDIENT], typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]]
48
- attributes: typing.Optional[list[input_attributes_t.InputAttributeValue]] = None
49
- category_id: typing.Optional[base_t.ObjectId] = None
46
+ quantity_type: typing.Literal[inputs_t.IngredientQuantityType.NUMERIC] | typing.Literal[inputs_t.IngredientQuantityType.TEXT]
47
+ type: typing.Literal[inputs_t.IngredientType.INGREDIENT] | typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]
48
+ attributes: list[input_attributes_t.InputAttributeValue] | None = None
49
+ category_id: base_t.ObjectId | None = None
50
+ field_values: list[field_values_t.FieldRefNameValue] | None = None
50
51
 
51
52
 
52
53
  # DO NOT MODIFY -- This file is generated by type_spec
53
54
  @serial_class(
54
55
  named_type_path="sdk.api.inputs.create_inputs.InputSimple",
55
56
  )
56
- @dataclasses.dataclass(kw_only=True)
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
58
  class InputSimple:
58
59
  input_id: base_t.ObjectId
59
60
 
@@ -62,7 +63,7 @@ class InputSimple:
62
63
  @serial_class(
63
64
  named_type_path="sdk.api.inputs.create_inputs.Data",
64
65
  )
65
- @dataclasses.dataclass(kw_only=True)
66
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
66
67
  class Data:
67
68
  inputs: list[InputSimple]
68
69
  # DO NOT MODIFY -- This file is generated by type_spec