UncountablePythonSDK 0.0.8__py3-none-any.whl → 0.0.92__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 (312) hide show
  1. UncountablePythonSDK-0.0.92.dist-info/METADATA +61 -0
  2. UncountablePythonSDK-0.0.92.dist-info/RECORD +301 -0
  3. {UncountablePythonSDK-0.0.8.dist-info → UncountablePythonSDK-0.0.92.dist-info}/WHEEL +1 -1
  4. {UncountablePythonSDK-0.0.8.dist-info → UncountablePythonSDK-0.0.92.dist-info}/top_level.txt +1 -1
  5. docs/.gitignore +1 -0
  6. docs/conf.py +57 -0
  7. docs/index.md +13 -0
  8. docs/justfile +12 -0
  9. docs/quickstart.md +19 -0
  10. docs/requirements.txt +7 -0
  11. docs/static/favicons/android-chrome-192x192.png +0 -0
  12. docs/static/favicons/android-chrome-512x512.png +0 -0
  13. docs/static/favicons/apple-touch-icon.png +0 -0
  14. docs/static/favicons/browserconfig.xml +9 -0
  15. docs/static/favicons/favicon-16x16.png +0 -0
  16. docs/static/favicons/favicon-32x32.png +0 -0
  17. docs/static/favicons/manifest.json +18 -0
  18. docs/static/favicons/mstile-150x150.png +0 -0
  19. docs/static/favicons/safari-pinned-tab.svg +32 -0
  20. docs/static/logo_blue.png +0 -0
  21. examples/async_batch.py +35 -0
  22. examples/create_entity.py +22 -17
  23. examples/download_files.py +26 -0
  24. examples/edit_recipe_inputs.py +50 -0
  25. examples/integration-server/jobs/materials_auto/example_cron.py +18 -0
  26. examples/integration-server/jobs/materials_auto/example_wh.py +15 -0
  27. examples/integration-server/jobs/materials_auto/profile.yaml +43 -0
  28. examples/integration-server/pyproject.toml +224 -0
  29. examples/invoke_uploader.py +26 -0
  30. examples/set_recipe_metadata_file.py +40 -0
  31. examples/set_recipe_output_file_sdk.py +26 -0
  32. examples/upload_files.py +18 -0
  33. pkgs/argument_parser/__init__.py +5 -0
  34. pkgs/argument_parser/_is_enum.py +1 -6
  35. pkgs/argument_parser/argument_parser.py +232 -76
  36. pkgs/argument_parser/case_convert.py +4 -3
  37. pkgs/filesystem_utils/__init__.py +20 -0
  38. pkgs/filesystem_utils/_blob_session.py +137 -0
  39. pkgs/filesystem_utils/_gdrive_session.py +309 -0
  40. pkgs/filesystem_utils/_local_session.py +69 -0
  41. pkgs/filesystem_utils/_s3_session.py +117 -0
  42. pkgs/filesystem_utils/_sftp_session.py +147 -0
  43. pkgs/filesystem_utils/file_type_utils.py +91 -0
  44. pkgs/filesystem_utils/filesystem_session.py +39 -0
  45. pkgs/py.typed +0 -0
  46. pkgs/serialization/__init__.py +8 -1
  47. pkgs/serialization/annotation.py +64 -0
  48. pkgs/serialization/missing_sentry.py +1 -1
  49. pkgs/serialization/opaque_key.py +1 -1
  50. pkgs/serialization/serial_alias.py +47 -0
  51. pkgs/serialization/serial_class.py +65 -50
  52. pkgs/serialization/serial_generic.py +16 -0
  53. pkgs/serialization/serial_union.py +84 -0
  54. pkgs/serialization/yaml.py +57 -0
  55. pkgs/serialization_util/__init__.py +7 -7
  56. pkgs/serialization_util/_get_type_for_serialization.py +1 -3
  57. pkgs/serialization_util/convert_to_snakecase.py +27 -0
  58. pkgs/serialization_util/dataclasses.py +14 -0
  59. pkgs/serialization_util/serialization_helpers.py +116 -74
  60. pkgs/strenum_compat/strenum_compat.py +1 -9
  61. pkgs/type_spec/actions_registry/__init__.py +0 -0
  62. pkgs/type_spec/actions_registry/__main__.py +126 -0
  63. pkgs/type_spec/actions_registry/emit_typescript.py +182 -0
  64. pkgs/type_spec/builder.py +475 -89
  65. pkgs/type_spec/config.py +24 -19
  66. pkgs/type_spec/emit_io_ts.py +5 -2
  67. pkgs/type_spec/emit_open_api.py +266 -32
  68. pkgs/type_spec/emit_open_api_util.py +32 -13
  69. pkgs/type_spec/emit_python.py +599 -151
  70. pkgs/type_spec/emit_typescript.py +74 -273
  71. pkgs/type_spec/emit_typescript_util.py +239 -5
  72. pkgs/type_spec/load_types.py +55 -10
  73. pkgs/type_spec/open_api_util.py +30 -41
  74. pkgs/type_spec/parts/base.py.prepart +4 -3
  75. pkgs/type_spec/type_info/emit_type_info.py +178 -16
  76. pkgs/type_spec/util.py +11 -11
  77. pkgs/type_spec/value_spec/__main__.py +3 -3
  78. pkgs/type_spec/value_spec/convert_type.py +8 -1
  79. pkgs/type_spec/value_spec/emit_python.py +13 -4
  80. uncountable/__init__.py +1 -2
  81. uncountable/core/__init__.py +12 -2
  82. uncountable/core/async_batch.py +37 -0
  83. uncountable/core/client.py +293 -43
  84. uncountable/core/environment.py +41 -0
  85. uncountable/core/file_upload.py +135 -0
  86. uncountable/core/types.py +17 -0
  87. uncountable/integration/__init__.py +0 -0
  88. uncountable/integration/cli.py +49 -0
  89. uncountable/integration/construct_client.py +51 -0
  90. uncountable/integration/cron.py +29 -0
  91. uncountable/integration/db/__init__.py +0 -0
  92. uncountable/integration/db/connect.py +18 -0
  93. uncountable/integration/db/session.py +25 -0
  94. uncountable/integration/entrypoint.py +13 -0
  95. uncountable/integration/executors/__init__.py +0 -0
  96. uncountable/integration/executors/executors.py +148 -0
  97. uncountable/integration/executors/generic_upload_executor.py +284 -0
  98. uncountable/integration/executors/script_executor.py +25 -0
  99. uncountable/integration/job.py +87 -0
  100. uncountable/integration/queue_runner/__init__.py +0 -0
  101. uncountable/integration/queue_runner/command_server/__init__.py +24 -0
  102. uncountable/integration/queue_runner/command_server/command_client.py +68 -0
  103. uncountable/integration/queue_runner/command_server/command_server.py +64 -0
  104. uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  105. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +22 -0
  106. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +40 -0
  107. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +38 -0
  108. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +129 -0
  109. uncountable/integration/queue_runner/command_server/types.py +52 -0
  110. uncountable/integration/queue_runner/datastore/__init__.py +3 -0
  111. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +93 -0
  112. uncountable/integration/queue_runner/datastore/interface.py +19 -0
  113. uncountable/integration/queue_runner/datastore/model.py +17 -0
  114. uncountable/integration/queue_runner/job_scheduler.py +163 -0
  115. uncountable/integration/queue_runner/queue_runner.py +26 -0
  116. uncountable/integration/queue_runner/types.py +7 -0
  117. uncountable/integration/queue_runner/worker.py +119 -0
  118. uncountable/integration/scan_profiles.py +67 -0
  119. uncountable/integration/scheduler.py +150 -0
  120. uncountable/integration/secret_retrieval/__init__.py +3 -0
  121. uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
  122. uncountable/integration/server.py +117 -0
  123. uncountable/integration/telemetry.py +209 -0
  124. uncountable/integration/webhook_server/entrypoint.py +170 -0
  125. uncountable/types/__init__.py +136 -20
  126. uncountable/types/api/batch/execute_batch.py +15 -7
  127. uncountable/types/api/batch/execute_batch_load_async.py +42 -0
  128. uncountable/types/api/chemical/__init__.py +1 -0
  129. uncountable/types/api/chemical/convert_chemical_formats.py +63 -0
  130. uncountable/types/api/entity/create_entities.py +23 -11
  131. uncountable/types/api/entity/create_entity.py +21 -12
  132. uncountable/types/api/entity/get_entities_data.py +18 -8
  133. uncountable/types/api/entity/grant_entity_permissions.py +48 -0
  134. uncountable/types/api/entity/list_entities.py +27 -12
  135. uncountable/types/api/entity/lock_entity.py +45 -0
  136. uncountable/types/api/entity/resolve_entity_ids.py +17 -7
  137. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  138. uncountable/types/api/entity/set_values.py +14 -7
  139. uncountable/types/api/entity/transition_entity_phase.py +80 -0
  140. uncountable/types/api/entity/unlock_entity.py +44 -0
  141. uncountable/types/api/equipment/__init__.py +1 -0
  142. uncountable/types/api/equipment/associate_equipment_input.py +44 -0
  143. uncountable/types/api/field_options/__init__.py +1 -0
  144. uncountable/types/api/field_options/upsert_field_options.py +55 -0
  145. uncountable/types/api/files/__init__.py +1 -0
  146. uncountable/types/api/files/download_file.py +77 -0
  147. uncountable/types/api/id_source/__init__.py +1 -0
  148. uncountable/types/api/id_source/list_id_source.py +56 -0
  149. uncountable/types/api/id_source/match_id_source.py +54 -0
  150. uncountable/types/api/input_groups/get_input_group_names.py +16 -6
  151. uncountable/types/api/inputs/create_inputs.py +24 -11
  152. uncountable/types/api/inputs/get_input_data.py +32 -13
  153. uncountable/types/api/inputs/get_input_names.py +18 -8
  154. uncountable/types/api/inputs/get_inputs_data.py +29 -10
  155. uncountable/types/api/inputs/set_input_attribute_values.py +16 -9
  156. uncountable/types/api/inputs/set_input_category.py +44 -0
  157. uncountable/types/api/inputs/set_input_subcategories.py +45 -0
  158. uncountable/types/api/inputs/set_intermediate_type.py +50 -0
  159. uncountable/types/api/material_families/__init__.py +1 -0
  160. uncountable/types/api/material_families/update_entity_material_families.py +48 -0
  161. uncountable/types/api/outputs/get_output_data.py +32 -16
  162. uncountable/types/api/outputs/get_output_names.py +18 -8
  163. uncountable/types/api/outputs/resolve_output_conditions.py +23 -10
  164. uncountable/types/api/permissions/__init__.py +1 -0
  165. uncountable/types/api/permissions/set_core_permissions.py +105 -0
  166. uncountable/types/api/project/get_projects.py +17 -7
  167. uncountable/types/api/project/get_projects_data.py +21 -11
  168. uncountable/types/api/recipe_links/__init__.py +1 -0
  169. uncountable/types/api/recipe_links/create_recipe_link.py +46 -0
  170. uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
  171. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +18 -8
  172. uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
  173. uncountable/types/api/recipes/archive_recipes.py +42 -0
  174. uncountable/types/api/recipes/associate_recipe_as_input.py +44 -0
  175. uncountable/types/api/recipes/associate_recipe_as_lot.py +43 -0
  176. uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
  177. uncountable/types/api/recipes/create_recipe.py +51 -0
  178. uncountable/types/api/recipes/create_recipes.py +25 -12
  179. uncountable/types/api/recipes/disassociate_recipe_as_input.py +42 -0
  180. uncountable/types/api/recipes/edit_recipe_inputs.py +283 -0
  181. uncountable/types/api/recipes/get_column_calculation_values.py +58 -0
  182. uncountable/types/api/recipes/get_curve.py +15 -7
  183. uncountable/types/api/recipes/get_recipe_calculations.py +17 -10
  184. uncountable/types/api/recipes/get_recipe_links.py +13 -6
  185. uncountable/types/api/recipes/get_recipe_names.py +16 -6
  186. uncountable/types/api/recipes/get_recipe_output_metadata.py +14 -7
  187. uncountable/types/api/recipes/get_recipes_data.py +63 -38
  188. uncountable/types/api/recipes/lock_recipes.py +63 -0
  189. uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
  190. uncountable/types/api/recipes/set_recipe_inputs.py +19 -10
  191. uncountable/types/api/recipes/set_recipe_metadata.py +43 -0
  192. uncountable/types/api/recipes/set_recipe_output_annotations.py +115 -0
  193. uncountable/types/api/recipes/set_recipe_output_file.py +56 -0
  194. uncountable/types/api/recipes/set_recipe_outputs.py +26 -12
  195. uncountable/types/api/recipes/set_recipe_tags.py +109 -0
  196. uncountable/types/api/recipes/unarchive_recipes.py +41 -0
  197. uncountable/types/api/recipes/unlock_recipes.py +50 -0
  198. uncountable/types/api/triggers/__init__.py +1 -0
  199. uncountable/types/api/triggers/run_trigger.py +43 -0
  200. uncountable/types/api/uploader/__init__.py +1 -0
  201. uncountable/types/api/uploader/invoke_uploader.py +47 -0
  202. uncountable/types/async_batch.py +13 -0
  203. uncountable/types/async_batch_processor.py +384 -0
  204. uncountable/types/async_batch_t.py +97 -0
  205. uncountable/types/async_jobs.py +9 -0
  206. uncountable/types/async_jobs_t.py +53 -0
  207. uncountable/types/auth_retrieval.py +12 -0
  208. uncountable/types/auth_retrieval_t.py +75 -0
  209. uncountable/types/base.py +5 -78
  210. uncountable/types/base_t.py +85 -0
  211. uncountable/types/calculations.py +3 -18
  212. uncountable/types/calculations_t.py +27 -0
  213. uncountable/types/chemical_structure.py +8 -0
  214. uncountable/types/chemical_structure_t.py +28 -0
  215. uncountable/types/client_base.py +1093 -54
  216. uncountable/types/client_config.py +8 -0
  217. uncountable/types/client_config_t.py +26 -0
  218. uncountable/types/curves.py +5 -42
  219. uncountable/types/curves_t.py +51 -0
  220. uncountable/types/entity.py +8 -269
  221. uncountable/types/entity_t.py +393 -0
  222. uncountable/types/experiment_groups.py +3 -18
  223. uncountable/types/experiment_groups_t.py +27 -0
  224. uncountable/types/field_values.py +17 -60
  225. uncountable/types/field_values_t.py +204 -0
  226. uncountable/types/fields.py +3 -19
  227. uncountable/types/fields_t.py +28 -0
  228. uncountable/types/generic_upload.py +15 -0
  229. uncountable/types/generic_upload_t.py +119 -0
  230. uncountable/types/id_source.py +12 -0
  231. uncountable/types/id_source_t.py +68 -0
  232. uncountable/types/identifier.py +11 -0
  233. uncountable/types/identifier_t.py +63 -0
  234. uncountable/types/input_attributes.py +3 -24
  235. uncountable/types/input_attributes_t.py +30 -0
  236. uncountable/types/inputs.py +6 -56
  237. uncountable/types/inputs_t.py +83 -0
  238. uncountable/types/integration_server.py +9 -0
  239. uncountable/types/integration_server_t.py +42 -0
  240. uncountable/types/job_definition.py +27 -0
  241. uncountable/types/job_definition_t.py +260 -0
  242. uncountable/types/outputs.py +3 -21
  243. uncountable/types/outputs_t.py +30 -0
  244. uncountable/types/overrides.py +10 -0
  245. uncountable/types/overrides_t.py +49 -0
  246. uncountable/types/permissions.py +8 -0
  247. uncountable/types/permissions_t.py +46 -0
  248. uncountable/types/phases.py +3 -18
  249. uncountable/types/phases_t.py +27 -0
  250. uncountable/types/post_base.py +8 -0
  251. uncountable/types/post_base_t.py +30 -0
  252. uncountable/types/queued_job.py +16 -0
  253. uncountable/types/queued_job_t.py +123 -0
  254. uncountable/types/recipe_identifiers.py +12 -0
  255. uncountable/types/recipe_identifiers_t.py +76 -0
  256. uncountable/types/recipe_inputs.py +9 -0
  257. uncountable/types/recipe_inputs_t.py +30 -0
  258. uncountable/types/recipe_links.py +4 -45
  259. uncountable/types/recipe_links_t.py +54 -0
  260. uncountable/types/recipe_metadata.py +5 -45
  261. uncountable/types/recipe_metadata_t.py +58 -0
  262. uncountable/types/recipe_output_metadata.py +3 -19
  263. uncountable/types/recipe_output_metadata_t.py +28 -0
  264. uncountable/types/recipe_tags.py +3 -18
  265. uncountable/types/recipe_tags_t.py +27 -0
  266. uncountable/types/recipe_workflow_steps.py +14 -0
  267. uncountable/types/recipe_workflow_steps_t.py +95 -0
  268. uncountable/types/recipes.py +8 -0
  269. uncountable/types/recipes_t.py +25 -0
  270. uncountable/types/response.py +3 -20
  271. uncountable/types/response_t.py +26 -0
  272. uncountable/types/secret_retrieval.py +12 -0
  273. uncountable/types/secret_retrieval_t.py +75 -0
  274. uncountable/types/units.py +3 -18
  275. uncountable/types/units_t.py +27 -0
  276. uncountable/types/users.py +3 -19
  277. uncountable/types/users_t.py +28 -0
  278. uncountable/types/webhook_job.py +9 -0
  279. uncountable/types/webhook_job_t.py +37 -0
  280. uncountable/types/workflows.py +4 -27
  281. uncountable/types/workflows_t.py +39 -0
  282. UncountablePythonSDK-0.0.8.dist-info/METADATA +0 -27
  283. UncountablePythonSDK-0.0.8.dist-info/RECORD +0 -134
  284. examples/recipe-import/importer.py +0 -39
  285. type_spec/external/api/batch/execute_batch.yaml +0 -56
  286. type_spec/external/api/entity/create_entities.yaml +0 -33
  287. type_spec/external/api/entity/create_entity.yaml +0 -39
  288. type_spec/external/api/entity/get_entities_data.yaml +0 -29
  289. type_spec/external/api/entity/list_entities.yaml +0 -52
  290. type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
  291. type_spec/external/api/entity/set_values.yaml +0 -18
  292. type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
  293. type_spec/external/api/inputs/create_inputs.yaml +0 -48
  294. type_spec/external/api/inputs/get_input_data.yaml +0 -95
  295. type_spec/external/api/inputs/get_input_names.yaml +0 -38
  296. type_spec/external/api/inputs/get_inputs_data.yaml +0 -82
  297. type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -33
  298. type_spec/external/api/outputs/get_output_data.yaml +0 -92
  299. type_spec/external/api/outputs/get_output_names.yaml +0 -35
  300. type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
  301. type_spec/external/api/project/get_projects.yaml +0 -42
  302. type_spec/external/api/project/get_projects_data.yaml +0 -50
  303. type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
  304. type_spec/external/api/recipes/create_recipes.yaml +0 -47
  305. type_spec/external/api/recipes/get_curve.yaml +0 -18
  306. type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -39
  307. type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
  308. type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
  309. type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -36
  310. type_spec/external/api/recipes/get_recipes_data.yaml +0 -238
  311. type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -36
  312. type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -52
