UncountablePythonSDK 0.0.83__py3-none-any.whl → 0.0.132__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (298) hide show
  1. docs/conf.py +54 -7
  2. docs/index.md +107 -4
  3. docs/integration_examples/create_ingredient.md +43 -0
  4. docs/integration_examples/create_output.md +56 -0
  5. docs/integration_examples/index.md +6 -0
  6. docs/justfile +2 -2
  7. docs/requirements.txt +6 -4
  8. examples/basic_auth.py +7 -0
  9. examples/create_ingredient_sdk.py +34 -0
  10. examples/download_files.py +26 -0
  11. examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
  12. examples/integration-server/jobs/materials_auto/example_cron.py +3 -0
  13. examples/integration-server/jobs/materials_auto/example_http.py +47 -0
  14. examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
  15. examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
  16. examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
  17. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
  18. examples/integration-server/jobs/materials_auto/example_wh.py +17 -9
  19. examples/integration-server/jobs/materials_auto/profile.yaml +61 -0
  20. examples/integration-server/pyproject.toml +10 -10
  21. examples/oauth.py +7 -0
  22. examples/set_recipe_metadata_file.py +1 -1
  23. examples/upload_files.py +1 -2
  24. pkgs/argument_parser/__init__.py +8 -0
  25. pkgs/argument_parser/_is_namedtuple.py +3 -0
  26. pkgs/argument_parser/argument_parser.py +196 -63
  27. pkgs/filesystem_utils/__init__.py +1 -0
  28. pkgs/filesystem_utils/_blob_session.py +144 -0
  29. pkgs/filesystem_utils/_gdrive_session.py +5 -5
  30. pkgs/filesystem_utils/_s3_session.py +2 -1
  31. pkgs/filesystem_utils/_sftp_session.py +6 -3
  32. pkgs/filesystem_utils/file_type_utils.py +30 -10
  33. pkgs/serialization/__init__.py +7 -2
  34. pkgs/serialization/annotation.py +64 -0
  35. pkgs/serialization/missing_sentry.py +1 -1
  36. pkgs/serialization/opaque_key.py +1 -1
  37. pkgs/serialization/serial_alias.py +47 -0
  38. pkgs/serialization/serial_class.py +40 -48
  39. pkgs/serialization/serial_generic.py +16 -0
  40. pkgs/serialization/serial_union.py +16 -16
  41. pkgs/serialization_util/__init__.py +6 -0
  42. pkgs/serialization_util/dataclasses.py +14 -0
  43. pkgs/serialization_util/serialization_helpers.py +15 -5
  44. pkgs/type_spec/actions_registry/__main__.py +0 -4
  45. pkgs/type_spec/actions_registry/emit_typescript.py +2 -4
  46. pkgs/type_spec/builder.py +248 -70
  47. pkgs/type_spec/builder_types.py +9 -0
  48. pkgs/type_spec/config.py +40 -7
  49. pkgs/type_spec/cross_output_links.py +99 -0
  50. pkgs/type_spec/emit_open_api.py +121 -34
  51. pkgs/type_spec/emit_open_api_util.py +5 -5
  52. pkgs/type_spec/emit_python.py +277 -86
  53. pkgs/type_spec/emit_typescript.py +102 -29
  54. pkgs/type_spec/emit_typescript_util.py +66 -10
  55. pkgs/type_spec/load_types.py +16 -3
  56. pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
  57. pkgs/type_spec/open_api_util.py +29 -4
  58. pkgs/type_spec/parts/base.py.prepart +11 -8
  59. pkgs/type_spec/parts/base.ts.prepart +4 -0
  60. pkgs/type_spec/type_info/__main__.py +3 -1
  61. pkgs/type_spec/type_info/emit_type_info.py +115 -22
  62. pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
  63. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
  64. pkgs/type_spec/util.py +3 -3
  65. pkgs/type_spec/value_spec/__main__.py +26 -9
  66. pkgs/type_spec/value_spec/convert_type.py +18 -0
  67. pkgs/type_spec/value_spec/emit_python.py +13 -3
  68. pkgs/type_spec/value_spec/types.py +1 -1
  69. uncountable/core/async_batch.py +1 -1
  70. uncountable/core/client.py +133 -34
  71. uncountable/core/environment.py +3 -3
  72. uncountable/core/file_upload.py +39 -15
  73. uncountable/integration/cli.py +116 -23
  74. uncountable/integration/construct_client.py +3 -3
  75. uncountable/integration/executors/executors.py +12 -2
  76. uncountable/integration/executors/generic_upload_executor.py +66 -14
  77. uncountable/integration/http_server/__init__.py +5 -0
  78. uncountable/integration/http_server/types.py +69 -0
  79. uncountable/integration/job.py +192 -7
  80. uncountable/integration/queue_runner/command_server/__init__.py +4 -0
  81. uncountable/integration/queue_runner/command_server/command_client.py +65 -0
  82. uncountable/integration/queue_runner/command_server/command_server.py +83 -5
  83. uncountable/integration/queue_runner/command_server/constants.py +4 -0
  84. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +36 -0
  85. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +28 -11
  86. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +77 -1
  87. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +135 -0
  88. uncountable/integration/queue_runner/command_server/types.py +25 -2
  89. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +168 -11
  90. uncountable/integration/queue_runner/datastore/interface.py +10 -0
  91. uncountable/integration/queue_runner/datastore/model.py +8 -1
  92. uncountable/integration/queue_runner/job_scheduler.py +63 -23
  93. uncountable/integration/queue_runner/queue_runner.py +10 -2
  94. uncountable/integration/queue_runner/worker.py +3 -5
  95. uncountable/integration/scan_profiles.py +1 -1
  96. uncountable/integration/scheduler.py +74 -25
  97. uncountable/integration/secret_retrieval/retrieve_secret.py +1 -1
  98. uncountable/integration/server.py +42 -12
  99. uncountable/integration/telemetry.py +63 -10
  100. uncountable/integration/webhook_server/entrypoint.py +39 -112
  101. uncountable/types/__init__.py +58 -1
  102. uncountable/types/api/batch/execute_batch.py +5 -6
  103. uncountable/types/api/batch/execute_batch_load_async.py +2 -3
  104. uncountable/types/api/chemical/convert_chemical_formats.py +10 -5
  105. uncountable/types/api/condition_parameters/__init__.py +1 -0
  106. uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
  107. uncountable/types/api/entity/create_entities.py +7 -7
  108. uncountable/types/api/entity/create_entity.py +8 -8
  109. uncountable/types/api/entity/create_or_update_entity.py +48 -0
  110. uncountable/types/api/entity/export_entities.py +59 -0
  111. uncountable/types/api/entity/get_entities_data.py +3 -4
  112. uncountable/types/api/entity/grant_entity_permissions.py +6 -6
  113. uncountable/types/api/entity/list_aggregate.py +79 -0
  114. uncountable/types/api/entity/list_entities.py +34 -10
  115. uncountable/types/api/entity/lock_entity.py +4 -4
  116. uncountable/types/api/entity/lookup_entity.py +116 -0
  117. uncountable/types/api/entity/resolve_entity_ids.py +5 -6
  118. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  119. uncountable/types/api/entity/set_values.py +3 -3
  120. uncountable/types/api/entity/transition_entity_phase.py +14 -7
  121. uncountable/types/api/entity/unlock_entity.py +3 -3
  122. uncountable/types/api/equipment/associate_equipment_input.py +2 -3
  123. uncountable/types/api/field_options/upsert_field_options.py +7 -7
  124. uncountable/types/api/files/__init__.py +1 -0
  125. uncountable/types/api/files/download_file.py +77 -0
  126. uncountable/types/api/id_source/list_id_source.py +6 -7
  127. uncountable/types/api/id_source/match_id_source.py +4 -5
  128. uncountable/types/api/input_groups/get_input_group_names.py +3 -4
  129. uncountable/types/api/inputs/create_inputs.py +10 -9
  130. uncountable/types/api/inputs/get_input_data.py +11 -12
  131. uncountable/types/api/inputs/get_input_names.py +6 -7
  132. uncountable/types/api/inputs/get_inputs_data.py +6 -7
  133. uncountable/types/api/inputs/set_input_attribute_values.py +5 -6
  134. uncountable/types/api/inputs/set_input_category.py +5 -5
  135. uncountable/types/api/inputs/set_input_subcategories.py +3 -3
  136. uncountable/types/api/inputs/set_intermediate_type.py +4 -4
  137. uncountable/types/api/integrations/__init__.py +1 -0
  138. uncountable/types/api/integrations/publish_realtime_data.py +41 -0
  139. uncountable/types/api/integrations/push_notification.py +49 -0
  140. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  141. uncountable/types/api/listing/__init__.py +1 -0
  142. uncountable/types/api/listing/fetch_listing.py +58 -0
  143. uncountable/types/api/material_families/update_entity_material_families.py +3 -4
  144. uncountable/types/api/notebooks/__init__.py +1 -0
  145. uncountable/types/api/notebooks/add_notebook_content.py +119 -0
  146. uncountable/types/api/outputs/get_output_data.py +12 -13
  147. uncountable/types/api/outputs/get_output_names.py +5 -6
  148. uncountable/types/api/outputs/get_output_organization.py +173 -0
  149. uncountable/types/api/outputs/resolve_output_conditions.py +7 -8
  150. uncountable/types/api/permissions/set_core_permissions.py +16 -10
  151. uncountable/types/api/project/get_projects.py +6 -7
  152. uncountable/types/api/project/get_projects_data.py +7 -8
  153. uncountable/types/api/recipe_links/create_recipe_link.py +5 -5
  154. uncountable/types/api/recipe_links/remove_recipe_link.py +4 -4
  155. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +6 -7
  156. uncountable/types/api/recipes/add_recipe_to_project.py +3 -3
  157. uncountable/types/api/recipes/add_time_series_data.py +64 -0
  158. uncountable/types/api/recipes/archive_recipes.py +4 -4
  159. uncountable/types/api/recipes/associate_recipe_as_input.py +5 -5
  160. uncountable/types/api/recipes/associate_recipe_as_lot.py +3 -3
  161. uncountable/types/api/recipes/clear_recipe_outputs.py +3 -3
  162. uncountable/types/api/recipes/create_mix_order.py +44 -0
  163. uncountable/types/api/recipes/create_recipe.py +8 -9
  164. uncountable/types/api/recipes/create_recipes.py +8 -9
  165. uncountable/types/api/recipes/disassociate_recipe_as_input.py +3 -3
  166. uncountable/types/api/recipes/edit_recipe_inputs.py +101 -24
  167. uncountable/types/api/recipes/get_column_calculation_values.py +4 -5
  168. uncountable/types/api/recipes/get_curve.py +4 -5
  169. uncountable/types/api/recipes/get_recipe_calculations.py +6 -7
  170. uncountable/types/api/recipes/get_recipe_links.py +3 -4
  171. uncountable/types/api/recipes/get_recipe_names.py +3 -4
  172. uncountable/types/api/recipes/get_recipe_output_metadata.py +5 -6
  173. uncountable/types/api/recipes/get_recipes_data.py +62 -34
  174. uncountable/types/api/recipes/lock_recipes.py +9 -8
  175. uncountable/types/api/recipes/remove_recipe_from_project.py +3 -3
  176. uncountable/types/api/recipes/set_recipe_inputs.py +9 -10
  177. uncountable/types/api/recipes/set_recipe_metadata.py +3 -3
  178. uncountable/types/api/recipes/set_recipe_output_annotations.py +11 -12
  179. uncountable/types/api/recipes/set_recipe_output_file.py +5 -6
  180. uncountable/types/api/recipes/set_recipe_outputs.py +24 -13
  181. uncountable/types/api/recipes/set_recipe_tags.py +14 -9
  182. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  183. uncountable/types/api/recipes/unarchive_recipes.py +3 -3
  184. uncountable/types/api/recipes/unlock_recipes.py +7 -6
  185. uncountable/types/api/runsheet/__init__.py +1 -0
  186. uncountable/types/api/runsheet/complete_async_upload.py +41 -0
  187. uncountable/types/api/triggers/run_trigger.py +4 -4
  188. uncountable/types/api/uploader/complete_async_parse.py +46 -0
  189. uncountable/types/api/uploader/invoke_uploader.py +4 -5
  190. uncountable/types/api/user/__init__.py +1 -0
  191. uncountable/types/api/user/get_current_user_info.py +40 -0
  192. uncountable/types/async_batch.py +1 -1
  193. uncountable/types/async_batch_processor.py +506 -23
  194. uncountable/types/async_batch_t.py +35 -8
  195. uncountable/types/async_jobs.py +0 -1
  196. uncountable/types/async_jobs_t.py +1 -2
  197. uncountable/types/auth_retrieval.py +0 -1
  198. uncountable/types/auth_retrieval_t.py +6 -6
  199. uncountable/types/base.py +0 -1
  200. uncountable/types/base_t.py +11 -9
  201. uncountable/types/calculations.py +0 -1
  202. uncountable/types/calculations_t.py +1 -2
  203. uncountable/types/chemical_structure.py +0 -1
  204. uncountable/types/chemical_structure_t.py +5 -5
  205. uncountable/types/client_base.py +614 -69
  206. uncountable/types/client_config.py +1 -1
  207. uncountable/types/client_config_t.py +13 -3
  208. uncountable/types/curves.py +0 -1
  209. uncountable/types/curves_t.py +6 -7
  210. uncountable/types/data.py +12 -0
  211. uncountable/types/data_t.py +103 -0
  212. uncountable/types/entity.py +1 -1
  213. uncountable/types/entity_t.py +90 -10
  214. uncountable/types/experiment_groups.py +0 -1
  215. uncountable/types/experiment_groups_t.py +1 -2
  216. uncountable/types/exports.py +8 -0
  217. uncountable/types/exports_t.py +34 -0
  218. uncountable/types/field_values.py +19 -1
  219. uncountable/types/field_values_t.py +242 -9
  220. uncountable/types/fields.py +0 -1
  221. uncountable/types/fields_t.py +1 -2
  222. uncountable/types/generic_upload.py +0 -1
  223. uncountable/types/generic_upload_t.py +14 -14
  224. uncountable/types/id_source.py +0 -1
  225. uncountable/types/id_source_t.py +13 -7
  226. uncountable/types/identifier.py +0 -1
  227. uncountable/types/identifier_t.py +10 -5
  228. uncountable/types/input_attributes.py +0 -1
  229. uncountable/types/input_attributes_t.py +3 -4
  230. uncountable/types/inputs.py +0 -1
  231. uncountable/types/inputs_t.py +3 -4
  232. uncountable/types/integration_server.py +0 -1
  233. uncountable/types/integration_server_t.py +13 -4
  234. uncountable/types/integration_session.py +10 -0
  235. uncountable/types/integration_session_t.py +60 -0
  236. uncountable/types/integrations.py +10 -0
  237. uncountable/types/integrations_t.py +62 -0
  238. uncountable/types/job_definition.py +2 -1
  239. uncountable/types/job_definition_t.py +57 -32
  240. uncountable/types/listing.py +9 -0
  241. uncountable/types/listing_t.py +51 -0
  242. uncountable/types/notices.py +8 -0
  243. uncountable/types/notices_t.py +37 -0
  244. uncountable/types/notifications.py +11 -0
  245. uncountable/types/notifications_t.py +74 -0
  246. uncountable/types/outputs.py +0 -1
  247. uncountable/types/outputs_t.py +2 -3
  248. uncountable/types/overrides.py +0 -1
  249. uncountable/types/overrides_t.py +10 -4
  250. uncountable/types/permissions.py +0 -1
  251. uncountable/types/permissions_t.py +1 -2
  252. uncountable/types/phases.py +0 -1
  253. uncountable/types/phases_t.py +1 -2
  254. uncountable/types/post_base.py +0 -1
  255. uncountable/types/post_base_t.py +1 -2
  256. uncountable/types/queued_job.py +2 -1
  257. uncountable/types/queued_job_t.py +29 -12
  258. uncountable/types/recipe_identifiers.py +0 -1
  259. uncountable/types/recipe_identifiers_t.py +18 -8
  260. uncountable/types/recipe_inputs.py +0 -1
  261. uncountable/types/recipe_inputs_t.py +1 -2
  262. uncountable/types/recipe_links.py +0 -1
  263. uncountable/types/recipe_links_t.py +3 -4
  264. uncountable/types/recipe_metadata.py +0 -1
  265. uncountable/types/recipe_metadata_t.py +9 -10
  266. uncountable/types/recipe_output_metadata.py +0 -1
  267. uncountable/types/recipe_output_metadata_t.py +1 -2
  268. uncountable/types/recipe_tags.py +0 -1
  269. uncountable/types/recipe_tags_t.py +1 -2
  270. uncountable/types/recipe_workflow_steps.py +0 -1
  271. uncountable/types/recipe_workflow_steps_t.py +7 -7
  272. uncountable/types/recipes.py +0 -1
  273. uncountable/types/recipes_t.py +2 -2
  274. uncountable/types/response.py +0 -1
  275. uncountable/types/response_t.py +2 -2
  276. uncountable/types/secret_retrieval.py +0 -1
  277. uncountable/types/secret_retrieval_t.py +7 -7
  278. uncountable/types/sockets.py +20 -0
  279. uncountable/types/sockets_t.py +169 -0
  280. uncountable/types/structured_filters.py +25 -0
  281. uncountable/types/structured_filters_t.py +248 -0
  282. uncountable/types/units.py +0 -1
  283. uncountable/types/units_t.py +1 -2
  284. uncountable/types/uploader.py +24 -0
  285. uncountable/types/uploader_t.py +222 -0
  286. uncountable/types/users.py +0 -1
  287. uncountable/types/users_t.py +1 -2
  288. uncountable/types/webhook_job.py +1 -1
  289. uncountable/types/webhook_job_t.py +14 -3
  290. uncountable/types/workflows.py +0 -1
  291. uncountable/types/workflows_t.py +3 -4
  292. uncountablepythonsdk-0.0.132.dist-info/METADATA +64 -0
  293. uncountablepythonsdk-0.0.132.dist-info/RECORD +363 -0
  294. {UncountablePythonSDK-0.0.83.dist-info → uncountablepythonsdk-0.0.132.dist-info}/WHEEL +1 -1
  295. UncountablePythonSDK-0.0.83.dist-info/METADATA +0 -60
  296. UncountablePythonSDK-0.0.83.dist-info/RECORD +0 -292
  297. docs/quickstart.md +0 -19
  298. {UncountablePythonSDK-0.0.83.dist-info → uncountablepythonsdk-0.0.132.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,60 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
+ from . import identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "IntegrationSession",
18
+ "IntegrationSessionBase",
19
+ "IntegrationSessionInstrument",
20
+ "IntegrationSessionType",
21
+ ]
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ class IntegrationSessionType(StrEnum):
26
+ INSTRUMENT = "instrument"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.integration_session.IntegrationSessionBase",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class IntegrationSessionBase:
35
+ type: IntegrationSessionType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.integration_session.IntegrationSessionInstrument",
41
+ parse_require={"type"},
42
+ )
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
+ class IntegrationSessionInstrument(IntegrationSessionBase):
45
+ type: typing.Literal[IntegrationSessionType.INSTRUMENT] = IntegrationSessionType.INSTRUMENT
46
+ equipment_key: identifier_t.IdentifierKey
47
+
48
+
49
+ # DO NOT MODIFY -- This file is generated by type_spec
50
+ IntegrationSession = typing.Annotated[
51
+ typing.Union[IntegrationSessionInstrument],
52
+ serial_union_annotation(
53
+ named_type_path="sdk.integration_session.IntegrationSession",
54
+ discriminator="type",
55
+ discriminator_map={
56
+ "instrument": IntegrationSessionInstrument,
57
+ },
58
+ ),
59
+ ]
60
+ # 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 .integrations_t import DataPackageType as DataPackageType
7
+ from .integrations_t import DataPackageBase as DataPackageBase
8
+ from .integrations_t import DataPackageNumericReading as DataPackageNumericReading
9
+ from .integrations_t import DataPackage as DataPackage
10
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,62 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
+ from . import entity_t
15
+
16
+ __all__: list[str] = [
17
+ "DataPackage",
18
+ "DataPackageBase",
19
+ "DataPackageNumericReading",
20
+ "DataPackageType",
21
+ ]
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ class DataPackageType(StrEnum):
26
+ NUMERIC_READING = "numeric_reading"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.integrations.DataPackageBase",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class DataPackageBase:
35
+ type: DataPackageType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.integrations.DataPackageNumericReading",
41
+ to_string_values={"value"},
42
+ parse_require={"type"},
43
+ )
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
45
+ class DataPackageNumericReading(DataPackageBase):
46
+ type: typing.Literal[DataPackageType.NUMERIC_READING] = DataPackageType.NUMERIC_READING
47
+ value: Decimal
48
+ target_entity: entity_t.EntityIdentifier
49
+
50
+
51
+ # DO NOT MODIFY -- This file is generated by type_spec
52
+ DataPackage = typing.Annotated[
53
+ typing.Union[DataPackageNumericReading],
54
+ serial_union_annotation(
55
+ named_type_path="sdk.integrations.DataPackage",
56
+ discriminator="type",
57
+ discriminator_map={
58
+ "numeric_reading": DataPackageNumericReading,
59
+ },
60
+ ),
61
+ ]
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
@@ -19,6 +18,8 @@ from .job_definition_t import JobExecutor as JobExecutor
19
18
  from .job_definition_t import JobLoggingSettings as JobLoggingSettings
