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
@@ -7,15 +6,38 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
10
  import dataclasses
11
11
  from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
12
13
  from . import base_t
14
+ from . import entity_t
15
+ from . import identifier_t
13
16
 
14
17
  __all__: list[str] = [
15
18
  "ArgumentValueId",
16
19
  "ArgumentValueRefName",
20
+ "FieldArgumentValue",
17
21
  "FieldRefIdNameValue",
18
22
  "FieldRefNameValue",
23
+ "FieldValue",
24
+ "FieldValueBase",
25
+ "FieldValueBatchReference",
26
+ "FieldValueBoolean",
27
+ "FieldValueDate",
28
+ "FieldValueDatetime",
29
+ "FieldValueFieldOption",
30
+ "FieldValueFieldOptions",
31
+ "FieldValueFiles",
32
+ "FieldValueId",
33
+ "FieldValueIds",
34
+ "FieldValueNotes",
35
+ "FieldValueNull",
36
+ "FieldValueNumeric",
37
+ "FieldValueText",
38
+ "FieldValueTexts",
39
+ "FieldValueType",
40
+ "ValueResolution",
19
41
  ]
20
42
 
21
43
 
@@ -24,11 +46,11 @@ __all__: list[str] = [
24
46
  named_type_path="sdk.field_values.FieldRefNameValue",
25
47
  unconverted_values={"value"},
26
48
  )
27
- @dataclasses.dataclass(kw_only=True)
49
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
50
  class FieldRefNameValue:
29
51
  field_ref_name: str
30
52
  value: base_t.JsonValue
31
- row_index: typing.Optional[typing.Optional[int]] = None
53
+ row_index: int | None = None
32
54
 
33
55
 
34
56
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -36,12 +58,12 @@ class FieldRefNameValue:
36
58
  named_type_path="sdk.field_values.FieldRefIdNameValue",
37
59
  unconverted_values={"value"},
38
60
  )
39
- @dataclasses.dataclass(kw_only=True)
61
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
40
62
  class FieldRefIdNameValue:
41
63
  field_id: base_t.ObjectId
42
64
  field_ref_name: str
43
65
  value: base_t.JsonValue
44
- row_index: typing.Optional[typing.Optional[int]] = None
66
+ row_index: int | None = None
45
67
 
46
68
 
47
69
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -49,11 +71,11 @@ class FieldRefIdNameValue:
49
71
  named_type_path="sdk.field_values.ArgumentValueRefName",
50
72
  unconverted_values={"value"},
51
73
  )
52
- @dataclasses.dataclass(kw_only=True)
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
53
75
  class ArgumentValueRefName:
54
76
  field_ref_name: str
55
77
  value: base_t.JsonValue
56
- row_index: typing.Optional[typing.Optional[int]] = None
78
+ row_index: int | None = None
57
79
 
58
80
 
59
81
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -61,9 +83,220 @@ class ArgumentValueRefName:
61
83
  named_type_path="sdk.field_values.ArgumentValueId",
62
84
  unconverted_values={"value"},
63
85
  )
64
- @dataclasses.dataclass(kw_only=True)
86
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
65
87
  class ArgumentValueId:
66
88
  field_id: base_t.ObjectId
67
89
  value: base_t.JsonValue