@@ -0,0 +1,95 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ from pkgs.strenum_compat import StrEnum
11
+ import dataclasses
12
+ from pkgs.serialization import serial_class
13
+ from pkgs.serialization import serial_union_annotation
14
+ from . import identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "RecipeWorkflowStepIdentifier",
18
+ "RecipeWorkflowStepIdentifierBase",
19
+ "RecipeWorkflowStepIdentifierDefault",
20
+ "RecipeWorkflowStepIdentifierKey",
21
+ "RecipeWorkflowStepIdentifierType",
22
+ "RecipeWorkflowStepIdentifierWorkflowStep",
23
+ "RecipeWorkflowStepPosition",
24
+ ]
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ class RecipeWorkflowStepIdentifierType(StrEnum):
29
+ IDENTIFIER_KEY = "identifier_key"
30
+ DEFAULT = "default"
31
+ WORKFLOW_STEP = "workflow_step"
32
+
33
+
34
+ # DO NOT MODIFY -- This file is generated by type_spec
35
+ @serial_class(
36
+ named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierBase",
37
+ )
38
+ @dataclasses.dataclass(kw_only=True)
39
+ class RecipeWorkflowStepIdentifierBase:
40
+ type: RecipeWorkflowStepIdentifierType
41
+
42
+
43
+ # DO NOT MODIFY -- This file is generated by type_spec
44
+ @serial_class(
45
+ named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierDefault",
46
+ parse_require={"type"},
47
+ )
48
+ @dataclasses.dataclass(kw_only=True)
49
+ class RecipeWorkflowStepIdentifierDefault(RecipeWorkflowStepIdentifierBase):
50
+ type: typing.Literal[RecipeWorkflowStepIdentifierType.DEFAULT] = RecipeWorkflowStepIdentifierType.DEFAULT
51
+
52
+
53
+ # DO NOT MODIFY -- This file is generated by type_spec
54
+ class RecipeWorkflowStepPosition(StrEnum):
55
+ FIRST = "first"
56
+ LAST = "last"
57
+
58
+
59
+ # DO NOT MODIFY -- This file is generated by type_spec
60
+ @serial_class(
61
+ named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierWorkflowStep",
62
+ parse_require={"type"},
63
+ )
64
+ @dataclasses.dataclass(kw_only=True)
65
+ class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase):
66
+ type: typing.Literal[RecipeWorkflowStepIdentifierType.WORKFLOW_STEP] = RecipeWorkflowStepIdentifierType.WORKFLOW_STEP
67
+ workflow_step_key: identifier_t.IdentifierKey
68
+ position: RecipeWorkflowStepPosition = RecipeWorkflowStepPosition.FIRST
69
+
70
+
71
+ # DO NOT MODIFY -- This file is generated by type_spec
72
+ @serial_class(
73
+ named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierKey",
74
+ parse_require={"type"},
75
+ )
76
+ @dataclasses.dataclass(kw_only=True)
77
+ class RecipeWorkflowStepIdentifierKey:
78
+ type: typing.Literal[RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY] = RecipeWorkflowStepIdentifierType.IDENTIFIER_KEY
79
+ recipe_workflow_step_key: identifier_t.IdentifierKey
80
+
81
+
82
+ # DO NOT MODIFY -- This file is generated by type_spec
83
+ RecipeWorkflowStepIdentifier = typing.Annotated[
84
+ typing.Union[RecipeWorkflowStepIdentifierDefault, RecipeWorkflowStepIdentifierWorkflowStep, RecipeWorkflowStepIdentifierKey],
85
+ serial_union_annotation(
86
+ named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifier",
87
+ discriminator="type",
88
+ discriminator_map={
89
+ "default": RecipeWorkflowStepIdentifierDefault,
90
+ "workflow_step": RecipeWorkflowStepIdentifierWorkflowStep,
91
+ "identifier_key": RecipeWorkflowStepIdentifierKey,
92
+ },
93
+ ),
94
+ ]
95
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,8 @@
1
+ # flake8: noqa: F821
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ # DO NOT MODIFY -- This file is generated by type_spec
6
+ # Kept only for SDK backwards compatibility
7
+ from .recipes_t import RecipeAttributeFormatting as RecipeAttributeFormatting
8
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,25 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+
13
+ __all__: list[str] = [
14
+ "RecipeAttributeFormatting",
15
+ ]
16
+
17
+
18
+ # DO NOT MODIFY -- This file is generated by type_spec
19
+ @serial_class(
20
+ named_type_path="sdk.recipes.RecipeAttributeFormatting",
21
+ )
22
+ @dataclasses.dataclass(kw_only=True)
23
+ class RecipeAttributeFormatting:
24
+ background_color: str
25
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,25 +1,8 @@
1
- # DO NOT MODIFY -- This file is generated by type_spec
2
1
  # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
