UncountablePythonSDK 0.0.7__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 (311) 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.7.dist-info → UncountablePythonSDK-0.0.92.dist-info}/WHEEL +1 -1
  4. {UncountablePythonSDK-0.0.7.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/opaque_key.py +1 -1
  49. pkgs/serialization/serial_alias.py +47 -0
  50. pkgs/serialization/serial_class.py +65 -50
  51. pkgs/serialization/serial_generic.py +16 -0
  52. pkgs/serialization/serial_union.py +84 -0
  53. pkgs/serialization/yaml.py +57 -0
  54. pkgs/serialization_util/__init__.py +7 -7
  55. pkgs/serialization_util/_get_type_for_serialization.py +1 -3
  56. pkgs/serialization_util/convert_to_snakecase.py +27 -0
  57. pkgs/serialization_util/dataclasses.py +14 -0
  58. pkgs/serialization_util/serialization_helpers.py +118 -73
  59. pkgs/strenum_compat/strenum_compat.py +1 -9
  60. pkgs/type_spec/actions_registry/__init__.py +0 -0
  61. pkgs/type_spec/actions_registry/__main__.py +126 -0
  62. pkgs/type_spec/actions_registry/emit_typescript.py +182 -0
  63. pkgs/type_spec/builder.py +475 -89
  64. pkgs/type_spec/config.py +24 -19
  65. pkgs/type_spec/emit_io_ts.py +5 -2
  66. pkgs/type_spec/emit_open_api.py +266 -32
  67. pkgs/type_spec/emit_open_api_util.py +32 -13
  68. pkgs/type_spec/emit_python.py +601 -150
  69. pkgs/type_spec/emit_typescript.py +74 -273
  70. pkgs/type_spec/emit_typescript_util.py +239 -5
  71. pkgs/type_spec/load_types.py +55 -10
  72. pkgs/type_spec/open_api_util.py +30 -41
  73. pkgs/type_spec/parts/base.py.prepart +4 -3
  74. pkgs/type_spec/type_info/emit_type_info.py +178 -16
  75. pkgs/type_spec/util.py +11 -11
  76. pkgs/type_spec/value_spec/__main__.py +3 -3
  77. pkgs/type_spec/value_spec/convert_type.py +8 -1
  78. pkgs/type_spec/value_spec/emit_python.py +13 -4
  79. uncountable/__init__.py +1 -2
  80. uncountable/core/__init__.py +12 -2
  81. uncountable/core/async_batch.py +37 -0
  82. uncountable/core/client.py +293 -43
  83. uncountable/core/environment.py +41 -0
  84. uncountable/core/file_upload.py +135 -0
  85. uncountable/core/types.py +17 -0
  86. uncountable/integration/__init__.py +0 -0
  87. uncountable/integration/cli.py +49 -0
  88. uncountable/integration/construct_client.py +51 -0
  89. uncountable/integration/cron.py +29 -0
  90. uncountable/integration/db/__init__.py +0 -0
  91. uncountable/integration/db/connect.py +18 -0
  92. uncountable/integration/db/session.py +25 -0
  93. uncountable/integration/entrypoint.py +13 -0
  94. uncountable/integration/executors/__init__.py +0 -0
  95. uncountable/integration/executors/executors.py +148 -0
  96. uncountable/integration/executors/generic_upload_executor.py +284 -0
  97. uncountable/integration/executors/script_executor.py +25 -0
  98. uncountable/integration/job.py +87 -0
  99. uncountable/integration/queue_runner/__init__.py +0 -0
  100. uncountable/integration/queue_runner/command_server/__init__.py +24 -0
  101. uncountable/integration/queue_runner/command_server/command_client.py +68 -0
  102. uncountable/integration/queue_runner/command_server/command_server.py +64 -0
  103. uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  104. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +22 -0
  105. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +40 -0
  106. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +38 -0
  107. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +129 -0
  108. uncountable/integration/queue_runner/command_server/types.py +52 -0
  109. uncountable/integration/queue_runner/datastore/__init__.py +3 -0
  110. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +93 -0
  111. uncountable/integration/queue_runner/datastore/interface.py +19 -0
  112. uncountable/integration/queue_runner/datastore/model.py +17 -0
  113. uncountable/integration/queue_runner/job_scheduler.py +163 -0
  114. uncountable/integration/queue_runner/queue_runner.py +26 -0
  115. uncountable/integration/queue_runner/types.py +7 -0
  116. uncountable/integration/queue_runner/worker.py +119 -0
  117. uncountable/integration/scan_profiles.py +67 -0
  118. uncountable/integration/scheduler.py +150 -0
  119. uncountable/integration/secret_retrieval/__init__.py +3 -0
  120. uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
  121. uncountable/integration/server.py +117 -0
  122. uncountable/integration/telemetry.py +209 -0
  123. uncountable/integration/webhook_server/entrypoint.py +170 -0
  124. uncountable/types/__init__.py +151 -5
  125. uncountable/types/api/batch/execute_batch.py +15 -7
  126. uncountable/types/api/batch/execute_batch_load_async.py +42 -0
  127. uncountable/types/api/chemical/__init__.py +1 -0
  128. uncountable/types/api/chemical/convert_chemical_formats.py +63 -0
  129. uncountable/types/api/entity/create_entities.py +23 -10
  130. uncountable/types/api/entity/create_entity.py +21 -12
  131. uncountable/types/api/entity/get_entities_data.py +19 -29
  132. uncountable/types/api/entity/grant_entity_permissions.py +48 -0
  133. uncountable/types/api/entity/list_entities.py +28 -20
  134. uncountable/types/api/entity/lock_entity.py +45 -0
  135. uncountable/types/api/entity/resolve_entity_ids.py +19 -7
  136. uncountable/types/api/entity/set_entity_field_values.py +44 -0
  137. uncountable/types/api/entity/set_values.py +13 -28
  138. uncountable/types/api/entity/transition_entity_phase.py +80 -0
  139. uncountable/types/api/entity/unlock_entity.py +44 -0
  140. uncountable/types/api/equipment/__init__.py +1 -0
  141. uncountable/types/api/equipment/associate_equipment_input.py +44 -0
  142. uncountable/types/api/field_options/__init__.py +1 -0
  143. uncountable/types/api/field_options/upsert_field_options.py +55 -0
  144. uncountable/types/api/files/__init__.py +1 -0
  145. uncountable/types/api/files/download_file.py +77 -0
  146. uncountable/types/api/id_source/__init__.py +1 -0
  147. uncountable/types/api/id_source/list_id_source.py +56 -0
  148. uncountable/types/api/id_source/match_id_source.py +54 -0
  149. uncountable/types/api/input_groups/get_input_group_names.py +18 -7
  150. uncountable/types/api/inputs/create_inputs.py +25 -24
  151. uncountable/types/api/inputs/get_input_data.py +37 -31
  152. uncountable/types/api/inputs/get_input_names.py +20 -9
  153. uncountable/types/api/inputs/get_inputs_data.py +33 -27
  154. uncountable/types/api/inputs/set_input_attribute_values.py +18 -13
  155. uncountable/types/api/inputs/set_input_category.py +44 -0
  156. uncountable/types/api/inputs/set_input_subcategories.py +45 -0
  157. uncountable/types/api/inputs/set_intermediate_type.py +50 -0
  158. uncountable/types/api/material_families/__init__.py +1 -0
  159. uncountable/types/api/material_families/update_entity_material_families.py +48 -0
  160. uncountable/types/api/outputs/get_output_data.py +38 -29
  161. uncountable/types/api/outputs/get_output_names.py +20 -9
  162. uncountable/types/api/outputs/resolve_output_conditions.py +23 -10
  163. uncountable/types/api/permissions/__init__.py +1 -0
  164. uncountable/types/api/permissions/set_core_permissions.py +105 -0
  165. uncountable/types/api/project/get_projects.py +23 -19
  166. uncountable/types/api/project/get_projects_data.py +26 -43
  167. uncountable/types/api/recipe_links/__init__.py +1 -0
  168. uncountable/types/api/recipe_links/create_recipe_link.py +46 -0
  169. uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
  170. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +21 -10
  171. uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
  172. uncountable/types/api/recipes/archive_recipes.py +42 -0
  173. uncountable/types/api/recipes/associate_recipe_as_input.py +44 -0
  174. uncountable/types/api/recipes/associate_recipe_as_lot.py +43 -0
  175. uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
  176. uncountable/types/api/recipes/create_recipe.py +51 -0
  177. uncountable/types/api/recipes/create_recipes.py +25 -24
  178. uncountable/types/api/recipes/disassociate_recipe_as_input.py +42 -0
  179. uncountable/types/api/recipes/edit_recipe_inputs.py +283 -0
  180. uncountable/types/api/recipes/get_column_calculation_values.py +58 -0
  181. uncountable/types/api/recipes/get_curve.py +13 -27
  182. uncountable/types/api/recipes/get_recipe_calculations.py +21 -21
  183. uncountable/types/api/recipes/get_recipe_links.py +14 -6
  184. uncountable/types/api/recipes/get_recipe_names.py +18 -7
  185. uncountable/types/api/recipes/get_recipe_output_metadata.py +18 -19
  186. uncountable/types/api/recipes/get_recipes_data.py +83 -144
  187. uncountable/types/api/recipes/lock_recipes.py +63 -0
  188. uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
  189. uncountable/types/api/recipes/set_recipe_inputs.py +21 -11
  190. uncountable/types/api/recipes/set_recipe_metadata.py +43 -0
  191. uncountable/types/api/recipes/set_recipe_output_annotations.py +115 -0
  192. uncountable/types/api/recipes/set_recipe_output_file.py +56 -0
  193. uncountable/types/api/recipes/set_recipe_outputs.py +28 -15
  194. uncountable/types/api/recipes/set_recipe_tags.py +109 -0
  195. uncountable/types/api/recipes/unarchive_recipes.py +41 -0
  196. uncountable/types/api/recipes/unlock_recipes.py +50 -0
  197. uncountable/types/api/triggers/__init__.py +1 -0
  198. uncountable/types/api/triggers/run_trigger.py +43 -0
  199. uncountable/types/api/uploader/__init__.py +1 -0
  200. uncountable/types/api/uploader/invoke_uploader.py +47 -0
  201. uncountable/types/async_batch.py +13 -0
  202. uncountable/types/async_batch_processor.py +384 -0
  203. uncountable/types/async_batch_t.py +97 -0
  204. uncountable/types/async_jobs.py +9 -0
  205. uncountable/types/async_jobs_t.py +53 -0
  206. uncountable/types/auth_retrieval.py +12 -0
  207. uncountable/types/auth_retrieval_t.py +75 -0
  208. uncountable/types/base.py +5 -78
  209. uncountable/types/base_t.py +85 -0
  210. uncountable/types/calculations.py +8 -0
  211. uncountable/types/calculations_t.py +27 -0
  212. uncountable/types/chemical_structure.py +8 -0
  213. uncountable/types/chemical_structure_t.py +28 -0
  214. uncountable/types/client_base.py +1115 -76
  215. uncountable/types/client_config.py +8 -0
  216. uncountable/types/client_config_t.py +26 -0
  217. uncountable/types/curves.py +10 -0
  218. uncountable/types/curves_t.py +51 -0
  219. uncountable/types/entity.py +8 -266
  220. uncountable/types/entity_t.py +393 -0
  221. uncountable/types/experiment_groups.py +8 -0
  222. uncountable/types/experiment_groups_t.py +27 -0
  223. uncountable/types/field_values.py +17 -23
  224. uncountable/types/field_values_t.py +204 -0
  225. uncountable/types/fields.py +8 -0
  226. uncountable/types/fields_t.py +28 -0
  227. uncountable/types/generic_upload.py +15 -0
  228. uncountable/types/generic_upload_t.py +119 -0
  229. uncountable/types/id_source.py +12 -0
  230. uncountable/types/id_source_t.py +68 -0
  231. uncountable/types/identifier.py +11 -0
  232. uncountable/types/identifier_t.py +63 -0
  233. uncountable/types/input_attributes.py +8 -0
  234. uncountable/types/input_attributes_t.py +30 -0
  235. uncountable/types/inputs.py +11 -0
  236. uncountable/types/inputs_t.py +83 -0
  237. uncountable/types/integration_server.py +9 -0
  238. uncountable/types/integration_server_t.py +42 -0
  239. uncountable/types/job_definition.py +27 -0
  240. uncountable/types/job_definition_t.py +260 -0
  241. uncountable/types/outputs.py +8 -0
  242. uncountable/types/outputs_t.py +30 -0
  243. uncountable/types/overrides.py +10 -0
  244. uncountable/types/overrides_t.py +49 -0
  245. uncountable/types/permissions.py +8 -0
  246. uncountable/types/permissions_t.py +46 -0
  247. uncountable/types/phases.py +8 -0
  248. uncountable/types/phases_t.py +27 -0
  249. uncountable/types/post_base.py +8 -0
  250. uncountable/types/post_base_t.py +30 -0
  251. uncountable/types/queued_job.py +16 -0
  252. uncountable/types/queued_job_t.py +123 -0
  253. uncountable/types/recipe_identifiers.py +12 -0
  254. uncountable/types/recipe_identifiers_t.py +76 -0
  255. uncountable/types/recipe_inputs.py +9 -0
  256. uncountable/types/recipe_inputs_t.py +30 -0
  257. uncountable/types/recipe_links.py +4 -44
  258. uncountable/types/recipe_links_t.py +54 -0
  259. uncountable/types/recipe_metadata.py +10 -0
  260. uncountable/types/recipe_metadata_t.py +58 -0
  261. uncountable/types/recipe_output_metadata.py +8 -0
  262. uncountable/types/recipe_output_metadata_t.py +28 -0
  263. uncountable/types/recipe_tags.py +8 -0
  264. uncountable/types/recipe_tags_t.py +27 -0
  265. uncountable/types/recipe_workflow_steps.py +14 -0
  266. uncountable/types/recipe_workflow_steps_t.py +95 -0
  267. uncountable/types/recipes.py +8 -0
  268. uncountable/types/recipes_t.py +25 -0
  269. uncountable/types/response.py +8 -0
  270. uncountable/types/response_t.py +26 -0
  271. uncountable/types/secret_retrieval.py +12 -0
  272. uncountable/types/secret_retrieval_t.py +75 -0
  273. uncountable/types/units.py +8 -0
  274. uncountable/types/units_t.py +27 -0
  275. uncountable/types/users.py +8 -0
  276. uncountable/types/users_t.py +28 -0
  277. uncountable/types/webhook_job.py +9 -0
  278. uncountable/types/webhook_job_t.py +37 -0
  279. uncountable/types/workflows.py +9 -0
  280. uncountable/types/workflows_t.py +39 -0
  281. UncountablePythonSDK-0.0.7.dist-info/METADATA +0 -27
  282. UncountablePythonSDK-0.0.7.dist-info/RECORD +0 -119
  283. examples/recipe-import/importer.py +0 -39
  284. type_spec/external/api/batch/execute_batch.yaml +0 -56
  285. type_spec/external/api/entity/create_entities.yaml +0 -33
  286. type_spec/external/api/entity/create_entity.yaml +0 -39
  287. type_spec/external/api/entity/get_entities_data.yaml +0 -55
  288. type_spec/external/api/entity/list_entities.yaml +0 -62
  289. type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
  290. type_spec/external/api/entity/set_values.yaml +0 -45
  291. type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
  292. type_spec/external/api/inputs/create_inputs.yaml +0 -61
  293. type_spec/external/api/inputs/get_input_data.yaml +0 -108
  294. type_spec/external/api/inputs/get_input_names.yaml +0 -38
  295. type_spec/external/api/inputs/get_inputs_data.yaml +0 -95
  296. type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -37
  297. type_spec/external/api/outputs/get_output_data.yaml +0 -103
  298. type_spec/external/api/outputs/get_output_names.yaml +0 -35
  299. type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
  300. type_spec/external/api/project/get_projects.yaml +0 -52
  301. type_spec/external/api/project/get_projects_data.yaml +0 -86
  302. type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
  303. type_spec/external/api/recipes/create_recipes.yaml +0 -60
  304. type_spec/external/api/recipes/get_curve.yaml +0 -50
  305. type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -49
  306. type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
  307. type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
  308. type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -49
  309. type_spec/external/api/recipes/get_recipes_data.yaml +0 -372
  310. type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -36
  311. type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -56
@@ -0,0 +1,54 @@
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
+ from ... import id_source_t
14
+
15
+ __all__: list[str] = [
16
+ "Arguments",
17
+ "Data",
18
+ "ENDPOINT_METHOD",
19
+ "ENDPOINT_PATH",
20
+ "Match",
21
+ ]
22
+
23
+ ENDPOINT_METHOD = "GET"
24
+ ENDPOINT_PATH = "api/external/id_source/match_id_source"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.id_source.match_id_source.Arguments",
30
+ )
31
+ @dataclasses.dataclass(kw_only=True)
32
+ class Arguments:
33
+ spec: id_source_t.IdSourceSpec
34
+ names: list[str]
35
+
36
+
37
+ # DO NOT MODIFY -- This file is generated by type_spec
38
+ @serial_class(
39
+ named_type_path="sdk.api.id_source.match_id_source.Match",
40
+ )
41
+ @dataclasses.dataclass(kw_only=True)
42
+ class Match:
43
+ name: str
44
+ ids: list[typing.Union[base_t.ObjectId, str]]
45
+
46
+
47
+ # DO NOT MODIFY -- This file is generated by type_spec
48
+ @serial_class(
49
+ named_type_path="sdk.api.id_source.match_id_source.Data",
50
+ )
51
+ @dataclasses.dataclass(kw_only=True)
52
+ class Data:
53
+ results: list[Match]
54
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,13 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
11
13
 
