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
@@ -0,0 +1,59 @@
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 exports_t
14
+ from ... import identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "Arguments",
18
+ "Data",
19
+ "ENDPOINT_METHOD",
20
+ "ENDPOINT_PATH",
21
+ "ListingAttribute",
22
+ ]
23
+
24
+ ENDPOINT_METHOD = "POST"
25
+ ENDPOINT_PATH = "api/external/entity/export_entities"
26
+
27
+
28
+ # DO NOT MODIFY -- This file is generated by type_spec
29
+ @serial_class(
30
+ named_type_path="sdk.api.entity.export_entities.ListingAttribute",
31
+ unconverted_values={"value"},
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class ListingAttribute:
35
+ key: str
36
+ value: base_t.JsonValue
37
+
38
+
39
+ # DO NOT MODIFY -- This file is generated by type_spec
40
+ @serial_class(
41
+ named_type_path="sdk.api.entity.export_entities.Arguments",
42
+ )
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
+ class Arguments:
45
+ config_key: identifier_t.IdentifierKey
46
+ type: exports_t.ExportType = exports_t.ExportType.EXCEL
47
+ client_timezone: exports_t.ListingExportUserTimezone | None = None
48
+ limit: int | None = None
49
+ attributes: list[ListingAttribute] | None = None
50
+
51
+
52
+ # DO NOT MODIFY -- This file is generated by type_spec
53
+ @serial_class(
54
+ named_type_path="sdk.api.entity.export_entities.Data",
55
+ )
56
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
+ class Data(async_batch_t.AsyncBatchActionReturn):
58
+ pass
59
+ # 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 entity_t
13
13
  from ... import field_values_t
@@ -25,21 +25,30 @@ ENDPOINT_PATH = "api/external/entity/external_get_entities_data"
25
25
 
26
26
 
27
27
  # DO NOT MODIFY -- This file is generated by type_spec
28
- @dataclasses.dataclass(kw_only=True)
28
+ @serial_class(
29
+ named_type_path="sdk.api.entity.get_entities_data.Arguments",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
29
32
  class Arguments:
30
33
  entity_ids: list[base_t.ObjectId]
31
34
  entity_type: entity_t.EntityType
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.entity.get_entities_data.EntityDetails",
40
+ )
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
42
  class EntityDetails:
37
43
  entity: entity_t.Entity
38
44
  field_values: list[field_values_t.FieldRefIdNameValue]
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.entity.get_entities_data.Data",
50
+ )
51
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
43
52
  class Data:
44
53
  entity_details: list[EntityDetails]
45
54
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,48 @@
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 identifier_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/grant_entity_permissions"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.entity.grant_entity_permissions.Arguments",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
+ class Arguments:
33
+ entity_type: entity_t.LimitedEntityType
34
+ entity_key: identifier_t.IdentifierKey
35
+ permission_types: list[entity_t.GrantableEntityPermissionType]
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
+
40
+
41
+ # DO NOT MODIFY -- This file is generated by type_spec
42
+ @serial_class(
43
+ named_type_path="sdk.api.entity.grant_entity_permissions.Data",
44
+ )
45
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
+ class Data(async_batch_t.AsyncBatchActionReturn):
47
+ pass
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",
@@ -28,36 +30,66 @@ ENDPOINT_PATH = "api/external/entity/external_list_entities"
28
30
 
29
31
  # DO NOT MODIFY -- This file is generated by type_spec
30
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
+
52
+ # DO NOT MODIFY -- This file is generated by type_spec
53
+ @serial_class(
54
+ named_type_path="sdk.api.entity.list_entities.Arguments",
31
55
  unconverted_values={"attributes"},
32
56
  )
33
- @dataclasses.dataclass(kw_only=True)
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
58
  class Arguments:
35
59
  config_reference: str
36
- entity_type: typing.Optional[entity_t.EntityType] = None
37
- attributes: typing.Optional[dict[OpaqueKey, base_t.JsonValue]] = None
38
- offset: typing.Optional[typing.Optional[int]] = None
39
- 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
40
65
 
41
66
 
42
67
  # DO NOT MODIFY -- This file is generated by type_spec
43
68
  @serial_class(
69
+ named_type_path="sdk.api.entity.list_entities.EntityResult",
44
70
  unconverted_values={"column_values"},
45
71
  )
46
- @dataclasses.dataclass(kw_only=True)
72
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
47
73
  class EntityResult:
48
74
  entity: entity_t.Entity
49
75
  column_values: list[base_t.JsonValue]
50
76
 
51
77
 
52
78
  # DO NOT MODIFY -- This file is generated by type_spec