- from __future__ import annotations
7
- import typing # noqa: F401
8
- import datetime # noqa: F401
9
- from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from pkgs.serialization import serial_class
12
-
13
- __all__: list[str] = [
14
- "Response",
15
- ]
16
-
17
-
18
5
  # DO NOT MODIFY -- This file is generated by type_spec
19
- @serial_class(
20
- parse_require={"status"},
21
- )
22
- @dataclass(kw_only=True)
23
- class Response:
24
- status: typing.Literal["ok"] = "ok"
6
+ # Kept only for SDK backwards compatibility
7
+ from .response_t import Response as Response
25
8
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,26 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+
13
+ __all__: list[str] = [
14
+ "Response",
15
+ ]
16
+
17
+
18
+ # DO NOT MODIFY -- This file is generated by type_spec
19
+ @serial_class(
20
+ named_type_path="sdk.response.Response",
21
+ parse_require={"status"},
22
+ )
23
+ @dataclasses.dataclass(kw_only=True)
24
+ class Response:
25
+ status: typing.Literal["ok"] = "ok"
26
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,12 @@
1
+ # flake8: noqa: F821
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ # DO NOT MODIFY -- This file is generated by type_spec
6
+ # Kept only for SDK backwards compatibility
7
+ from .secret_retrieval_t import SecretRetrievalBase as SecretRetrievalBase
8
+ from .secret_retrieval_t import SecretRetrievalType as SecretRetrievalType
9
+ from .secret_retrieval_t import SecretRetrievalEnv as SecretRetrievalEnv
10
+ from .secret_retrieval_t import SecretRetrievalAWS as SecretRetrievalAWS
11
+ from .secret_retrieval_t import SecretRetrieval as SecretRetrieval
12
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,75 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ from pkgs.strenum_compat import StrEnum
11
+ import dataclasses
12
+ from pkgs.serialization import serial_class
13
+ from pkgs.serialization import serial_union_annotation
14
+
15
+ __all__: list[str] = [
16
+ "SecretRetrieval",
17
+ "SecretRetrievalAWS",
18
+ "SecretRetrievalBase",
19
+ "SecretRetrievalEnv",
20
+ "SecretRetrievalType",
21
+ ]
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ @serial_class(
26
+ named_type_path="sdk.secret_retrieval.SecretRetrievalBase",
27
+ )
28
+ @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
29
+ class SecretRetrievalBase:
30
+ type: SecretRetrievalType
31
+
32
+
33
+ # DO NOT MODIFY -- This file is generated by type_spec
34
+ class SecretRetrievalType(StrEnum):
35
+ ENV = "env"
36
+ AWS = "aws"
37
+
38
+
39
+ # DO NOT MODIFY -- This file is generated by type_spec
40
+ @serial_class(
41
+ named_type_path="sdk.secret_retrieval.SecretRetrievalEnv",
42
+ parse_require={"type"},
43
+ )
44
+ @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
45
+ class SecretRetrievalEnv(SecretRetrievalBase):
46
+ type: typing.Literal[SecretRetrievalType.ENV] = SecretRetrievalType.ENV
47
+ env_key: str
48
+
49
+
50
+ # DO NOT MODIFY -- This file is generated by type_spec
51
+ @serial_class(
52
+ named_type_path="sdk.secret_retrieval.SecretRetrievalAWS",
53
+ parse_require={"type"},
54
+ )
55
+ @dataclasses.dataclass(kw_only=True, frozen=True, eq=True)
56
+ class SecretRetrievalAWS(SecretRetrievalBase):
57
+ type: typing.Literal[SecretRetrievalType.AWS] = SecretRetrievalType.AWS
58
+ secret_name: str
59
+ region: str
60
+ sub_key: str | None = None
61
+
62
+
63
+ # DO NOT MODIFY -- This file is generated by type_spec
64
+ SecretRetrieval = typing.Annotated[
65
+ typing.Union[SecretRetrievalEnv, SecretRetrievalAWS],
66
+ serial_union_annotation(
67
+ named_type_path="sdk.secret_retrieval.SecretRetrieval",
68
+ discriminator="type",
69
+ discriminator_map={
70
+ "env": SecretRetrievalEnv,
71
+ "aws": SecretRetrievalAWS,
72
+ },
73
+ ),
74
+ ]
75
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,23 +1,8 @@
1
- # DO NOT MODIFY -- This file is generated by type_spec
2
1
  # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