68
- row_index: typing.Optional[typing.Optional[int]] = None
90
+ row_index: int | None = None
91
+
92
+
93
+ # DO NOT MODIFY -- This file is generated by type_spec
94
+ class FieldValueType(StrEnum):
95
+ FILES = "files"
96
+ TEXT = "text"
97
+ TEXTS = "texts"
98
+ ID = "id"
99
+ IDS = "ids"
100
+ BOOLEAN = "boolean"
101
+ NUMERIC = "numeric"
102
+ BATCH_REFERENCE = "batch_reference"
103
+ FIELD_OPTION = "field_option"
104
+ FIELD_OPTIONS = "field_options"
105
+ NULL_VALUE = "null_value"
106
+ NOTES = "notes"
107
+ DATE = "date"
108
+ DATETIME = "datetime"
109
+
110
+
111
+ # DO NOT MODIFY -- This file is generated by type_spec
112
+ @serial_class(
113
+ named_type_path="sdk.field_values.FieldValueBase",
114
+ )
115
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
116
+ class FieldValueBase:
117
+ type: FieldValueType
118
+
119
+
120
+ # DO NOT MODIFY -- This file is generated by type_spec
121
+ @serial_class(
122
+ named_type_path="sdk.field_values.FieldValueFiles",
123
+ parse_require={"type"},
124
+ )
125
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
126
+ class FieldValueFiles(FieldValueBase):
127
+ type: typing.Literal[FieldValueType.FILES] = FieldValueType.FILES
128
+ file_ids: list[base_t.ObjectId]
129
+
130
+
131
+ # DO NOT MODIFY -- This file is generated by type_spec
132
+ class ValueResolution(StrEnum):
133
+ DIRECT = "direct"
134
+ LABEL = "label"
135
+
136
+
137
+ # DO NOT MODIFY -- This file is generated by type_spec
138
+ @serial_class(
139
+ named_type_path="sdk.field_values.FieldValueFieldOption",
140
+ parse_require={"type"},
141
+ )
142
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
143
+ class FieldValueFieldOption(FieldValueBase):
144
+ type: typing.Literal[FieldValueType.FIELD_OPTION] = FieldValueType.FIELD_OPTION
145
+ value: str
146
+ value_resolution: ValueResolution = ValueResolution.DIRECT
147
+
148
+
149
+ # DO NOT MODIFY -- This file is generated by type_spec
150
+ @serial_class(
151
+ named_type_path="sdk.field_values.FieldValueFieldOptions",
152
+ parse_require={"type"},
153
+ )
154
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
155
+ class FieldValueFieldOptions(FieldValueBase):
156
+ type: typing.Literal[FieldValueType.FIELD_OPTIONS] = FieldValueType.FIELD_OPTIONS
157
+ value: list[str]
158
+ value_resolution: ValueResolution = ValueResolution.DIRECT
159
+
160
+
161
+ # DO NOT MODIFY -- This file is generated by type_spec
162
+ @serial_class(
163
+ named_type_path="sdk.field_values.FieldValueId",
164
+ parse_require={"type"},
165
+ )
166
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
167
+ class FieldValueId(FieldValueBase):
168
+ type: typing.Literal[FieldValueType.ID] = FieldValueType.ID
169
+ entity_type: entity_t.EntityType
170
+ identifier_key: identifier_t.IdentifierKey
171
+
172
+
173
+ # DO NOT MODIFY -- This file is generated by type_spec
174
+ @serial_class(
175
+ named_type_path="sdk.field_values.FieldValueIds",
176
+ parse_require={"type"},
177
+ )
178
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
179
+ class FieldValueIds(FieldValueBase):
180
+ type: typing.Literal[FieldValueType.IDS] = FieldValueType.IDS
181
+ entity_type: entity_t.EntityType
182
+ identifier_keys: list[identifier_t.IdentifierKey]
183
+
184
+
185
+ # DO NOT MODIFY -- This file is generated by type_spec
186
+ @serial_class(
187
+ named_type_path="sdk.field_values.FieldValueText",
188
+ parse_require={"type"},
189
+ )
190
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
191
+ class FieldValueText(FieldValueBase):
192
+ type: typing.Literal[FieldValueType.TEXT] = FieldValueType.TEXT
193
+ value: str
194
+
195
+
196
+ # DO NOT MODIFY -- This file is generated by type_spec
197
+ @serial_class(
198
+ named_type_path="sdk.field_values.FieldValueTexts",
199
+ parse_require={"type"},
200
+ )
201
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
202
+ class FieldValueTexts(FieldValueBase):
203
+ type: typing.Literal[FieldValueType.TEXTS] = FieldValueType.TEXTS
204
+ value: list[str]
205
+
206
+
207
+ # DO NOT MODIFY -- This file is generated by type_spec
208
+ @serial_class(
209
+ named_type_path="sdk.field_values.FieldValueBoolean",
210
+ parse_require={"type"},
211
+ )
212
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
213
+ class FieldValueBoolean(FieldValueBase):
214
+ type: typing.Literal[FieldValueType.BOOLEAN] = FieldValueType.BOOLEAN
215
+ value: bool
216
+
217
+
218
+ # DO NOT MODIFY -- This file is generated by type_spec
219
+ @serial_class(
220
+ named_type_path="sdk.field_values.FieldValueNumeric",
221
+ to_string_values={"value"},
222
+ parse_require={"type"},
223
+ )
224
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
225
+ class FieldValueNumeric(FieldValueBase):
226
+ type: typing.Literal[FieldValueType.NUMERIC] = FieldValueType.NUMERIC
227
+ value: Decimal
228
+
229
+
230
+ # DO NOT MODIFY -- This file is generated by type_spec
231
+ @serial_class(
232
+ named_type_path="sdk.field_values.FieldValueBatchReference",
233
+ parse_require={"type"},
234
+ )
235
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
236
+ class FieldValueBatchReference(FieldValueBase):
237
+ type: typing.Literal[FieldValueType.BATCH_REFERENCE] = FieldValueType.BATCH_REFERENCE
238
+ reference_key: identifier_t.IdentifierKeyBatchReference
239
+ data_key: str
240
+
241
+
242
+ # DO NOT MODIFY -- This file is generated by type_spec
243
+ @serial_class(
244
+ named_type_path="sdk.field_values.FieldValueNull",
245
+ parse_require={"type"},
246
+ )
247
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
248
+ class FieldValueNull(FieldValueBase):
249
+ type: typing.Literal[FieldValueType.NULL_VALUE] = FieldValueType.NULL_VALUE
250
+
251
+
252
+ # DO NOT MODIFY -- This file is generated by type_spec
253
+ @serial_class(
254
+ named_type_path="sdk.field_values.FieldValueNotes",
255
+ parse_require={"type"},
256
+ )
257
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
258
+ class FieldValueNotes(FieldValueBase):
259
+ type: typing.Literal[FieldValueType.NOTES] = FieldValueType.NOTES
260
+ value: str
261
+
262
+
263
+ # DO NOT MODIFY -- This file is generated by type_spec
264
+ @serial_class(
265
+ named_type_path="sdk.field_values.FieldValueDate",
266
+ parse_require={"type"},
267
+ )
268
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
269
+ class FieldValueDate(FieldValueBase):
270
+ type: typing.Literal[FieldValueType.DATE] = FieldValueType.DATE
271
+ value: datetime.date
272
+
273
+
274
+ # DO NOT MODIFY -- This file is generated by type_spec
275
+ @serial_class(
276
+ named_type_path="sdk.field_values.FieldValueDatetime",
277
+ parse_require={"type"},
278
+ )
279
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
280
+ class FieldValueDatetime(FieldValueBase):
281
+ type: typing.Literal[FieldValueType.DATETIME] = FieldValueType.DATETIME
282
+ value: datetime.datetime
283
+
284
+
285
+ # DO NOT MODIFY -- This file is generated by type_spec
286
+ FieldValue = typing.Annotated[
287
+ FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueTexts | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull | FieldValueNotes | FieldValueDate | FieldValueDatetime,
288
+ serial_union_annotation(
289
+ named_type_path="sdk.field_values.FieldValue",
290
+ ),
291
+ ]
292
+
293
+
294
+ # DO NOT MODIFY -- This file is generated by type_spec
295
+ @serial_class(
296
+ named_type_path="sdk.field_values.FieldArgumentValue",
297
+ )
298
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
299
+ class FieldArgumentValue:
300
+ field_key: identifier_t.IdentifierKey
301
+ value: FieldValue
69
302
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -20,7 +19,7 @@ __all__: list[str] = [
20
19
  @serial_class(
21
20
  named_type_path="sdk.fields.Field",
22
21
  )
23
- @dataclasses.dataclass(kw_only=True)
22
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
24
23
  class Field:
25
24
  id: base_t.ObjectId
26
25
  name: str
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,10 +6,11 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
14
  from . import identifier_t
15
15
 
16
16
  __all__: list[str] = [
@@ -29,18 +29,18 @@ __all__: list[str] = [
29
29
  @serial_class(
30
30
  named_type_path="sdk.generic_upload.GenericRemoteDirectoryScope",
31
31
  )
32
- @dataclasses.dataclass(kw_only=True)
32
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
33
  class GenericRemoteDirectoryScope:
34
34
  src_path: str
35
35
  success_archive_path: str
36
36
  failure_archive_path: str
37
37
  recursive: bool
38
38
  prepend_date_on_archive: bool
39
- valid_file_extensions: list[str]
40
- filename_regex: typing.Optional[str] = None
41
- max_files: typing.Optional[int] = None
42
- detection_keyword: typing.Optional[str] = None
43
- delimiter: typing.Optional[str] = None
39
+ valid_file_extensions: list[str] | None = None
40
+ filename_regex: str | None = None
41
+ max_files: int | None = None
42
+ detection_keyword: str | None = None
43
+ delimiter: str | None = None
44
44
 
45
45
 
46
46
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -54,7 +54,7 @@ class UploadDestinationType(StrEnum):
54
54
  @serial_class(
55
55
  named_type_path="sdk.generic_upload.UploadDestinationBase",
56
56
  )
57
- @dataclasses.dataclass(kw_only=True)
57
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
58
58
  class UploadDestinationBase:
59
59
  type: UploadDestinationType
60
60
 
@@ -64,7 +64,7 @@ class UploadDestinationBase:
64
64
  named_type_path="sdk.generic_upload.UploadDestinationProject",
65
65
  parse_require={"type"},
66
66
  )
67
- @dataclasses.dataclass(kw_only=True)
67
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
68
68
  class UploadDestinationProject(UploadDestinationBase):
69
69
  type: typing.Literal[UploadDestinationType.PROJECT] = UploadDestinationType.PROJECT
70
70
  project_key: identifier_t.IdentifierKey
@@ -75,7 +75,7 @@ class UploadDestinationProject(UploadDestinationBase):
75
75
  named_type_path="sdk.generic_upload.UploadDestinationMaterialFamily",
76
76
  parse_require={"type"},
77
77
  )
78
- @dataclasses.dataclass(kw_only=True)
78
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
79
79
  class UploadDestinationMaterialFamily(UploadDestinationBase):
80
80
  type: typing.Literal[UploadDestinationType.MATERIAL_FAMILY] = UploadDestinationType.MATERIAL_FAMILY
81
81
  material_family_key: identifier_t.IdentifierKey
@@ -86,7 +86,7 @@ class UploadDestinationMaterialFamily(UploadDestinationBase):
86
86
  named_type_path="sdk.generic_upload.UploadDestinationRecipe",
87
87
  parse_require={"type"},
88
88
  )
