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,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,21 +28,21 @@ ENDPOINT_PATH = "api/external/entity/grant_entity_permissions"
28
28
  @serial_class(
29
29
  named_type_path="sdk.api.entity.grant_entity_permissions.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_type: entity_t.LimitedEntityType
34
34
  entity_key: identifier_t.IdentifierKey
35
35
  permission_types: list[entity_t.GrantableEntityPermissionType]
36
- user_keys: typing.Optional[list[identifier_t.IdentifierKey]] = None
37
- user_group_keys: typing.Optional[list[identifier_t.IdentifierKey]] = None
38
- all_users: typing.Optional[bool] = None
36
+ user_keys: list[identifier_t.IdentifierKey] | None = None
37
+ user_group_keys: list[identifier_t.IdentifierKey] | None = None
38
+ all_users: bool | None = None
39
39
 
40
40
 
41
41
  # DO NOT MODIFY -- This file is generated by type_spec
42
42
  @serial_class(
43
43
  named_type_path="sdk.api.entity.grant_entity_permissions.Data",
44
44
  )
45
- @dataclasses.dataclass(kw_only=True)
45
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
46
  class Data(async_batch_t.AsyncBatchActionReturn):
47
47
  pass
48
48
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,79 @@
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 base_t
12
+
13
+ __all__: list[str] = [
14
+ "Arguments",
15
+ "AttributeValue",
16
+ "ColumnAccess",
17
+ "ColumnResults",
18
+ "Data",
19
+ "ENDPOINT_METHOD",
20
+ "ENDPOINT_PATH",
21
+ ]
22
+
23
+ ENDPOINT_METHOD = "GET"
24
+ ENDPOINT_PATH = "api/external/entity/list_aggregate"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.entity.list_aggregate.AttributeValue",
30
+ unconverted_values={"value"},
31
+ )
32
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
+ class AttributeValue:
34
+ name: str
35
+ value: base_t.JsonValue
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.api.entity.list_aggregate.Arguments",
41
+ unconverted_values={"attribute_values"},
42
+ )
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
+ class Arguments:
45
+ config_reference: str
46
+ attribute_values: list[AttributeValue] | None = None
47
+ offset: int | None = None
48
+ limit: int | None = None
49
+
50
+
51
+ # DO NOT MODIFY -- This file is generated by type_spec
52
+ @serial_class(
53
+ named_type_path="sdk.api.entity.list_aggregate.ColumnResults",
54
+ unconverted_values={"column_values"},
55
+ )
56
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
+ class ColumnResults:
58
+ column_values: list[base_t.JsonValue]
59
+
60
+
61
+ # DO NOT MODIFY -- This file is generated by type_spec
62
+ @serial_class(
63
+ named_type_path="sdk.api.entity.list_aggregate.ColumnAccess",
64
+ )
65
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
66
+ class ColumnAccess:
67
+ name: str
68
+ table_label: str | None
69
+
70
+
71
+ # DO NOT MODIFY -- This file is generated by type_spec
72
+ @serial_class(
73
+ named_type_path="sdk.api.entity.list_aggregate.Data",
74
+ )
75
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
76
+ class Data:
77
+ columns: list[ColumnAccess]
78
+ results: list[ColumnResults]
79
+ # 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
@@ -12,9 +11,12 @@ from pkgs.serialization import serial_class
12
11
  from pkgs.serialization import OpaqueKey
13
12
  from ... import base_t
14
13
  from ... import entity_t
14
+ from ... import identifier_t
15
15
 
16
16
  __all__: list[str] = [
17
+ "AdditionalFilterConfig",
17
18
  "Arguments",
19
+ "AttributeValue",
18
20
  "ColumnAccess",
19
21
  "Data",
20
22
  "ENDPOINT_METHOD",
@@ -26,18 +28,40 @@ ENDPOINT_METHOD = "GET"
26
28
  ENDPOINT_PATH = "api/external/entity/external_list_entities"
27
29
 
28
30
 
31
+ # DO NOT MODIFY -- This file is generated by type_spec
32
+ @serial_class(
33
+ named_type_path="sdk.api.entity.list_entities.AttributeValue",
34
+ unconverted_values={"value"},
35
+ )
36
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
37
+ class AttributeValue:
38
+ name: str
39
+ value: base_t.JsonValue
40
+
41
+
42
+ # DO NOT MODIFY -- This file is generated by type_spec
43
+ @serial_class(
44
+ named_type_path="sdk.api.entity.list_entities.AdditionalFilterConfig",
45
+ )
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
+ class AdditionalFilterConfig:
48
+ config_key: identifier_t.IdentifierKey
49
+ attribute_values: list[AttributeValue] | None = None
50
+
51
+
29
52
  # DO NOT MODIFY -- This file is generated by type_spec
30
53
  @serial_class(
31
54
  named_type_path="sdk.api.entity.list_entities.Arguments",
32
55
  unconverted_values={"attributes"},
33
56
  )
34
- @dataclasses.dataclass(kw_only=True)
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
58
  class Arguments:
36
59
  config_reference: str
37
- entity_type: typing.Optional[entity_t.EntityType] = None
38
- attributes: typing.Optional[dict[OpaqueKey, base_t.JsonValue]] = None
39
- offset: typing.Optional[typing.Optional[int]] = None
40
- limit: typing.Optional[typing.Optional[int]] = None
60
+ entity_type: entity_t.EntityType | None = None
61
+ attributes: dict[OpaqueKey, base_t.JsonValue] | None = None
62
+ offset: int | None = None
63
+ limit: int | None = None
64
+ additional_filter_configs: list[AdditionalFilterConfig] | None = None
41
65
 
42
66
 
43
67
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -45,7 +69,7 @@ class Arguments:
45
69
  named_type_path="sdk.api.entity.list_entities.EntityResult",
46
70
  unconverted_values={"column_values"},
47
71
  )
48
- @dataclasses.dataclass(kw_only=True)
72
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
49
73
  class EntityResult:
50
74
  entity: entity_t.Entity
51
75
  column_values: list[base_t.JsonValue]
@@ -55,17 +79,17 @@ class EntityResult:
55
79
  @serial_class(
56
80
  named_type_path="sdk.api.entity.list_entities.ColumnAccess",
57
81
  )
58
- @dataclasses.dataclass(kw_only=True)
82
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
59
83
  class ColumnAccess:
60
84
  name: str
61
- table_label: typing.Optional[str]
85
+ table_label: str | None
62
86
 
63
87
 
64
88
  # DO NOT MODIFY -- This file is generated by type_spec
65
89
  @serial_class(
66
90
  named_type_path="sdk.api.entity.list_entities.Data",
67
91
  )
68
- @dataclasses.dataclass(kw_only=True)
92
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
69
93
  class Data:
70
94
  columns: list[ColumnAccess]
71
95
  results: list[EntityResult]
@@ -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,18 +28,18 @@ ENDPOINT_PATH = "api/external/entity/external_lock_entity"
28
28
  @serial_class(
29
29
  named_type_path="sdk.api.entity.lock_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
35
- globally_removable: typing.Optional[bool] = None
35
+ globally_removable: bool | 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.entity.lock_entity.Data",
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 Data(async_batch_t.AsyncBatchActionReturn):
44
44
  pass
45
45
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -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