- from __future__ import annotations
7
- import typing # noqa: F401
8
- import datetime # noqa: F401
9
- from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from . import base as base_t
12
-
13
- __all__: list[str] = [
14
- "SimpleUnit",
15
- ]
16
-
17
-
18
5
  # DO NOT MODIFY -- This file is generated by type_spec
19
- @dataclass(kw_only=True)
20
- class SimpleUnit:
21
- unit_id: base_t.ObjectId
22
- name: str
6
+ # Kept only for SDK backwards compatibility
7
+ from .units_t import SimpleUnit as SimpleUnit
23
8
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,27 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from . import base_t
13
+
14
+ __all__: list[str] = [
15
+ "SimpleUnit",
16
+ ]
17
+
18
+
19
+ # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.units.SimpleUnit",
22
+ )
23
+ @dataclasses.dataclass(kw_only=True)
24
+ class SimpleUnit:
25
+ unit_id: base_t.ObjectId
26
+ name: str
27
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,24 +1,8 @@
1
- # DO NOT MODIFY -- This file is generated by type_spec
2
1
  # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
- from __future__ import annotations
7
- import typing # noqa: F401
8
- import datetime # noqa: F401
9
- from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from . import base as base_t
12
-
13
- __all__: list[str] = [
14
- "SimpleUser",
15
- ]
16
-
17
-
18
5
  # DO NOT MODIFY -- This file is generated by type_spec
