UncountablePythonSDK 0.0.52__py3-none-any.whl → 0.0.131__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of UncountablePythonSDK might be problematic. Click here for more details.

Files changed (316) hide show
  1. docs/conf.py +54 -7
  2. docs/index.md +107 -4
  3. docs/integration_examples/create_ingredient.md +43 -0
  4. docs/integration_examples/create_output.md +56 -0
  5. docs/integration_examples/index.md +6 -0
  6. docs/justfile +2 -2
  7. docs/requirements.txt +6 -4
  8. examples/async_batch.py +3 -3
  9. examples/basic_auth.py +7 -0
  10. examples/create_entity.py +3 -1
  11. examples/create_ingredient_sdk.py +34 -0
  12. examples/download_files.py +26 -0
  13. examples/edit_recipe_inputs.py +4 -2
  14. examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
  15. examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
  16. examples/integration-server/jobs/materials_auto/example_http.py +47 -0
  17. examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
  18. examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
  19. examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
  20. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
  21. examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
  22. examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
  23. examples/integration-server/pyproject.toml +224 -0
  24. examples/invoke_uploader.py +4 -1
  25. examples/oauth.py +7 -0
  26. examples/set_recipe_metadata_file.py +40 -0
  27. examples/set_recipe_output_file_sdk.py +26 -0
  28. examples/upload_files.py +1 -2
  29. pkgs/argument_parser/__init__.py +9 -0
  30. pkgs/argument_parser/_is_namedtuple.py +3 -0
  31. pkgs/argument_parser/argument_parser.py +217 -70
  32. pkgs/filesystem_utils/__init__.py +1 -0
  33. pkgs/filesystem_utils/_blob_session.py +144 -0
  34. pkgs/filesystem_utils/_gdrive_session.py +10 -7
  35. pkgs/filesystem_utils/_s3_session.py +15 -13
  36. pkgs/filesystem_utils/_sftp_session.py +11 -7
  37. pkgs/filesystem_utils/file_type_utils.py +30 -10
  38. pkgs/py.typed +0 -0
  39. pkgs/serialization/__init__.py +7 -2
  40. pkgs/serialization/annotation.py +64 -0
  41. pkgs/serialization/missing_sentry.py +1 -1
  42. pkgs/serialization/opaque_key.py +1 -1
  43. pkgs/serialization/serial_alias.py +47 -0
  44. pkgs/serialization/serial_class.py +47 -26
  45. pkgs/serialization/serial_generic.py +16 -0
  46. pkgs/serialization/serial_union.py +17 -14
  47. pkgs/serialization/yaml.py +4 -1
  48. pkgs/serialization_util/__init__.py +6 -0
  49. pkgs/serialization_util/dataclasses.py +14 -0
  50. pkgs/serialization_util/serialization_helpers.py +15 -5
  51. pkgs/type_spec/actions_registry/__main__.py +0 -4
  52. pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
  53. pkgs/type_spec/builder.py +354 -119
  54. pkgs/type_spec/builder_types.py +9 -0
  55. pkgs/type_spec/config.py +51 -11
  56. pkgs/type_spec/cross_output_links.py +99 -0
  57. pkgs/type_spec/emit_io_ts.py +1 -1
  58. pkgs/type_spec/emit_open_api.py +127 -36
  59. pkgs/type_spec/emit_open_api_util.py +5 -6
  60. pkgs/type_spec/emit_python.py +329 -121
  61. pkgs/type_spec/emit_typescript.py +117 -256
  62. pkgs/type_spec/emit_typescript_util.py +291 -2
  63. pkgs/type_spec/load_types.py +18 -4
  64. pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
  65. pkgs/type_spec/open_api_util.py +29 -4
  66. pkgs/type_spec/parts/base.py.prepart +13 -10
  67. pkgs/type_spec/parts/base.ts.prepart +4 -0
  68. pkgs/type_spec/type_info/__main__.py +3 -1
  69. pkgs/type_spec/type_info/emit_type_info.py +124 -29
  70. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  71. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
  72. pkgs/type_spec/util.py +4 -4
  73. pkgs/type_spec/value_spec/__main__.py +26 -9
  74. pkgs/type_spec/value_spec/convert_type.py +21 -1
  75. pkgs/type_spec/value_spec/emit_python.py +25 -7
  76. pkgs/type_spec/value_spec/types.py +1 -1
  77. uncountable/core/async_batch.py +1 -1
  78. uncountable/core/client.py +142 -39
  79. uncountable/core/environment.py +41 -0
  80. uncountable/core/file_upload.py +52 -18
  81. uncountable/integration/cli.py +142 -0
  82. uncountable/integration/construct_client.py +8 -8
  83. uncountable/integration/cron.py +11 -37
  84. uncountable/integration/db/connect.py +12 -2
  85. uncountable/integration/db/session.py +25 -0
  86. uncountable/integration/entrypoint.py +8 -37
  87. uncountable/integration/executors/executors.py +125 -2
  88. uncountable/integration/executors/generic_upload_executor.py +87 -29
  89. uncountable/integration/executors/script_executor.py +3 -3
  90. uncountable/integration/http_server/__init__.py +5 -0
  91. uncountable/integration/http_server/types.py +69 -0
  92. uncountable/integration/job.py +242 -12
  93. uncountable/integration/queue_runner/__init__.py +0 -0
  94. uncountable/integration/queue_runner/command_server/__init__.py +28 -0
  95. uncountable/integration/queue_runner/command_server/command_client.py +133 -0
  96. uncountable/integration/queue_runner/command_server/command_server.py +142 -0
  97. uncountable/integration/queue_runner/command_server/constants.py +4 -0
  98. uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  99. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
  100. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
  101. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
  102. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
  103. uncountable/integration/queue_runner/command_server/types.py +75 -0
  104. uncountable/integration/queue_runner/datastore/__init__.py +3 -0
  105. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
  106. uncountable/integration/queue_runner/datastore/interface.py +29 -0
  107. uncountable/integration/queue_runner/datastore/model.py +24 -0
  108. uncountable/integration/queue_runner/job_scheduler.py +200 -0
  109. uncountable/integration/queue_runner/queue_runner.py +34 -0
  110. uncountable/integration/queue_runner/types.py +7 -0
  111. uncountable/integration/queue_runner/worker.py +116 -0
  112. uncountable/integration/scan_profiles.py +67 -0
  113. uncountable/integration/scheduler.py +199 -0
  114. uncountable/integration/secret_retrieval/retrieve_secret.py +26 -4
  115. uncountable/integration/server.py +94 -69
  116. uncountable/integration/telemetry.py +150 -34
  117. uncountable/integration/webhook_server/entrypoint.py +97 -0
  118. uncountable/types/__init__.py +78 -1
  119. uncountable/types/api/batch/execute_batch.py +13 -6
  120. uncountable/types/api/batch/execute_batch_load_async.py +9 -3
  121. uncountable/types/api/chemical/convert_chemical_formats.py +17 -5
  122. uncountable/types/api/condition_parameters/__init__.py +1 -0
  123. uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
  124. uncountable/types/api/entity/create_entities.py +19 -7
  125. uncountable/types/api/entity/create_entity.py +17 -8
  126. uncountable/types/api/entity/create_or_update_entity.py +48 -0
  127. uncountable/types/api/entity/export_entities.py +59 -0
  128. uncountable/types/api/entity/get_entities_data.py +13 -4
  129. uncountable/types/api/entity/grant_entity_permissions.py +48 -0
  130. uncountable/types/api/entity/list_aggregate.py +79 -0
  131. uncountable/types/api/entity/list_entities.py +42 -10
  132. uncountable/types/api/entity/lock_entity.py +11 -4
  133. uncountable/types/api/entity/lookup_entity.py +116 -0
  134. uncountable/types/api/entity/resolve_entity_ids.py +15 -6
  135. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  136. uncountable/types/api/entity/set_values.py +10 -3
  137. uncountable/types/api/entity/transition_entity_phase.py +22 -7
  138. uncountable/types/api/entity/unlock_entity.py +10 -3
  139. uncountable/types/api/equipment/associate_equipment_input.py +9 -3
  140. uncountable/types/api/field_options/upsert_field_options.py +17 -7
  141. uncountable/types/api/files/__init__.py +1 -0
  142. uncountable/types/api/files/download_file.py +77 -0
  143. uncountable/types/api/id_source/list_id_source.py +16 -7
  144. uncountable/types/api/id_source/match_id_source.py +14 -5
  145. uncountable/types/api/input_groups/get_input_group_names.py +13 -4
  146. uncountable/types/api/inputs/create_inputs.py +23 -9
  147. uncountable/types/api/inputs/get_input_data.py +30 -12
  148. uncountable/types/api/inputs/get_input_names.py +16 -7
  149. uncountable/types/api/inputs/get_inputs_data.py +25 -7
  150. uncountable/types/api/inputs/set_input_attribute_values.py +12 -6
  151. uncountable/types/api/inputs/set_input_category.py +12 -5
  152. uncountable/types/api/inputs/set_input_subcategories.py +10 -3
  153. uncountable/types/api/inputs/set_intermediate_type.py +11 -4
  154. uncountable/types/api/integrations/__init__.py +1 -0
  155. uncountable/types/api/integrations/publish_realtime_data.py +41 -0
  156. uncountable/types/api/integrations/push_notification.py +49 -0
  157. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  158. uncountable/types/api/listing/__init__.py +1 -0
  159. uncountable/types/api/listing/fetch_listing.py +58 -0
  160. uncountable/types/api/material_families/update_entity_material_families.py +10 -4
  161. uncountable/types/api/notebooks/__init__.py +1 -0
  162. uncountable/types/api/notebooks/add_notebook_content.py +119 -0
  163. uncountable/types/api/outputs/get_output_data.py +28 -13
  164. uncountable/types/api/outputs/get_output_names.py +15 -6
  165. uncountable/types/api/outputs/get_output_organization.py +173 -0
  166. uncountable/types/api/outputs/resolve_output_conditions.py +20 -8
  167. uncountable/types/api/permissions/set_core_permissions.py +26 -10
  168. uncountable/types/api/project/get_projects.py +16 -7
  169. uncountable/types/api/project/get_projects_data.py +17 -8
  170. uncountable/types/api/recipe_links/create_recipe_link.py +12 -5
  171. uncountable/types/api/recipe_links/remove_recipe_link.py +11 -4
  172. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +16 -7
  173. uncountable/types/api/recipes/add_recipe_to_project.py +10 -3
  174. uncountable/types/api/recipes/add_time_series_data.py +64 -0
  175. uncountable/types/api/recipes/archive_recipes.py +11 -4
  176. uncountable/types/api/recipes/associate_recipe_as_input.py +12 -5
  177. uncountable/types/api/recipes/associate_recipe_as_lot.py +10 -3
  178. uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
  179. uncountable/types/api/recipes/create_mix_order.py +44 -0
  180. uncountable/types/api/recipes/create_recipe.py +15 -9
  181. uncountable/types/api/recipes/create_recipes.py +21 -9
  182. uncountable/types/api/recipes/disassociate_recipe_as_input.py +10 -3
  183. uncountable/types/api/recipes/edit_recipe_inputs.py +134 -22
  184. uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
  185. uncountable/types/api/recipes/get_curve.py +11 -5
  186. uncountable/types/api/recipes/get_recipe_calculations.py +13 -7
  187. uncountable/types/api/recipes/get_recipe_links.py +10 -4
  188. uncountable/types/api/recipes/get_recipe_names.py +13 -4
  189. uncountable/types/api/recipes/get_recipe_output_metadata.py +12 -6
  190. uncountable/types/api/recipes/get_recipes_data.py +87 -33
  191. uncountable/types/api/recipes/lock_recipes.py +19 -8
  192. uncountable/types/api/recipes/remove_recipe_from_project.py +10 -3
  193. uncountable/types/api/recipes/set_recipe_inputs.py +16 -10
  194. uncountable/types/api/recipes/set_recipe_metadata.py +10 -3
  195. uncountable/types/api/recipes/set_recipe_output_annotations.py +24 -12
  196. uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
  197. uncountable/types/api/recipes/set_recipe_outputs.py +35 -12
  198. uncountable/types/api/recipes/set_recipe_tags.py +26 -9
  199. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  200. uncountable/types/api/recipes/unarchive_recipes.py +10 -3
  201. uncountable/types/api/recipes/unlock_recipes.py +14 -6
  202. uncountable/types/api/runsheet/__init__.py +1 -0
  203. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  204. uncountable/types/api/triggers/run_trigger.py +11 -4
  205. uncountable/types/api/uploader/complete_async_parse.py +46 -0
  206. uncountable/types/api/uploader/invoke_uploader.py +13 -6
  207. uncountable/types/api/user/__init__.py +1 -0
  208. uncountable/types/api/user/get_current_user_info.py +40 -0
  209. uncountable/types/async_batch.py +2 -1
  210. uncountable/types/async_batch_processor.py +618 -18
  211. uncountable/types/async_batch_t.py +54 -7
  212. uncountable/types/async_jobs.py +8 -0
  213. uncountable/types/async_jobs_t.py +52 -0
  214. uncountable/types/auth_retrieval.py +11 -0
  215. uncountable/types/auth_retrieval_t.py +75 -0
  216. uncountable/types/base.py +0 -1
  217. uncountable/types/base_t.py +13 -11
  218. uncountable/types/calculations.py +0 -1
  219. uncountable/types/calculations_t.py +5 -2
  220. uncountable/types/chemical_structure.py +0 -1
  221. uncountable/types/chemical_structure_t.py +6 -5
  222. uncountable/types/client_base.py +751 -70
  223. uncountable/types/client_config.py +1 -1
  224. uncountable/types/client_config_t.py +17 -3
  225. uncountable/types/curves.py +0 -1
  226. uncountable/types/curves_t.py +10 -7
  227. uncountable/types/data.py +12 -0
  228. uncountable/types/data_t.py +103 -0
  229. uncountable/types/entity.py +4 -1
  230. uncountable/types/entity_t.py +125 -7
  231. uncountable/types/experiment_groups.py +0 -1
  232. uncountable/types/experiment_groups_t.py +5 -2
  233. uncountable/types/exports.py +8 -0
  234. uncountable/types/exports_t.py +34 -0
  235. uncountable/types/field_values.py +19 -1
  236. uncountable/types/field_values_t.py +246 -9
  237. uncountable/types/fields.py +0 -1
  238. uncountable/types/fields_t.py +5 -2
  239. uncountable/types/generic_upload.py +6 -1
  240. uncountable/types/generic_upload_t.py +88 -9
  241. uncountable/types/id_source.py +0 -1
  242. uncountable/types/id_source_t.py +26 -7
  243. uncountable/types/identifier.py +0 -1
  244. uncountable/types/identifier_t.py +13 -5
  245. uncountable/types/input_attributes.py +0 -1
  246. uncountable/types/input_attributes_t.py +4 -4
  247. uncountable/types/inputs.py +1 -1
  248. uncountable/types/inputs_t.py +24 -4
  249. uncountable/types/integration_server.py +8 -0
  250. uncountable/types/integration_server_t.py +46 -0
  251. uncountable/types/integration_session.py +10 -0
  252. uncountable/types/integration_session_t.py +60 -0
  253. uncountable/types/integrations.py +10 -0
  254. uncountable/types/integrations_t.py +62 -0
  255. uncountable/types/job_definition.py +4 -6
  256. uncountable/types/job_definition_t.py +96 -65
  257. uncountable/types/listing.py +9 -0
  258. uncountable/types/listing_t.py +51 -0
  259. uncountable/types/notices.py +8 -0
  260. uncountable/types/notices_t.py +37 -0
  261. uncountable/types/notifications.py +11 -0
  262. uncountable/types/notifications_t.py +74 -0
  263. uncountable/types/outputs.py +0 -1
  264. uncountable/types/outputs_t.py +6 -3
  265. uncountable/types/overrides.py +9 -0
  266. uncountable/types/overrides_t.py +49 -0
  267. uncountable/types/permissions.py +0 -1
  268. uncountable/types/permissions_t.py +1 -2
  269. uncountable/types/phases.py +0 -1
  270. uncountable/types/phases_t.py +5 -2
  271. uncountable/types/post_base.py +0 -1
  272. uncountable/types/post_base_t.py +1 -2
  273. uncountable/types/queued_job.py +17 -0
  274. uncountable/types/queued_job_t.py +140 -0
  275. uncountable/types/recipe_identifiers.py +0 -1
  276. uncountable/types/recipe_identifiers_t.py +21 -8
  277. uncountable/types/recipe_inputs.py +0 -1
  278. uncountable/types/recipe_inputs_t.py +1 -2
  279. uncountable/types/recipe_links.py +0 -1
  280. uncountable/types/recipe_links_t.py +7 -4
  281. uncountable/types/recipe_metadata.py +0 -1
  282. uncountable/types/recipe_metadata_t.py +14 -9
  283. uncountable/types/recipe_output_metadata.py +0 -1
  284. uncountable/types/recipe_output_metadata_t.py +5 -2
  285. uncountable/types/recipe_tags.py +0 -1
  286. uncountable/types/recipe_tags_t.py +5 -2
  287. uncountable/types/recipe_workflow_steps.py +0 -1
  288. uncountable/types/recipe_workflow_steps_t.py +14 -7
  289. uncountable/types/recipes.py +0 -1
  290. uncountable/types/recipes_t.py +6 -2
  291. uncountable/types/response.py +0 -1
  292. uncountable/types/response_t.py +3 -2
  293. uncountable/types/secret_retrieval.py +0 -1
  294. uncountable/types/secret_retrieval_t.py +13 -7
  295. uncountable/types/sockets.py +20 -0
  296. uncountable/types/sockets_t.py +169 -0
  297. uncountable/types/structured_filters.py +25 -0
  298. uncountable/types/structured_filters_t.py +248 -0
  299. uncountable/types/units.py +0 -1
  300. uncountable/types/units_t.py +5 -2
  301. uncountable/types/uploader.py +24 -0
  302. uncountable/types/uploader_t.py +222 -0
  303. uncountable/types/users.py +0 -1
  304. uncountable/types/users_t.py +5 -2
  305. uncountable/types/webhook_job.py +9 -0
  306. uncountable/types/webhook_job_t.py +48 -0
  307. uncountable/types/workflows.py +0 -1
  308. uncountable/types/workflows_t.py +10 -4
  309. uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
  310. uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
  311. {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
  312. UncountablePythonSDK-0.0.52.dist-info/METADATA +0 -56
  313. UncountablePythonSDK-0.0.52.dist-info/RECORD +0 -246
  314. docs/quickstart.md +0 -19
  315. uncountable/core/version.py +0 -11
  316. {UncountablePythonSDK-0.0.52.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -8,7 +7,9 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import async_batch_t
12
+ from ... import base_t
12
13
  from ... import entity_t
13
14
  from ... import identifier_t
14
15
 
@@ -24,14 +25,20 @@ ENDPOINT_PATH = "api/external/entity/external_unlock_entity"
24
25
 
25
26
 
26
27
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclasses.dataclass(kw_only=True)
28
+ @serial_class(
29
+ named_type_path="sdk.api.entity.unlock_entity.Arguments",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
32
  class Arguments:
29
33
  entity_key: identifier_t.IdentifierKey
30
34
  entity_type: entity_t.EntityType
31
35
 
32
36
 
33
37
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclasses.dataclass(kw_only=True)
38
+ @serial_class(
39
+ named_type_path="sdk.api.entity.unlock_entity.Data",
40
+ )
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
42
  class Data(async_batch_t.AsyncBatchActionReturn):
36
43
  pass
37
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
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import async_batch_t
12
12
  from ... import base_t
13
13
  from ... import identifier_t
@@ -24,14 +24,20 @@ ENDPOINT_PATH = "api/external/equipment/associate_equipment_input"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclasses.dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.equipment.associate_equipment_input.Arguments",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
31
  class Arguments:
29
32
  equipment_key: identifier_t.IdentifierKey
30
33
  material_family_ids: list[base_t.ObjectId]
31
34
 
32
35
 
33
36
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclasses.dataclass(kw_only=True)
37
+ @serial_class(
38
+ named_type_path="sdk.api.equipment.associate_equipment_input.Data",
39
+ )
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
41
  class Data(async_batch_t.AsyncBatchActionReturn):
36
42
  pass
37
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
@@ -8,6 +7,8 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import base_t
11
12
  from ... import identifier_t
12
13
 
13
14
  __all__: list[str] = [
@@ -23,23 +24,32 @@ ENDPOINT_PATH = "api/external/field_options/upsert_field_options"
23
24
 
24
25
 
25
26
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclasses.dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.field_options.upsert_field_options.FieldOption",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
31
  class FieldOption:
28
32
  option_id: str
29
- option_value: typing.Optional[str] = None
30
- archived: typing.Optional[bool] = None
31
- subsets: typing.Optional[list[str]] = None
33
+ option_value: str | None = None
34
+ archived: bool | None = None
35
+ subsets: list[str] | None = None
32
36
 
33
37
 
34
38
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclasses.dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.field_options.upsert_field_options.Arguments",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
43
  class Arguments:
37
44
  option_set_key: identifier_t.IdentifierKey
38
45
  field_options: list[FieldOption]
39
46
 
40
47
 
41
48
  # DO NOT MODIFY -- This file is generated by type_spec
42
- @dataclasses.dataclass(kw_only=True)
49
+ @serial_class(
50
+ named_type_path="sdk.api.field_options.upsert_field_options.Data",
51
+ )
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
53
  class Data:
44
54
  pass
45
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
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
12
  from ... import id_source_t
13
13
 
@@ -24,23 +24,32 @@ ENDPOINT_PATH = "api/external/id_source/list_id_source"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclasses.dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.id_source.list_id_source.Arguments",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
31
  class Arguments:
29
32
  spec: id_source_t.IdSourceSpec
30
33
  search_label: str
31
- offset: typing.Optional[typing.Optional[int]] = None
32
- limit: typing.Optional[typing.Optional[int]] = None
34
+ offset: int | None = None
35
+ limit: int | None = None
33
36
 
34
37
 
35
38
  # DO NOT MODIFY -- This file is generated by type_spec
36
- @dataclasses.dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.id_source.list_id_source.IdName",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
37
43
  class IdName:
38
- id: typing.Union[base_t.ObjectId, str]
44
+ id: base_t.ObjectId | str
39
45
  name: str
40
46
 
41
47
 
42
48
  # DO NOT MODIFY -- This file is generated by type_spec
43
- @dataclasses.dataclass(kw_only=True)
49
+ @serial_class(
50
+ named_type_path="sdk.api.id_source.list_id_source.Data",
51
+ )
52
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
53
  class Data:
45
54
  results: list[IdName]
46
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
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
12
  from ... import id_source_t
13
13
 
@@ -24,21 +24,30 @@ ENDPOINT_PATH = "api/external/id_source/match_id_source"
24
24
 
25
25
 
26
26
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclasses.dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.id_source.match_id_source.Arguments",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
31
  class Arguments:
29
32
  spec: id_source_t.IdSourceSpec
30
33
  names: list[str]
31
34
 
32
35
 
33
36
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclasses.dataclass(kw_only=True)
37
+ @serial_class(
38
+ named_type_path="sdk.api.id_source.match_id_source.Match",
39
+ )
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
41
  class Match:
36
42
  name: str
37
- ids: list[typing.Union[base_t.ObjectId, str]]
43
+ ids: list[base_t.ObjectId | str]
38
44
 
39
45
 
40
46
  # DO NOT MODIFY -- This file is generated by type_spec
41
- @dataclasses.dataclass(kw_only=True)
47
+ @serial_class(
48
+ named_type_path="sdk.api.id_source.match_id_source.Data",
49
+ )
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
51
  class Data:
43
52
  results: list[Match]
44
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
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
12
 
13
13
  __all__: list[str] = [
@@ -23,20 +23,29 @@ ENDPOINT_PATH = "api/external/input_groups/external_get_input_group_names"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclasses.dataclass(kw_only=True)
26
+ @serial_class(
27
+ named_type_path="sdk.api.input_groups.get_input_group_names.Arguments",
28
+ )
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
30
  class Arguments:
28
31
  material_family_id: base_t.ObjectId
29
32
 
30
33
 
31
34
  # DO NOT MODIFY -- This file is generated by type_spec
32
- @dataclasses.dataclass(kw_only=True)
35
+ @serial_class(
36
+ named_type_path="sdk.api.input_groups.get_input_group_names.SimpleInputGroup",
37
+ )
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
39
  class SimpleInputGroup:
34
40
  input_group_id: base_t.ObjectId
35
41
  name: str
36
42
 
37
43
 
38
44
  # DO NOT MODIFY -- This file is generated by type_spec
39
- @dataclasses.dataclass(kw_only=True)
45
+ @serial_class(
46
+ named_type_path="sdk.api.input_groups.get_input_group_names.Data",
47
+ )
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
40
49
  class Data:
41
50
  input_groups: list[SimpleInputGroup]
42
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
@@ -8,7 +7,9 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
+ from ... import field_values_t
12
13
  from ... import input_attributes_t
13
14
  from ... import inputs_t
14
15
 
@@ -26,30 +27,43 @@ ENDPOINT_PATH = "api/external/inputs/external_create_inputs"
26
27
 
27
28
 
28
29
  # DO NOT MODIFY -- This file is generated by type_spec
29
- @dataclasses.dataclass(kw_only=True)
30
+ @serial_class(
31
+ named_type_path="sdk.api.inputs.create_inputs.Arguments",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
30
34
  class Arguments:
31
35
  inputs_to_create: list[InputToCreate]
32
36
 
33
37
 
34
38
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclasses.dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.create_inputs.InputToCreate",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
43
  class InputToCreate:
37
44
  name: str
38
45
  material_family_ids: list[base_t.ObjectId]
39
- quantity_type: typing.Union[typing.Literal[inputs_t.IngredientQuantityType.NUMERIC], typing.Literal[inputs_t.IngredientQuantityType.TEXT]]
40
- type: typing.Union[typing.Literal[inputs_t.IngredientType.INGREDIENT], typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]]
41
- attributes: typing.Optional[list[input_attributes_t.InputAttributeValue]] = None
42
- 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
43
51
 
44
52
 
45
53
  # DO NOT MODIFY -- This file is generated by type_spec
46
- @dataclasses.dataclass(kw_only=True)
54
+ @serial_class(
55
+ named_type_path="sdk.api.inputs.create_inputs.InputSimple",
56
+ )
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
58
  class InputSimple:
48
59
  input_id: base_t.ObjectId
49
60
 
50
61
 
51
62
  # DO NOT MODIFY -- This file is generated by type_spec
52
- @dataclasses.dataclass(kw_only=True)
63
+ @serial_class(
64
+ named_type_path="sdk.api.inputs.create_inputs.Data",
65
+ )
66
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
53
67
  class Data:
54
68
  inputs: list[InputSimple]
55
69
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
12
  from ... import input_attributes_t
13
13
 
@@ -27,17 +27,23 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_data"
27
27
 
28
28
 
29
29
  # DO NOT MODIFY -- This file is generated by type_spec
30
- @dataclasses.dataclass(kw_only=True)
30
+ @serial_class(
31
+ named_type_path="sdk.api.inputs.get_input_data.Arguments",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
34
  class Arguments:
32
35
  material_family_id: base_t.ObjectId
33
- input_ids: typing.Optional[list[base_t.ObjectId]]
34
- is_parameter: typing.Optional[bool]
35
- offset: typing.Optional[typing.Optional[int]] = None
36
- limit: typing.Optional[typing.Optional[int]] = None
36
+ input_ids: list[base_t.ObjectId] | None
37
+ is_parameter: bool | None
38
+ offset: int | None = None
39
+ limit: int | None = None
37
40
 
38
41
 
39
42
  # DO NOT MODIFY -- This file is generated by type_spec
40
- @dataclasses.dataclass(kw_only=True)
43
+ @serial_class(
44
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputAttr",
45
+ )
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
47
  class SimpleInputAttr:
42
48
  attribute_id: base_t.ObjectId
43
49
  name: str
@@ -45,33 +51,45 @@ class SimpleInputAttr:
45
51
 
46
52
 
47
53
  # DO NOT MODIFY -- This file is generated by type_spec
48
- @dataclasses.dataclass(kw_only=True)
54
+ @serial_class(
55
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputGlobalCategory",
56
+ )
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
49
58
  class SimpleInputGlobalCategory:
50
59
  category_id: base_t.ObjectId
51
60
  name: str
52
61
 
53
62
 
54
63
  # DO NOT MODIFY -- This file is generated by type_spec
55
- @dataclasses.dataclass(kw_only=True)
64
+ @serial_class(
65
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputSubcategory",
66
+ )
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
56
68
  class SimpleInputSubcategory:
57
69
  subcategory_id: base_t.ObjectId
58
70
  name: str
59
71
 
60
72
 
61
73
  # DO NOT MODIFY -- This file is generated by type_spec
62
- @dataclasses.dataclass(kw_only=True)
74
+ @serial_class(
75
+ named_type_path="sdk.api.inputs.get_input_data.FullInput",
76
+ )
77
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
63
78
  class FullInput:
64
79
  input_id: base_t.ObjectId
65
80
  name: str
66
81
  quantity_type: str
67
82
  is_parameter: bool
68
83
  attributes: list[input_attributes_t.InputAttributeValue]
69
- global_category_id: typing.Optional[base_t.ObjectId]
84
+ global_category_id: base_t.ObjectId | None
70
85
  subcategory_ids: list[base_t.ObjectId]
71
86
 
72
87
 
73
88
  # DO NOT MODIFY -- This file is generated by type_spec
74
- @dataclasses.dataclass(kw_only=True)
89
+ @serial_class(
90
+ named_type_path="sdk.api.inputs.get_input_data.Data",
91
+ )
92
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
75
93
  class Data:
76
94
  inputs: list[FullInput]
77
95
  attrs: list[SimpleInputAttr]
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
12
 
13
13
  __all__: list[str] = [
@@ -23,23 +23,32 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_names"
23
23
 
24
24
 
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
- @dataclasses.dataclass(kw_only=True)
26
+ @serial_class(
27
+ named_type_path="sdk.api.inputs.get_input_names.Arguments",
28
+ )
29
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
27
30
  class Arguments:
28
31
  material_family_id: base_t.ObjectId
29
- is_parameter: typing.Optional[bool]
30
- offset: typing.Optional[typing.Optional[int]] = None
31
- limit: typing.Optional[typing.Optional[int]] = None
32
+ is_parameter: bool | None
33
+ offset: int | None = None
34
+ limit: int | None = None
32
35
 
33
36
 
34
37
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclasses.dataclass(kw_only=True)
38
+ @serial_class(
39
+ named_type_path="sdk.api.inputs.get_input_names.InputWithName",
40
+ )
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
42
  class InputWithName:
37
43
  input_id: base_t.ObjectId
38
44
  name: str
39
45
 
40
46
 
41
47
  # DO NOT MODIFY -- This file is generated by type_spec
42
- @dataclasses.dataclass(kw_only=True)
48
+ @serial_class(
49
+ named_type_path="sdk.api.inputs.get_input_names.Data",
50
+ )
51
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
52
  class Data:
44
53
  inputs: list[InputWithName]
45
54
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -8,6 +7,7 @@ import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
10
+ from pkgs.serialization import serial_class
11
11
  from ... import base_t
12
12
  from ... import input_attributes_t
13
13
 
@@ -27,13 +27,19 @@ ENDPOINT_PATH = "api/external/inputs/external_get_inputs_data"
27
27
 
28
28
 
29
29
  # DO NOT MODIFY -- This file is generated by type_spec
30
- @dataclasses.dataclass(kw_only=True)
30
+ @serial_class(
31
+ named_type_path="sdk.api.inputs.get_inputs_data.Arguments",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
31
34
  class Arguments:
32
35
  input_ids: list[base_t.ObjectId]
33
36
 
34
37
 
35
38
  # DO NOT MODIFY -- This file is generated by type_spec
36
- @dataclasses.dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.get_inputs_data.AttributeDetails",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
37
43
  class AttributeDetails:
38
44
  attribute_id: base_t.ObjectId
39
45
  name: str
@@ -41,14 +47,20 @@ class AttributeDetails:
41
47
 
42
48
 
43
49
  # DO NOT MODIFY -- This file is generated by type_spec
44
- @dataclasses.dataclass(kw_only=True)
50
+ @serial_class(
51
+ named_type_path="sdk.api.inputs.get_inputs_data.InputTag",
52
+ )
53
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
45
54
  class InputTag:
46
55
  tag_id: base_t.ObjectId
47
56
  tag_name: str
48
57
 
49
58
 
50
59
  # DO NOT MODIFY -- This file is generated by type_spec
51
- @dataclasses.dataclass(kw_only=True)
60
+ @serial_class(
61
+ named_type_path="sdk.api.inputs.get_inputs_data.InputCategory",
62
+ )
63
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
52
64
  class InputCategory:
53
65
  material_family_id: base_t.ObjectId
54
66
  category_id: base_t.ObjectId
@@ -56,7 +68,10 @@ class InputCategory:
56
68
 
57
69
 
58
70
  # DO NOT MODIFY -- This file is generated by type_spec
59
- @dataclasses.dataclass(kw_only=True)
71
+ @serial_class(
72
+ named_type_path="sdk.api.inputs.get_inputs_data.InputDetails",
73
+ )
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
60
75
  class InputDetails:
61
76
  input_id: base_t.ObjectId
62
77
  name: str
@@ -68,7 +83,10 @@ class InputDetails:
68
83
 
69
84
 
70
85
  # DO NOT MODIFY -- This file is generated by type_spec
71
- @dataclasses.dataclass(kw_only=True)
86
+ @serial_class(
87
+ named_type_path="sdk.api.inputs.get_inputs_data.Data",
88
+ )
89
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
72
90
  class Data:
73
91
  input_details: list[InputDetails]
74
92
  input_attributes: list[AttributeDetails]