12
14
  __all__: list[str] = [
13
15
  "Arguments",
@@ -22,20 +24,29 @@ ENDPOINT_PATH = "api/external/input_groups/external_get_input_group_names"
22
24
 
23
25
 
24
26
  # DO NOT MODIFY -- This file is generated by type_spec
25
- @dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.input_groups.get_input_group_names.Arguments",
29
+ )
30
+ @dataclasses.dataclass(kw_only=True)
26
31
  class Arguments:
27
- material_family_id: int
32
+ material_family_id: base_t.ObjectId
28
33
 
29
34
 
30
35
  # DO NOT MODIFY -- This file is generated by type_spec
31
- @dataclass(kw_only=True)
36
+ @serial_class(
37
+ named_type_path="sdk.api.input_groups.get_input_group_names.SimpleInputGroup",
38
+ )
39
+ @dataclasses.dataclass(kw_only=True)
32
40
  class SimpleInputGroup:
33
- input_group_id: int
41
+ input_group_id: base_t.ObjectId
34
42
  name: str
35
43
 
36
44
 
37
45
  # DO NOT MODIFY -- This file is generated by type_spec
38
- @dataclass(kw_only=True)
46
+ @serial_class(
47
+ named_type_path="sdk.api.input_groups.get_input_group_names.Data",
48
+ )
49
+ @dataclasses.dataclass(kw_only=True)
39
50
  class Data:
40
51
  input_groups: list[SimpleInputGroup]
41
52
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,22 +1,23 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
- from ... import base as base_t
12
+ from ... import base_t
13
+ from ... import input_attributes_t
14
+ from ... import inputs_t
13
15
 
14
16
  __all__: list[str] = [
15
17
  "Arguments",
16
18
  "Data",
17
19
  "ENDPOINT_METHOD",
18
20
  "ENDPOINT_PATH",
19
- "InputAttributeValue",
20
21
  "InputSimple",
21
22
  "InputToCreate",
22
23
  ]
@@ -26,42 +27,42 @@ ENDPOINT_PATH = "api/external/inputs/external_create_inputs"
26
27
 
27
28
 
28
29
  # DO NOT MODIFY -- This file is generated by type_spec
29
- @dataclass(kw_only=True)
30
+ @serial_class(
31
+ named_type_path="sdk.api.inputs.create_inputs.Arguments",
32
+ )
33
+ @dataclasses.dataclass(kw_only=True)
30
34
  class Arguments:
31
35
  inputs_to_create: list[InputToCreate]
32
36
 
33
37
 
34
38
  # DO NOT MODIFY -- This file is generated by type_spec
35
- @dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.create_inputs.InputToCreate",
41
+ )
42
+ @dataclasses.dataclass(kw_only=True)
36
43
  class InputToCreate:
37
44
  name: str
38
- material_family_ids: list[int]
39
- quantity_type: typing.Union[typing.Literal["numeric"], typing.Literal["text"]]
40
- type: typing.Union[typing.Literal["ingredient"], typing.Literal["process_parameter"]]
41
- attributes: typing.Optional[list[InputAttributeValue]] = None
42
- category_id: typing.Optional[int] = None
45
+ material_family_ids: list[base_t.ObjectId]
46
+ quantity_type: typing.Union[typing.Literal[inputs_t.IngredientQuantityType.NUMERIC], typing.Literal[inputs_t.IngredientQuantityType.TEXT]]
47
+ type: typing.Union[typing.Literal[inputs_t.IngredientType.INGREDIENT], typing.Literal[inputs_t.IngredientType.PROCESS_PARAMETER]]
48
+ attributes: list[input_attributes_t.InputAttributeValue] | None = None
49
+ category_id: base_t.ObjectId | None = None
43
50
 
44
51
 
45
52
  # DO NOT MODIFY -- This file is generated by type_spec
46
53
  @serial_class(
47
- unconverted_values={"quantity_json"},
48
- to_string_values={"quantity_dec"},
54
+ named_type_path="sdk.api.inputs.create_inputs.InputSimple",
49
55
  )
50
- @dataclass(kw_only=True)
51
- class InputAttributeValue:
52
- attribute_id: int
53
- quantity_dec: typing.Optional[Decimal] = None
54
- quantity_json: typing.Optional[base_t.JsonValue] = None
55
-
56
-
57
- # DO NOT MODIFY -- This file is generated by type_spec
58
- @dataclass(kw_only=True)
56
+ @dataclasses.dataclass(kw_only=True)
59
57
  class InputSimple:
60
- input_id: int
58
+ input_id: base_t.ObjectId
61
59
 
62
60
 
63
61
  # DO NOT MODIFY -- This file is generated by type_spec
64
- @dataclass(kw_only=True)
62
+ @serial_class(
63
+ named_type_path="sdk.api.inputs.create_inputs.Data",
64
+ )
65
+ @dataclasses.dataclass(kw_only=True)
65
66
  class Data:
66
67
  inputs: list[InputSimple]
67
68
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,15 +1,16 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
- from ... import base as base_t
12
+ from ... import base_t
13
+ from ... import input_attributes_t
13
14
 
14
15
  __all__: list[str] = [
15
16
  "Arguments",
@@ -17,7 +18,6 @@ __all__: list[str] = [
17
18
  "ENDPOINT_METHOD",
18
19
  "ENDPOINT_PATH",
19
20
  "FullInput",
20
- "InputAttrVal",
21
21
  "SimpleInputAttr",
22
22
  "SimpleInputGlobalCategory",
23
23
  "SimpleInputSubcategory",
@@ -28,63 +28,69 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_data"
28
28
 
29
29
 
30
30
  # DO NOT MODIFY -- This file is generated by type_spec
31
- @dataclass(kw_only=True)
31
+ @serial_class(
32
+ named_type_path="sdk.api.inputs.get_input_data.Arguments",
33
+ )
34
+ @dataclasses.dataclass(kw_only=True)
32
35
  class Arguments:
33
- material_family_id: int
34
- input_ids: typing.Optional[list[int]]
35
- offset: typing.Optional[int]
36
+ material_family_id: base_t.ObjectId
37
+ input_ids: typing.Optional[list[base_t.ObjectId]]
36
38
  is_parameter: typing.Optional[bool]
37
- limit: typing.Optional[int]
39
+ offset: typing.Optional[int] | None = None
40
+ limit: typing.Optional[int] | None = None
38
41
 
39
42
 
40
43
  # DO NOT MODIFY -- This file is generated by type_spec
41
44
  @serial_class(
42
- unconverted_values={"quantity_json"},
43
- to_string_values={"quantity_dec"},
45
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputAttr",
44
46
  )
45
- @dataclass(kw_only=True)
46
- class InputAttrVal:
47
- attribute_id: int
48
- quantity_dec: Decimal
49
- quantity_json: base_t.JsonValue
50
-
51
-
52
- # DO NOT MODIFY -- This file is generated by type_spec
53
- @dataclass(kw_only=True)
47
+ @dataclasses.dataclass(kw_only=True)
54
48
  class SimpleInputAttr:
55
- attribute_id: int
49
+ attribute_id: base_t.ObjectId
56
50
  name: str
57
51
  quantity_type: str
58
52
 
59
53
 
60
54
  # DO NOT MODIFY -- This file is generated by type_spec
61
- @dataclass(kw_only=True)
55
+ @serial_class(
56
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputGlobalCategory",
57
+ )
58
+ @dataclasses.dataclass(kw_only=True)
62
59
  class SimpleInputGlobalCategory:
63
- category_id: int
60
+ category_id: base_t.ObjectId
64
61
  name: str
65
62
 
66
63
 
67
64
  # DO NOT MODIFY -- This file is generated by type_spec
68
- @dataclass(kw_only=True)
65
+ @serial_class(
66
+ named_type_path="sdk.api.inputs.get_input_data.SimpleInputSubcategory",
67
+ )
68
+ @dataclasses.dataclass(kw_only=True)
69
69
  class SimpleInputSubcategory:
70
- subcategory_id: int
70
+ subcategory_id: base_t.ObjectId
71
71
  name: str
72
72
 
73
73
 
74
74
  # DO NOT MODIFY -- This file is generated by type_spec
75
- @dataclass(kw_only=True)
75
+ @serial_class(
76
+ named_type_path="sdk.api.inputs.get_input_data.FullInput",
77
+ )
78
+ @dataclasses.dataclass(kw_only=True)
76
79
  class FullInput:
77
- input_id: int
80
+ input_id: base_t.ObjectId
78
81
  name: str
79
82
  quantity_type: str
80
83
  is_parameter: bool
81
- attributes: list[InputAttrVal]
82
- global_category_id: int
83
- subcategory_ids: list[int]
84
+ attributes: list[input_attributes_t.InputAttributeValue]
85
+ global_category_id: typing.Optional[base_t.ObjectId]
86
+ subcategory_ids: list[base_t.ObjectId]
84
87
 
85
88
 
86
89
  # DO NOT MODIFY -- This file is generated by type_spec
87
- @dataclass(kw_only=True)
90
+ @serial_class(
91
+ named_type_path="sdk.api.inputs.get_input_data.Data",
92
+ )
93
+ @dataclasses.dataclass(kw_only=True)
88
94
  class Data:
89
95
  inputs: list[FullInput]
90
96
  attrs: list[SimpleInputAttr]
@@ -1,13 +1,15 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from ... import base_t
11
13
 
12
14
  __all__: list[str] = [
13
15
  "Arguments",
@@ -22,23 +24,32 @@ ENDPOINT_PATH = "api/external/inputs/external_get_input_names"
22
24
 
23
25
 
24
26
  # DO NOT MODIFY -- This file is generated by type_spec
25
- @dataclass(kw_only=True)
27
+ @serial_class(
28
+ named_type_path="sdk.api.inputs.get_input_names.Arguments",
29
+ )
30
+ @dataclasses.dataclass(kw_only=True)
26
31
  class Arguments:
27
- material_family_id: int
28
- offset: typing.Optional[int]
32
+ material_family_id: base_t.ObjectId
29
33
  is_parameter: typing.Optional[bool]
30
- limit: typing.Optional[int]
34
+ offset: typing.Optional[int] | None = None
35
+ limit: typing.Optional[int] | None = None
31
36
 
32
37
 
33
38
  # DO NOT MODIFY -- This file is generated by type_spec
34
- @dataclass(kw_only=True)
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.get_input_names.InputWithName",
41
+ )
42
+ @dataclasses.dataclass(kw_only=True)
35
43
  class InputWithName:
36
- input_id: int
44
+ input_id: base_t.ObjectId
37
45
  name: str
38
46
 
39
47
 
40
48
  # DO NOT MODIFY -- This file is generated by type_spec
41
- @dataclass(kw_only=True)
49
+ @serial_class(
50
+ named_type_path="sdk.api.inputs.get_input_names.Data",
51
+ )
52
+ @dataclasses.dataclass(kw_only=True)
42
53
  class Data:
43
54
  inputs: list[InputWithName]
44
55
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,15 +1,16 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
- from ... import base as base_t
12
+ from ... import base_t
13
+ from ... import input_attributes_t
13
14
 
14
15
  __all__: list[str] = [
15
16
  "Arguments",
@@ -17,7 +18,6 @@ __all__: list[str] = [
17
18
  "Data",
18
19
  "ENDPOINT_METHOD",
19
20
  "ENDPOINT_PATH",
20
- "InputAttributeValue",
21
21
  "InputCategory",
22
22
  "InputDetails",
23
23
  "InputTag",
@@ -28,60 +28,66 @@ ENDPOINT_PATH = "api/external/inputs/external_get_inputs_data"
28
28
 
29
29
 
30
30
  # DO NOT MODIFY -- This file is generated by type_spec
31
- @dataclass(kw_only=True)
31
+ @serial_class(
32
+ named_type_path="sdk.api.inputs.get_inputs_data.Arguments",
33
+ )
34
+ @dataclasses.dataclass(kw_only=True)
32
35
  class Arguments:
33
- input_ids: list[int]
36
+ input_ids: list[base_t.ObjectId]
34
37
 
35
38
 
36
39
  # DO NOT MODIFY -- This file is generated by type_spec
37
- @dataclass(kw_only=True)
40
+ @serial_class(
41
+ named_type_path="sdk.api.inputs.get_inputs_data.AttributeDetails",
42
+ )
43
+ @dataclasses.dataclass(kw_only=True)
38
44
  class AttributeDetails:
39
- attribute_id: int
45
+ attribute_id: base_t.ObjectId
40
46
  name: str
41
47
  quantity_type: str
42
48
 
43
49
 
44
50
  # DO NOT MODIFY -- This file is generated by type_spec
45
51
  @serial_class(
46
- unconverted_values={"quantity_json"},
47
- to_string_values={"quantity_dec"},
52
+ named_type_path="sdk.api.inputs.get_inputs_data.InputTag",
48
53
  )
49
- @dataclass(kw_only=True)
50
- class InputAttributeValue:
51
- attribute_id: int
52
- quantity_dec: Decimal
53
- quantity_json: base_t.JsonValue
54
-
55
-
56
- # DO NOT MODIFY -- This file is generated by type_spec
57
- @dataclass(kw_only=True)
54
+ @dataclasses.dataclass(kw_only=True)
58
55
  class InputTag:
59
- tag_id: int
56
+ tag_id: base_t.ObjectId
60
57
  tag_name: str
61
58
 
62
59
 
63
60
  # DO NOT MODIFY -- This file is generated by type_spec
64
- @dataclass(kw_only=True)
61
+ @serial_class(
62
+ named_type_path="sdk.api.inputs.get_inputs_data.InputCategory",
63
+ )
64
+ @dataclasses.dataclass(kw_only=True)
65
65
  class InputCategory:
66
- material_family_id: int
67
- category_id: int
66
+ material_family_id: base_t.ObjectId
67
+ category_id: base_t.ObjectId
68
68
  category_name: str
69
69
 
70
70
 
71
71
  # DO NOT MODIFY -- This file is generated by type_spec
72
- @dataclass(kw_only=True)
72
+ @serial_class(
73
+ named_type_path="sdk.api.inputs.get_inputs_data.InputDetails",
74
+ )
75
+ @dataclasses.dataclass(kw_only=True)
73
76
  class InputDetails:
74
- input_id: int
77
+ input_id: base_t.ObjectId
75
78
  name: str
76
79
  quantity_type: str
77
80
  type: str
78
- attributes: list[InputAttributeValue]
81
+ attributes: list[input_attributes_t.InputAttributeValue]
79
82
  categories: list[InputCategory]
80
83
  tags: list[InputTag]
81
84
 
82
85
 
83
86
  # DO NOT MODIFY -- This file is generated by type_spec
84
- @dataclass(kw_only=True)
87
+ @serial_class(
88
+ named_type_path="sdk.api.inputs.get_inputs_data.Data",
89
+ )
90
+ @dataclasses.dataclass(kw_only=True)
85
91
  class Data:
86
92
  input_details: list[InputDetails]
87
93
  input_attributes: list[AttributeDetails]
@@ -1,15 +1,16 @@
1
1
  # DO NOT MODIFY -- This file is generated by type_spec
2
2
  # flake8: noqa: F821
3
- # ruff: noqa: E402
3
+ # ruff: noqa: E402 Q003
4
4
  # fmt: off
5
5
  # isort: skip_file
6
6
  from __future__ import annotations
7
7
  import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
- from dataclasses import dataclass
10
+ import dataclasses
11
11
  from pkgs.serialization import serial_class
12
- from ... import base as base_t
12
+ from ... import base_t
13
+ from ... import response_t
13
14
 
14
15
  __all__: list[str] = [
15
16
  "Arguments",
@@ -24,29 +25,33 @@ ENDPOINT_PATH = "api/external/inputs/external_set_input_attribute_values"
24
25
 
25
26
 
26
27
  # DO NOT MODIFY -- This file is generated by type_spec
27
- @dataclass(kw_only=True)
28
+ @serial_class(
29
+ named_type_path="sdk.api.inputs.set_input_attribute_values.Arguments",
30
+ )
31
+ @dataclasses.dataclass(kw_only=True)
28
32
  class Arguments:
29
33
  attribute_values: list[InputAttributeValue]
30
34
 
31
35
 
32
36
  # DO NOT MODIFY -- This file is generated by type_spec
33
37
  @serial_class(
38
+ named_type_path="sdk.api.inputs.set_input_attribute_values.InputAttributeValue",
34
39
  unconverted_values={"quantity_json"},
35
40
  to_string_values={"quantity_dec"},
36
41
  )
37
- @dataclass(kw_only=True)
42
+ @dataclasses.dataclass(kw_only=True)
38
43
  class InputAttributeValue:
39
- input_id: int
40
- attribute_id: int
41
- quantity_dec: typing.Optional[Decimal] = None
42
- quantity_json: typing.Optional[base_t.JsonValue] = None
44
+ input_id: base_t.ObjectId
45
+ attribute_id: base_t.ObjectId
46
+ quantity_dec: Decimal | None = None
47
+ quantity_json: base_t.JsonValue | None = None
43
48
 
44
49
 
45
50
  # DO NOT MODIFY -- This file is generated by type_spec
46
51
  @serial_class(
47
- parse_require={"status"},
52
+ named_type_path="sdk.api.inputs.set_input_attribute_values.Data",
48
53
  )
49
- @dataclass(kw_only=True)
50
- class Data:
51
- status: typing.Literal["ok"] = "ok"
54
+ @dataclasses.dataclass(kw_only=True)
55
+ class Data(response_t.Response):
56
+ pass
52
57
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,44 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # 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 identifier_t
13
+ from ... import response_t
14
+
15
+ __all__: list[str] = [
16
+ "Arguments",
17
+ "Data",
18
+ "ENDPOINT_METHOD",
19
+ "ENDPOINT_PATH",
20
+ ]
21
+
22
+ ENDPOINT_METHOD = "POST"
23
+ ENDPOINT_PATH = "api/external/inputs/external_set_input_category"
24
+
25
+
26
+ # DO NOT MODIFY -- This file is generated by type_spec
27
+ @serial_class(
28
+ named_type_path="sdk.api.inputs.set_input_category.Arguments",
29
+ )
30
+ @dataclasses.dataclass(kw_only=True)
31
+ class Arguments:
32
+ input_key: identifier_t.IdentifierKey
33
+ category_id: typing.Optional[int]
34
+ material_family_ids: list[int] | None = None
35
+
36
+
37
+ # DO NOT MODIFY -- This file is generated by type_spec
38
+ @serial_class(
39
+ named_type_path="sdk.api.inputs.set_input_category.Data",
40
+ )
41
+ @dataclasses.dataclass(kw_only=True)
42
+ class Data(response_t.Response):
43
+ pass
44
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,45 @@
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 identifier_t
13
+ from ... import post_base_t
14
+ from ... import response_t
15
+
16
+ __all__: list[str] = [
17
+ "Arguments",
18
+ "Data",
19
+ "ENDPOINT_METHOD",
20
+ "ENDPOINT_PATH",
21
+ ]
22
+
23
+ ENDPOINT_METHOD = "POST"
24
+ ENDPOINT_PATH = "api/external/inputs/external_set_input_subcategories"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.inputs.set_input_subcategories.Arguments",
30
+ )
31
+ @dataclasses.dataclass(kw_only=True)
32
+ class Arguments:
33
+ input_key: identifier_t.IdentifierKey
34
+ subcategory_ids: list[int]
35
+ update_type: post_base_t.UpdateType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.api.inputs.set_input_subcategories.Data",
41
+ )
42
+ @dataclasses.dataclass(kw_only=True)
43
+ class Data(response_t.Response):
44
+ pass
45
+ # DO NOT MODIFY -- This file is generated by type_spec