19
- @dataclass(kw_only=True)
20
- class SimpleUser:
21
- user_id: base_t.ObjectId
22
- display_name: str
23
- email: str
6
+ # Kept only for SDK backwards compatibility
7
+ from .users_t import SimpleUser as SimpleUser
24
8
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,28 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from . import base_t
13
+
14
+ __all__: list[str] = [
15
+ "SimpleUser",
16
+ ]
17
+
18
+
19
+ # DO NOT MODIFY -- This file is generated by type_spec
20
+ @serial_class(
21
+ named_type_path="sdk.users.SimpleUser",
22
+ )
23
+ @dataclasses.dataclass(kw_only=True)
24
+ class SimpleUser:
25
+ user_id: base_t.ObjectId
26
+ display_name: str
27
+ email: str
28
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,9 @@
1
+ # flake8: noqa: F821
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ # DO NOT MODIFY -- This file is generated by type_spec
6
+ # Kept only for SDK backwards compatibility
7
+ from .webhook_job_t import WebhookEventPayload as WebhookEventPayload
8
+ from .webhook_job_t import WebhookEventBody as WebhookEventBody
9
+ # 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
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from . import base_t
13
+
14
+ __all__: list[str] = [
15
+ "WebhookEventBody",
16
+ "WebhookEventPayload",
17
+ ]
18
+
19
+
20
+ # DO NOT MODIFY -- This file is generated by type_spec
21
+ @serial_class(
22
+ named_type_path="sdk.webhook_job.WebhookEventPayload",
23
+ unconverted_values={"data"},
24
+ )
25
+ @dataclasses.dataclass(kw_only=True)
26
+ class WebhookEventPayload:
27
+ data: dict[str, base_t.JsonValue]
28
+
29
+
30
+ # DO NOT MODIFY -- This file is generated by type_spec
31
+ @serial_class(
32
+ named_type_path="sdk.webhook_job.WebhookEventBody",
33
+ )
34
+ @dataclasses.dataclass(kw_only=True)
35
+ class WebhookEventBody(WebhookEventPayload):
36
+ event_id: str
37
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,32 +1,9 @@
1
- # DO NOT MODIFY -- This file is generated by type_spec
2
1
  # flake8: noqa: F821