53
- @dataclasses.dataclass(kw_only=True)
79
+ @serial_class(
80
+ named_type_path="sdk.api.entity.list_entities.ColumnAccess",
81
+ )
82
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
54
83
  class ColumnAccess:
55
84
  name: str
56
- table_label: typing.Optional[str]
85
+ table_label: str | None
57
86
 
58
87
 
59
88
  # DO NOT MODIFY -- This file is generated by type_spec
60
- @dataclasses.dataclass(kw_only=True)
89
+ @serial_class(
90
+ named_type_path="sdk.api.entity.list_entities.Data",
91
+ )
92
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
61
93
  class Data:
62
94
  columns: list[ColumnAccess]
63
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
@@ -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,15 +25,21 @@ ENDPOINT_PATH = "api/external/entity/external_lock_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.lock_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
- globally_removable: typing.Optional[bool] = None
35
+ globally_removable: bool | 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.entity.lock_entity.Data",
41
+ )
42
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
43
  class Data(async_batch_t.AsyncBatchActionReturn):
37
44
  pass
38
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
@@ -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 entity_t
13
13
 
@@ -24,21 +24,30 @@ ENDPOINT_PATH = "api/external/entity/external_resolve_entity_ids"
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.entity.resolve_entity_ids.Arguments",
29
+ )
30
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
31
  class Arguments:
29
- entity_ids: list[typing.Union[str, base_t.ObjectId]]
32
+ entity_ids: list[str | base_t.ObjectId]
30
33
  entity_type: entity_t.EntityType
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.entity.resolve_entity_ids.EntityNames",
39
+ )
40
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
41
  class EntityNames:
36
- id: typing.Union[str, int]
42
+ id: str | int
37
43
  name: 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.entity.resolve_entity_ids.Data",
49
+ )
50
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
51
  class Data:
43
52
  items: list[EntityNames]
44
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
@@ -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 entity_t
12
13
  from ... import field_values_t
13
14
  from ... import response_t
@@ -24,14 +25,20 @@ ENDPOINT_PATH = "api/external/entity/external_set_values"
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.set_values.Arguments",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
32
  class Arguments:
29
33
  entity: entity_t.Entity
30
34
  values: list[field_values_t.ArgumentValueRefName]
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.set_values.Data",
40
+ )
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
42
  class Data(response_t.Response):
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
@@ -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
@@ -29,9 +30,10 @@ ENDPOINT_PATH = "api/external/entity/transition_entity_phase"
29
30
 
30
31
  # DO NOT MODIFY -- This file is generated by type_spec
31
32
  @serial_class(
33
+ named_type_path="sdk.api.entity.transition_entity_phase.TransitionIdentifierPhases",
32
34
  parse_require={"type"},
33
35
  )
34
- @dataclasses.dataclass(kw_only=True)
36
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
37
  class TransitionIdentifierPhases:
36
38
  type: typing.Literal["phases"] = "phases"
37
39
  phase_from_key: identifier_t.IdentifierKey
@@ -40,27 +42,40 @@ class TransitionIdentifierPhases:
40
42
 
41
43
  # DO NOT MODIFY -- This file is generated by type_spec
42
44
  @serial_class(
45
+ named_type_path="sdk.api.entity.transition_entity_phase.TransitionIdentifierTransition",
43
46
  parse_require={"type"},
44
47
  )
45
- @dataclasses.dataclass(kw_only=True)
48
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
49
  class TransitionIdentifierTransition:
47
50
  type: typing.Literal["transition"] = "transition"
48
51
  transition_key: identifier_t.IdentifierKey
49
52
 
50
53
 
51
54
  # DO NOT MODIFY -- This file is generated by type_spec
52
- 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
+ ]
53
61
 
54
62
 
55
63
  # DO NOT MODIFY -- This file is generated by type_spec
56
- @dataclasses.dataclass(kw_only=True)
64
+ @serial_class(
65
+ named_type_path="sdk.api.entity.transition_entity_phase.Arguments",
66
+ )
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
68
  class Arguments:
58
- entity: entity_t.Entity
59
69
  transition: TransitionIdentifier
70
+ entity: entity_t.Entity | None = None
71
+ entity_identifier: entity_t.EntityIdentifier | None = None
60
72
 
61
73
 
62
74
  # DO NOT MODIFY -- This file is generated by type_spec
63
- @dataclasses.dataclass(kw_only=True)
75
+ @serial_class(
76
+ named_type_path="sdk.api.entity.transition_entity_phase.Data",
77
+ )
78
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
64
79
  class Data(response_t.Response):
65
80
  pass
66
81
  # DO NOT MODIFY -- This file is generated by type_spec