20
19
  from .job_definition_t import JobDefinitionBase as JobDefinitionBase
21
20
  from .job_definition_t import CronJobDefinition as CronJobDefinition
21
+ from .job_definition_t import HttpJobDefinitionBase as HttpJobDefinitionBase
22
+ from .job_definition_t import CustomHttpJobDefinition as CustomHttpJobDefinition
22
23
  from .job_definition_t import WebhookJobDefinition as WebhookJobDefinition
23
24
  from .job_definition_t import JobDefinition as JobDefinition
24
25
  from .job_definition_t import ProfileDefinition as ProfileDefinition
@@ -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,11 +6,12 @@ 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
14
13
  from . import auth_retrieval_t
14
+ from . import base_t
15
15
  from . import client_config_t
16
16
  from . import generic_upload_t
17
17
  from . import identifier_t
@@ -20,11 +20,13 @@ from . import secret_retrieval_t
20
20
 
21
21
  __all__: list[str] = [
22
22
  "CronJobDefinition",
23
+ "CustomHttpJobDefinition",
23
24
  "GenericUploadDataSource",
24
25
  "GenericUploadDataSourceBase",
25
26
  "GenericUploadDataSourceS3",
26
27
  "GenericUploadDataSourceSFTP",
27
28
  "GenericUploadDataSourceType",
29
+ "HttpJobDefinitionBase",
28
30
  "JobDefinition",
29
31
  "JobDefinitionBase",
30
32
  "JobDefinitionType",
@@ -46,6 +48,7 @@ __all__: list[str] = [
46
48
  class JobDefinitionType(StrEnum):
47
49
  CRON = "cron"
48
50
  WEBHOOK = "webhook"
51
+ CUSTOM_HTTP = "custom_http"
49
52
 
50
53
 
51
54
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -64,7 +67,7 @@ class GenericUploadDataSourceType(StrEnum):
64
67
  @serial_class(
65
68
  named_type_path="sdk.job_definition.JobExecutorBase",
66
69
  )
67
- @dataclasses.dataclass(kw_only=True)
70
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
68
71
  class JobExecutorBase:
69
72
  type: JobExecutorType
70
73
 
@@ -74,7 +77,7 @@ class JobExecutorBase:
74
77
  named_type_path="sdk.job_definition.JobExecutorScript",
75
78
  parse_require={"type"},
76
79
  )
77
- @dataclasses.dataclass(kw_only=True)
80
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
78
81
  class JobExecutorScript(JobExecutorBase):
79
82
  type: typing.Literal[JobExecutorType.SCRIPT] = JobExecutorType.SCRIPT
80
83
  import_path: str
@@ -84,7 +87,7 @@ class JobExecutorScript(JobExecutorBase):
84
87
  @serial_class(
85
88
  named_type_path="sdk.job_definition.GenericUploadDataSourceBase",
86
89
  )
87
- @dataclasses.dataclass(kw_only=True)
90
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
88
91
  class GenericUploadDataSourceBase:
89
92
  type: GenericUploadDataSourceType
90
93
 
@@ -94,12 +97,13 @@ class GenericUploadDataSourceBase:
94
97
  named_type_path="sdk.job_definition.GenericUploadDataSourceSFTP",
95
98
  parse_require={"type"},
96
99
  )