3
- # ruff: noqa: E402
2
+ # ruff: noqa: E402 Q003
4
3
  # fmt: off
5
4
  # isort: skip_file
6
- from __future__ import annotations
7
- import typing # noqa: F401
8
- import datetime # noqa: F401
9
- from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
11
- from . import base as base_t
12
-
13
- __all__: list[str] = [
14
- "SimpleWorkflow",
15
- "SimpleWorkflowStep",
16
- ]
17
-
18
-
19
- # DO NOT MODIFY -- This file is generated by type_spec
20
- @dataclass(kw_only=True)
21
- class SimpleWorkflowStep:
22
- workflow_step_id: base_t.ObjectId
23
- name: str
24
-
25
-
26
5
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclass(kw_only=True)
28
- class SimpleWorkflow:
29
- workflow_id: base_t.ObjectId
30
- name: str
31
- workflow_steps: list[SimpleWorkflowStep]
6
+ # Kept only for SDK backwards compatibility
7
+ from .workflows_t import SimpleWorkflowStep as SimpleWorkflowStep
8
+ from .workflows_t import SimpleWorkflow as SimpleWorkflow
32
9
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,39 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402 Q003
4
+ # fmt: off
5
+ # isort: skip_file
6
+ from __future__ import annotations
7
+ import typing # noqa: F401
8
+ import datetime # noqa: F401
9
+ from decimal import Decimal # noqa: F401
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from . import base_t
13
+
14
+ __all__: list[str] = [
15
+ "SimpleWorkflow",
16
+ "SimpleWorkflowStep",
17
+ ]
18
+
19
+
20
+ # DO NOT MODIFY -- This file is generated by type_spec
21
+ @serial_class(
22
+ named_type_path="sdk.workflows.SimpleWorkflowStep",
23
+ )
24
+ @dataclasses.dataclass(kw_only=True)
25
+ class SimpleWorkflowStep:
26
+ workflow_step_id: base_t.ObjectId
27
+ name: typing.Optional[str]
28
+
29
+
30
+ # DO NOT MODIFY -- This file is generated by type_spec
31
+ @serial_class(
32
+ named_type_path="sdk.workflows.SimpleWorkflow",
33
+ )
34
+ @dataclasses.dataclass(kw_only=True)
35
+ class SimpleWorkflow:
36
+ workflow_id: base_t.ObjectId
37
+ name: str
38
+ workflow_steps: list[SimpleWorkflowStep]
39
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,27 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: UncountablePythonSDK
3
- Version: 0.0.8
4
- Summary: Uncountable SDK
5
- Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
- Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
7
- Project-URL: Issues, https://github.com/uncountableinc/uncountable-python-sdk/issues
8
- Keywords: uncountable,sdk,api,uncountable-sdk
9
- Classifier: Development Status :: 4 - Beta
10
- Classifier: Environment :: Console
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Operating System :: OS Independent
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Topic :: Software Development
15
- Classifier: Topic :: Utilities
16
- Classifier: Typing :: Typed
17
- Requires-Python: >=3.11
18
- Description-Content-Type: text/markdown
19
- Requires-Dist: requests >=2.31.0
20
- Provides-Extra: test
21
- Requires-Dist: mypy >=1.8.1 ; extra == 'test'
22
- Requires-Dist: ruff >=0.2.1 ; extra == 'test'
23
- Requires-Dist: pytest >=7.4.3 ; extra == 'test'
24
- Requires-Dist: coverage[toml] >=6.5.0 ; extra == 'test'
25
- Requires-Dist: pytest-cov >=4.1.0 ; extra == 'test'
26
- Requires-Dist: pytest-xdist >=3.5.0 ; extra == 'test'
27
-