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

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

Potentially problematic release.


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

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