89
- @dataclasses.dataclass(kw_only=True)
89
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
90
90
  class UploadDestinationRecipe(UploadDestinationBase):
91
91
  type: typing.Literal[UploadDestinationType.RECIPE] = UploadDestinationType.RECIPE
92
92
  recipe_key: identifier_t.IdentifierKey
@@ -94,7 +94,7 @@ class UploadDestinationRecipe(UploadDestinationBase):
94
94
 
95
95
  # DO NOT MODIFY -- This file is generated by type_spec
96
96
  UploadDestination = typing.Annotated[
97
- typing.Union[UploadDestinationProject, UploadDestinationMaterialFamily, UploadDestinationRecipe],
97
+ UploadDestinationProject | UploadDestinationMaterialFamily | UploadDestinationRecipe,
98
98
  serial_union_annotation(
99
99
  named_type_path="sdk.generic_upload.UploadDestination",
100
100
  discriminator="type",
@@ -111,7 +111,7 @@ UploadDestination = typing.Annotated[
111
111
  @serial_class(
112
112
  named_type_path="sdk.generic_upload.GenericUploadStrategy",
113
113
  )
114
- @dataclasses.dataclass(kw_only=True)
114
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
115
115
  class GenericUploadStrategy:
116
116
  uploader_key: identifier_t.IdentifierKey
117
117
  destinations: list[UploadDestination]
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -9,6 +8,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
 
14
15
  __all__: list[str] = [
@@ -24,7 +25,7 @@ __all__: list[str] = [
24
25
  @serial_class(
25
26
  named_type_path="sdk.id_source.IdSourceSpecBase",
26
27
  )
27
- @dataclasses.dataclass(kw_only=True)
28
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
28
29
  class IdSourceSpecBase:
29
30
  pass
30
31
 
@@ -33,7 +34,7 @@ class IdSourceSpecBase:
33
34
  @serial_class(
34
35
  named_type_path="sdk.id_source.IdSourceSpecEntity",
35
36
  )
36
- @dataclasses.dataclass(kw_only=True)
37
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
37
38
  class IdSourceSpecEntity(IdSourceSpecBase):
38
39
  entity_type: entity_t.EntityType
39
40
 
@@ -42,7 +43,7 @@ class IdSourceSpecEntity(IdSourceSpecBase):
42
43
  @serial_class(
43
44
  named_type_path="sdk.id_source.IdSourceSpecCustomEntity",
44
45
  )
45
- @dataclasses.dataclass(kw_only=True)
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
47
  class IdSourceSpecCustomEntity(IdSourceSpecBase):
47
48
  definition_ref_name: str
48
49
 
@@ -51,12 +52,17 @@ class IdSourceSpecCustomEntity(IdSourceSpecBase):
51
52
  @serial_class(
52
53
  named_type_path="sdk.id_source.IdSourceSpecFieldOptions",
53
54
  )
54
- @dataclasses.dataclass(kw_only=True)
55
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
55
56
  class IdSourceSpecFieldOptions(IdSourceSpecBase):
56
57
  set_ref_name: str
57
- subset_ref_name: typing.Optional[str] = None
58
+ subset_ref_name: str | None = None
58
59
 
59
60
 
60
61
  # DO NOT MODIFY -- This file is generated by type_spec
61
- IdSourceSpec = typing.Union[IdSourceSpecEntity, IdSourceSpecCustomEntity, IdSourceSpecFieldOptions]
62
+ IdSourceSpec = typing.Annotated[
63
+ IdSourceSpecEntity | IdSourceSpecCustomEntity | IdSourceSpecFieldOptions,
64
+ serial_alias_annotation(
65
+ named_type_path="sdk.id_source.IdSourceSpec",
66
+ ),
67
+ ]
62
68
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -9,6 +8,7 @@ import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
9
  import dataclasses
11
10
  from pkgs.serialization import serial_class
11
+ from pkgs.serialization import serial_alias_annotation
12
12
  from . import base_t
13
13
 
14
14
  __all__: list[str] = [
@@ -24,7 +24,7 @@ __all__: list[str] = [
24
24
  named_type_path="sdk.identifier.IdentifierKeyId",
25
25
  parse_require={"type"},
26
26
  )
27
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
27
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
28
28
  class IdentifierKeyId:
29
29
  type: typing.Literal["id"] = "id"
30
30
  id: base_t.ObjectId
@@ -35,7 +35,7 @@ class IdentifierKeyId:
35
35
  named_type_path="sdk.identifier.IdentifierKeyRefName",
36
36
  parse_require={"type"},
37
37
  )
38
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
38
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
39
39
  class IdentifierKeyRefName:
40
40
  type: typing.Literal["ref_name"] = "ref_name"
41
41
  ref_name: str
@@ -46,12 +46,17 @@ class IdentifierKeyRefName:
46
46
  named_type_path="sdk.identifier.IdentifierKeyBatchReference",
47
47
  parse_require={"type"},
48
48
  )
49
- @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
49
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
50
50
  class IdentifierKeyBatchReference:
51
51
  type: typing.Literal["batch_reference"] = "batch_reference"
52
52
  reference: str
53
53
 
54
54
 
55
55
  # DO NOT MODIFY -- This file is generated by type_spec
56
- IdentifierKey = typing.Union[IdentifierKeyId, IdentifierKeyBatchReference, IdentifierKeyRefName]
56
+ IdentifierKey = typing.Annotated[
57
+ IdentifierKeyId | IdentifierKeyBatchReference | IdentifierKeyRefName,
58
+ serial_alias_annotation(
59
+ named_type_path="sdk.identifier.IdentifierKey",
60
+ ),
61
+ ]
57
62
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -22,9 +21,9 @@ __all__: list[str] = [
22
21
  unconverted_values={"quantity_json"},
23
22
  to_string_values={"quantity_dec"},
24
23
  )
25
- @dataclasses.dataclass(kw_only=True)
24
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
26
25
  class InputAttributeValue:
27
26
  attribute_id: base_t.ObjectId
28
- quantity_dec: typing.Optional[Decimal] = None
29
- quantity_json: typing.Optional[base_t.JsonValue] = None
27
+ quantity_dec: Decimal | None = None
28
+ quantity_json: base_t.JsonValue | None = None
30
29
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,7 +6,7 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from pkgs.serialization import serial_string_enum
@@ -72,12 +71,12 @@ class IngredientBehavior(StrEnum):
72
71
  @serial_class(
73
72
  named_type_path="sdk.inputs.SimpleInput",
74
73
  )
75
- @dataclasses.dataclass(kw_only=True)
74
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
76
75
  class SimpleInput:
77
76
  input_id: base_t.ObjectId
78
77
  quantity_type: IngredientQuantityType
79
78
  name: str
80
79
  is_parameter: bool
81
- intermediate_recipe_id: typing.Optional[base_t.ObjectId]
80
+ intermediate_recipe_id: base_t.ObjectId | None
82
81
  input_type: str
83
82
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,4 +1,3 @@
1
- # flake8: noqa: F821
2
1
  # ruff: noqa: E402 Q003
3
2
  # fmt: off
4
3
  # isort: skip_file
@@ -1,5 +1,4 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
- # flake8: noqa: F821
3
2
  # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
@@ -7,14 +6,16 @@ from __future__ import annotations
7
6
  import typing # noqa: F401
8
7
  import datetime # noqa: F401
9
8
  from decimal import Decimal # noqa: F401
10
- from pkgs.strenum_compat import StrEnum
9
+ from enum import StrEnum
11
10
  import dataclasses
12
11
  from pkgs.serialization import serial_class
13
12
  from . import auth_retrieval_t
13
+ from . import base_t
14
14
  from . import client_config_t
15
15
 
16
16
  __all__: list[str] = [
17
17
  "EnvironmentConfig",
18
+ "INTEGRATION_SERVER_RUN_UUID_FIELD_REF_NAME",
18
19
  "IntegrationEnvironment",
19
20
  ]
20
21
 
@@ -22,16 +23,24 @@ __all__: list[str] = [
22
23
  # DO NOT MODIFY -- This file is generated by type_spec
23
24
  class IntegrationEnvironment(StrEnum):
24
25
  LOCAL = "local"
26
+ DEV = "dev"
27
+ TEST = "test"
25
28
  PROD = "prod"
29
+ STG = "stg"
30
+ SBX = "sbx"
26
31
 
27
32
 
28
33
  # DO NOT MODIFY -- This file is generated by type_spec
29
34
  @serial_class(
30
35
  named_type_path="sdk.integration_server.EnvironmentConfig",
31
36
  )
32
- @dataclasses.dataclass(kw_only=True)
37
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
33
38
  class EnvironmentConfig:
34
39
  auth_retrieval: auth_retrieval_t.AuthRetrieval
35
40
  base_url: str
36
- client_options: typing.Optional[client_config_t.ClientConfigOptions] = None
41
+ client_options: client_config_t.ClientConfigOptions | None = None
42
+
43
+
44
+ # DO NOT MODIFY -- This file is generated by type_spec
45
+ INTEGRATION_SERVER_RUN_UUID_FIELD_REF_NAME = "unc_integration_server_run_uuid"
37
46
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,10 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .integration_session_t import IntegrationSessionType as IntegrationSessionType
7
+ from .integration_session_t import IntegrationSessionBase as IntegrationSessionBase
8
+ from .integration_session_t import IntegrationSessionInstrument as IntegrationSessionInstrument
9
+ from .integration_session_t import IntegrationSession as IntegrationSession
10
+ # DO NOT MODIFY -- This file is generated by type_spec