97
- @dataclasses.dataclass(kw_only=True)
100
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
98
101
  class GenericUploadDataSourceSFTP(GenericUploadDataSourceBase):
99
102
  type: typing.Literal[GenericUploadDataSourceType.SFTP] = GenericUploadDataSourceType.SFTP
100
103
  host: str
101
104
  username: str
102
- pem_secret: secret_retrieval_t.SecretRetrieval
105
+ pem_secret: secret_retrieval_t.SecretRetrieval | None = None
106
+ password_secret: secret_retrieval_t.SecretRetrieval | None = None
103
107
 
104
108
 
105
109
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -113,20 +117,20 @@ class S3CloudProvider(StrEnum):
113
117
  named_type_path="sdk.job_definition.GenericUploadDataSourceS3",
114
118
  parse_require={"type"},
115
119
  )
116
- @dataclasses.dataclass(kw_only=True)
120
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
117
121
  class GenericUploadDataSourceS3(GenericUploadDataSourceBase):
118
122
  type: typing.Literal[GenericUploadDataSourceType.S3] = GenericUploadDataSourceType.S3
119
123
  bucket_name: str
120
- cloud_provider: typing.Optional[S3CloudProvider] = None
121
- endpoint_url: typing.Optional[str] = None
122
- region_name: typing.Optional[str] = None
123
- access_key_id: typing.Optional[str] = None
124
- access_key_secret: typing.Optional[secret_retrieval_t.SecretRetrieval] = None
124
+ cloud_provider: S3CloudProvider | None = None
125
+ endpoint_url: str | None = None
126
+ region_name: str | None = None
127
+ access_key_id: str | None = None
128
+ access_key_secret: secret_retrieval_t.SecretRetrieval | None = None
125
129
 
126
130
 
127
131
  # DO NOT MODIFY -- This file is generated by type_spec
128
132
  GenericUploadDataSource = typing.Annotated[
129
- typing.Union[GenericUploadDataSourceSFTP, GenericUploadDataSourceS3],
133
+ GenericUploadDataSourceSFTP | GenericUploadDataSourceS3,
130
134
  serial_union_annotation(
131
135
  named_type_path="sdk.job_definition.GenericUploadDataSource",
132
136
  discriminator="type",
@@ -143,7 +147,7 @@ GenericUploadDataSource = typing.Annotated[
143
147
  named_type_path="sdk.job_definition.JobExecutorGenericUpload",
144
148
  parse_require={"type"},
145
149
  )
146
- @dataclasses.dataclass(kw_only=True)
150
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
147
151
  class JobExecutorGenericUpload(JobExecutorBase):
148
152
  type: typing.Literal[JobExecutorType.GENERIC_UPLOAD] = JobExecutorType.GENERIC_UPLOAD
149
153
  data_source: GenericUploadDataSource
@@ -153,7 +157,7 @@ class JobExecutorGenericUpload(JobExecutorBase):
153
157
 
154
158
  # DO NOT MODIFY -- This file is generated by type_spec
155
159
  JobExecutor = typing.Annotated[
156
- typing.Union[JobExecutorScript, JobExecutorGenericUpload],
160
+ JobExecutorScript | JobExecutorGenericUpload,
157
161
  serial_union_annotation(
158
162
  named_type_path="sdk.job_definition.JobExecutor",
159
163
  discriminator="type",
@@ -169,23 +173,24 @@ JobExecutor = typing.Annotated[
169
173
  @serial_class(
170
174
  named_type_path="sdk.job_definition.JobLoggingSettings",
171
175
  )
172
- @dataclasses.dataclass(kw_only=True)
176
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
173
177
  class JobLoggingSettings:
174
178
  enabled: bool = False
175
- share_with_user_groups: typing.Optional[list[identifier_t.IdentifierKey]] = None
179
+ share_with_user_groups: list[identifier_t.IdentifierKey] | None = None
176
180
 
177
181
 
178
182
  # DO NOT MODIFY -- This file is generated by type_spec
179
183
  @serial_class(
180
184
  named_type_path="sdk.job_definition.JobDefinitionBase",
181
185
  )
182
- @dataclasses.dataclass(kw_only=True)
186
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
183
187
  class JobDefinitionBase:
184
188
  id: str
185
189
  name: str
186
190
  executor: JobExecutor
187
191
  enabled: bool = True
188
- logging_settings: typing.Optional[JobLoggingSettings] = None
192
+ logging_settings: JobLoggingSettings | None = None
193
+ subqueue_name: str | None = None
189
194
 
190
195
 
191
196
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -193,31 +198,51 @@ class JobDefinitionBase:
193
198
  named_type_path="sdk.job_definition.CronJobDefinition",
194
199
  parse_require={"type"},
195
200
  )
196
- @dataclasses.dataclass(kw_only=True)
201
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
197
202
  class CronJobDefinition(JobDefinitionBase):
198
203
  type: typing.Literal[JobDefinitionType.CRON] = JobDefinitionType.CRON
199
204
  cron_spec: str
200
205
 
201
206
 
207
+ # DO NOT MODIFY -- This file is generated by type_spec
208
+ @serial_class(
209
+ named_type_path="sdk.job_definition.HttpJobDefinitionBase",
210
+ )
211
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
212
+ class HttpJobDefinitionBase(JobDefinitionBase):
213
+ pass
214
+
215
+
216
+ # DO NOT MODIFY -- This file is generated by type_spec
217
+ @serial_class(
218
+ named_type_path="sdk.job_definition.CustomHttpJobDefinition",
219
+ parse_require={"type"},
220
+ )
221
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
222
+ class CustomHttpJobDefinition(HttpJobDefinitionBase):
223
+ type: typing.Literal[JobDefinitionType.CUSTOM_HTTP] = JobDefinitionType.CUSTOM_HTTP
224
+
225
+
202
226
  # DO NOT MODIFY -- This file is generated by type_spec
203
227
  @serial_class(
204
228
  named_type_path="sdk.job_definition.WebhookJobDefinition",
205
229
  parse_require={"type"},
206
230
  )
207
- @dataclasses.dataclass(kw_only=True)
208
- class WebhookJobDefinition(JobDefinitionBase):
231
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
232
+ class WebhookJobDefinition(HttpJobDefinitionBase):
209
233
  type: typing.Literal[JobDefinitionType.WEBHOOK] = JobDefinitionType.WEBHOOK
210
234
  signature_key_secret: secret_retrieval_t.SecretRetrieval
211
235
 
212
236
 
213
237
  # DO NOT MODIFY -- This file is generated by type_spec
214
238
  JobDefinition = typing.Annotated[
215
- typing.Union[CronJobDefinition, WebhookJobDefinition],
239
+ CronJobDefinition | CustomHttpJobDefinition | WebhookJobDefinition,
216
240
  serial_union_annotation(
217
241
  named_type_path="sdk.job_definition.JobDefinition",
218
242
  discriminator="type",
219
243
  discriminator_map={
220
244
  "cron": CronJobDefinition,
245
+ "custom_http": CustomHttpJobDefinition,
221
246
  "webhook": WebhookJobDefinition,
222
247
  },
223
248
  ),
@@ -228,25 +253,25 @@ JobDefinition = typing.Annotated[
228
253
  @serial_class(
229
254
  named_type_path="sdk.job_definition.ProfileDefinition",
230
255
  )
231
- @dataclasses.dataclass(kw_only=True)
256
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
232
257
  class ProfileDefinition:
233
258
  jobs: list[JobDefinition]
234
- auth_retrieval: typing.Optional[auth_retrieval_t.AuthRetrieval] = None
235
- base_url: typing.Optional[str] = None
236
- client_options: typing.Optional[client_config_t.ClientConfigOptions] = None
237
- environments: typing.Optional[dict[integration_server_t.IntegrationEnvironment, integration_server_t.EnvironmentConfig]] = None
259
+ auth_retrieval: auth_retrieval_t.AuthRetrieval | None = None
260
+ base_url: str | None = None
261
+ client_options: client_config_t.ClientConfigOptions | None = None
262
+ environments: dict[integration_server_t.IntegrationEnvironment, integration_server_t.EnvironmentConfig] | None = None
238
263
 
239
264
 
240
265
  # DO NOT MODIFY -- This file is generated by type_spec
241
266
  @serial_class(
242
267
  named_type_path="sdk.job_definition.ProfileMetadata",
243
268
  )
244
- @dataclasses.dataclass(kw_only=True)
269
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
245
270
  class ProfileMetadata:
246
271
  name: str
247
272
  base_url: str
248
273
  auth_retrieval: auth_retrieval_t.AuthRetrieval
249
- client_options: typing.Optional[client_config_t.ClientConfigOptions]
274
+ client_options: client_config_t.ClientConfigOptions | None
250
275
  jobs: list[JobDefinition]
251
276
 
252
277
 
@@ -254,7 +279,7 @@ class ProfileMetadata:
254
279
  @serial_class(
255
280
  named_type_path="sdk.job_definition.JobResult",
256
281
  )
257
- @dataclasses.dataclass(kw_only=True)
282
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
258
283
  class JobResult:
259
284
  success: bool
260
285
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,9 @@
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 .listing_t import ColumnType as ColumnType
7
+ from .listing_t import ColumnIdentifierEntityRefName as ColumnIdentifierEntityRefName
8
+ from .listing_t import ColumnIdentifier as ColumnIdentifier
9
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,51 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
+ from . import entity_t
15
+
16
+ __all__: list[str] = [
17
+ "ColumnIdentifier",
18
+ "ColumnIdentifierEntityRefName",
19
+ "ColumnType",
20
+ ]
21
+
22
+
23
+ # DO NOT MODIFY -- This file is generated by type_spec
24
+ class ColumnType(StrEnum):
25
+ REF_NAME = "ref_name"
26
+
27
+
28
+ # DO NOT MODIFY -- This file is generated by type_spec
29
+ @serial_class(
30
+ named_type_path="sdk.listing.ColumnIdentifierEntityRefName",
31
+ parse_require={"type"},
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
34
+ class ColumnIdentifierEntityRefName:
35
+ type: typing.Literal[ColumnType.REF_NAME] = ColumnType.REF_NAME
36
+ entity_type: entity_t.EntityType
37
+ entity_ref_name: str
38
+
39
+
40
+ # DO NOT MODIFY -- This file is generated by type_spec
41
+ ColumnIdentifier = typing.Annotated[
42
+ typing.Union[ColumnIdentifierEntityRefName],
43
+ serial_union_annotation(
44
+ named_type_path="sdk.listing.ColumnIdentifier",
45
+ discriminator="type",
46
+ discriminator_map={
47
+ "ref_name": ColumnIdentifierEntityRefName,
48
+ },
49
+ ),
50
+ ]
51
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,8 @@
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 .notices_t import NoticeType as NoticeType
7
+ from .notices_t import NotificationNoticeConfiguration as NotificationNoticeConfiguration
8
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,37 @@
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 . import base_t
13
+
14
+ __all__: list[str] = [
15
+ "NoticeType",
16
+ "NotificationNoticeConfiguration",
17
+ ]
18
+
19
+
20
+ # DO NOT MODIFY -- This file is generated by type_spec
21
+ class NoticeType(StrEnum):
22
+ ERROR = "error"
23
+ WARNING = "warning"
24
+ INFO = "info"
25
+ SUCCESS = "success"
26
+ DEBUG = "debug"
27
+ PLAIN = "plain"
28
+
29
+
30
+ # DO NOT MODIFY -- This file is generated by type_spec
31
+ @serial_class(
32
+ named_type_path="sdk.notices.NotificationNoticeConfiguration",
33
+ )
34
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
35
+ class NotificationNoticeConfiguration:
36
+ notice_type: NoticeType | None = None
37
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,11 @@
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 .notifications_t import NotificationTargetType as NotificationTargetType
7
+ from .notifications_t import NotificationTargetBase as NotificationTargetBase
8
+ from .notifications_t import NotificationTargetUser as NotificationTargetUser
9
+ from .notifications_t import NotificationTargetUserGroup as NotificationTargetUserGroup
10
+ from .notifications_t import NotificationTarget as NotificationTarget
11
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,74 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
+ from . import identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "NotificationTarget",
18
+ "NotificationTargetBase",
19
+ "NotificationTargetType",
20
+ "NotificationTargetUser",
21
+ "NotificationTargetUserGroup",
22
+ ]
23
+
24
+
25
+ # DO NOT MODIFY -- This file is generated by type_spec
26
+ class NotificationTargetType(StrEnum):
27
+ USER = "user"
28
+ USER_GROUP = "user_group"
29
+
30
+
31
+ # DO NOT MODIFY -- This file is generated by type_spec
32
+ @serial_class(
33
+ named_type_path="sdk.notifications.NotificationTargetBase",
34
+ )
35
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
36
+ class NotificationTargetBase:
37
+ type: NotificationTargetType
38
+
39
+
40
+ # DO NOT MODIFY -- This file is generated by type_spec
41
+ @serial_class(
42
+ named_type_path="sdk.notifications.NotificationTargetUser",
43
+ parse_require={"type"},
44
+ )
45
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
46
+ class NotificationTargetUser(NotificationTargetBase):
47
+ type: typing.Literal[NotificationTargetType.USER] = NotificationTargetType.USER
48
+ user_key: identifier_t.IdentifierKey
49
+
50
+
51
+ # DO NOT MODIFY -- This file is generated by type_spec
52
+ @serial_class(
53
+ named_type_path="sdk.notifications.NotificationTargetUserGroup",
54
+ parse_require={"type"},
55
+ )
56
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
57
+ class NotificationTargetUserGroup(NotificationTargetBase):
58
+ type: typing.Literal[NotificationTargetType.USER_GROUP] = NotificationTargetType.USER_GROUP
59
+ user_group_key: identifier_t.IdentifierKey
60
+
61
+
62
+ # DO NOT MODIFY -- This file is generated by type_spec
63
+ NotificationTarget = typing.Annotated[
64
+ NotificationTargetUser | NotificationTargetUserGroup,
65
+ serial_union_annotation(
66
+ named_type_path="sdk.notifications.NotificationTarget",
67
+ discriminator="type",
68
+ discriminator_map={
69
+ "user": NotificationTargetUser,
70
+ "user_group": NotificationTargetUserGroup,
71
+ },
72
+ ),
73
+ ]
74
+ # 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
@@ -21,10 +20,10 @@ __all__: list[str] = [
21
20
  @serial_class(
22
21
  named_type_path="sdk.outputs.SimpleOutput",
23
22
  )
24
- @dataclasses.dataclass(kw_only=True)
23
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
25
24
  class SimpleOutput:
26
25
  output_id: base_t.ObjectId
27
26
  name: str
28
- unit: typing.Optional[units_t.SimpleUnit]
27
+ unit: units_t.SimpleUnit | None
29
28
  quantity_type: str
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
@@ -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 secret_retrieval_t
13
14
 
14
15
  __all__: list[str] = [
@@ -22,7 +23,7 @@ __all__: list[str] = [
22
23
  @serial_class(
23
24
  named_type_path="sdk.overrides.SecretRetrievalOverride",
24
25
  )
25
- @dataclasses.dataclass(kw_only=True)
26
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
26
27
  class SecretRetrievalOverride:
27
28
  profile_name: str
28
29
  secret_retrieval: secret_retrieval_t.SecretRetrieval
@@ -30,14 +31,19 @@ class SecretRetrievalOverride:
30
31
 
31
32
 
32
33
  # DO NOT MODIFY -- This file is generated by type_spec
33
- SecretRetrievalOverrides = list[SecretRetrievalOverride]
34
+ SecretRetrievalOverrides = typing.Annotated[
35
+ list[SecretRetrievalOverride],
36
+ serial_alias_annotation(
37
+ named_type_path="sdk.overrides.SecretRetrievalOverrides",
38
+ ),
39
+ ]
34
40
 
35
41
 
36
42
  # DO NOT MODIFY -- This file is generated by type_spec
37
43
  @serial_class(
38
44
  named_type_path="sdk.overrides.Overrides",
39
45
  )
40
- @dataclasses.dataclass(kw_only=True)
46
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
41
47
  class Overrides:
42
48
  secrets: SecretRetrievalOverrides
43
49
  # DO NOT MODIFY -- This file is generated by type_spec