UncountablePythonSDK 0.0.22__tar.gz → 0.0.24__tar.gz

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 (224) hide show
  1. {uncountablepythonsdk-0.0.22/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.24}/PKG-INFO +1 -1
  2. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  3. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/UncountablePythonSDK.egg-info/SOURCES.txt +2 -0
  4. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/builder.py +1 -0
  5. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/emit_io_ts.py +4 -1
  6. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/emit_open_api.py +4 -0
  7. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/emit_python.py +6 -0
  8. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/emit_typescript.py +3 -0
  9. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/open_api_util.py +13 -4
  10. uncountablepythonsdk-0.0.24/type_spec/external/api/recipes/archive_recipes.yaml +20 -0
  11. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/edit_recipe_inputs.yaml +0 -1
  12. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/__init__.py +2 -0
  13. uncountablepythonsdk-0.0.24/uncountable/types/api/recipes/archive_recipes.py +35 -0
  14. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/async_batch.py +1 -0
  15. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/client_base.py +48 -0
  16. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/.github/workflows/documentation.yml +0 -0
  17. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/.github/workflows/publish.yml +0 -0
  18. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/.gitignore +0 -0
  19. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/README.md +0 -0
  20. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  21. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  22. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  23. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/.gitignore +0 -0
  24. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/conf.py +0 -0
  25. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/index.md +0 -0
  26. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/justfile +0 -0
  27. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/quickstart.md +0 -0
  28. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/requirements.txt +0 -0
  29. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/android-chrome-192x192.png +0 -0
  30. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/android-chrome-512x512.png +0 -0
  31. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/apple-touch-icon.png +0 -0
  32. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/browserconfig.xml +0 -0
  33. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/favicon-16x16.png +0 -0
  34. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/favicon-32x32.png +0 -0
  35. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/manifest.json +0 -0
  36. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/mstile-150x150.png +0 -0
  37. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  38. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/docs/static/logo_blue.png +0 -0
  39. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/examples/async_batch.py +0 -0
  40. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/examples/create_entity.py +0 -0
  41. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/examples/recipe-import/importer.py +0 -0
  42. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/examples/upload_files.py +0 -0
  43. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/__init__.py +0 -0
  44. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/argument_parser/__init__.py +0 -0
  45. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/argument_parser/_is_enum.py +0 -0
  46. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  47. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/argument_parser/argument_parser.py +0 -0
  48. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/argument_parser/case_convert.py +0 -0
  49. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/serialization/__init__.py +0 -0
  50. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/serialization/missing_sentry.py +0 -0
  51. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/serialization/opaque_key.py +0 -0
  52. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/serialization/serial_class.py +0 -0
  53. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/serialization_util/__init__.py +0 -0
  54. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  55. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/serialization_util/serialization_helpers.py +0 -0
  56. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/strenum_compat/__init__.py +0 -0
  57. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/strenum_compat/strenum_compat.py +0 -0
  58. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/__init__.py +0 -0
  59. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/__main__.py +0 -0
  60. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  61. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  62. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  63. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/config.py +0 -0
  64. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/emit_open_api_util.py +0 -0
  65. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/emit_typescript_util.py +0 -0
  66. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/load_types.py +0 -0
  67. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/parts/base.py.prepart +0 -0
  68. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  69. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/test.py +0 -0
  70. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/type_info/__main__.py +0 -0
  71. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
  72. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/util.py +0 -0
  73. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/value_spec/__init__.py +0 -0
  74. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/value_spec/__main__.py +0 -0
  75. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  76. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  77. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pkgs/type_spec/value_spec/types.py +0 -0
  78. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/pyproject.toml +0 -0
  79. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/setup.cfg +0 -0
  80. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/batch/execute_batch.yaml +0 -0
  81. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/batch/execute_batch_load_async.yaml +0 -0
  82. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/chemical/convert_chemical_formats.yaml +0 -0
  83. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/entity/create_entities.yaml +0 -0
  84. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/entity/create_entity.yaml +0 -0
  85. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/entity/get_entities_data.yaml +0 -0
  86. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/entity/list_entities.yaml +0 -0
  87. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/entity/resolve_entity_ids.yaml +0 -0
  88. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/entity/set_values.yaml +0 -0
  89. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/entity/transition_entity_phase.yaml +0 -0
  90. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/id_source/list_id_source.yaml +0 -0
  91. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/id_source/match_id_source.yaml +0 -0
  92. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/input_groups/get_input_group_names.yaml +0 -0
  93. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/inputs/create_inputs.yaml +0 -0
  94. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/inputs/get_input_data.yaml +0 -0
  95. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/inputs/get_input_names.yaml +0 -0
  96. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/inputs/get_inputs_data.yaml +0 -0
  97. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -0
  98. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/outputs/get_output_data.yaml +0 -0
  99. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/outputs/get_output_names.yaml +0 -0
  100. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -0
  101. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/permissions/set_core_permissions.yaml +0 -0
  102. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/project/get_projects.yaml +0 -0
  103. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/project/get_projects_data.yaml +0 -0
  104. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipe_links/create_recipe_link.yaml +0 -0
  105. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -0
  106. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/associate_recipe_as_input.yaml +0 -0
  107. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/associate_recipe_as_lot.yaml +0 -0
  108. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/create_recipe.yaml +0 -0
  109. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/create_recipes.yaml +0 -0
  110. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/disassociate_recipe_as_input.yaml +0 -0
  111. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/get_curve.yaml +0 -0
  112. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -0
  113. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/get_recipe_links.yaml +0 -0
  114. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/get_recipe_names.yaml +0 -0
  115. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -0
  116. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/get_recipes_data.yaml +0 -0
  117. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -0
  118. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/set_recipe_metadata.yaml +0 -0
  119. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -0
  120. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/recipes/set_recipe_tags.yaml +0 -0
  121. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/type_spec/external/api/triggers/run_trigger.yaml +0 -0
  122. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/__init__.py +0 -0
  123. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/core/__init__.py +0 -0
  124. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/core/async_batch.py +0 -0
  125. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/core/client.py +0 -0
  126. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/core/file_upload.py +0 -0
  127. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/core/types.py +0 -0
  128. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/__init__.py +0 -0
  129. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/construct_client.py +0 -0
  130. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/cron.py +0 -0
  131. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/db/__init__.py +0 -0
  132. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/db/connect.py +0 -0
  133. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/entrypoint.py +0 -0
  134. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/executors/__init__.py +0 -0
  135. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/executors/script_executor.py +0 -0
  136. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/job.py +0 -0
  137. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/server.py +0 -0
  138. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/integration/types.py +0 -0
  139. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/py.typed +0 -0
  140. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/__init__.py +0 -0
  141. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/batch/__init__.py +0 -0
  142. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/batch/execute_batch.py +0 -0
  143. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  144. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/chemical/__init__.py +0 -0
  145. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  146. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/__init__.py +0 -0
  147. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/create_entities.py +0 -0
  148. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/create_entity.py +0 -0
  149. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/get_entities_data.py +0 -0
  150. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/list_entities.py +0 -0
  151. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  152. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/set_values.py +0 -0
  153. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  154. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/id_source/__init__.py +0 -0
  155. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/id_source/list_id_source.py +0 -0
  156. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/id_source/match_id_source.py +0 -0
  157. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/input_groups/__init__.py +0 -0
  158. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  159. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/inputs/__init__.py +0 -0
  160. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/inputs/create_inputs.py +0 -0
  161. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/inputs/get_input_data.py +0 -0
  162. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/inputs/get_input_names.py +0 -0
  163. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  164. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  165. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/outputs/__init__.py +0 -0
  166. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/outputs/get_output_data.py +0 -0
  167. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/outputs/get_output_names.py +0 -0
  168. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  169. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/permissions/__init__.py +0 -0
  170. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  171. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/project/__init__.py +0 -0
  172. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/project/get_projects.py +0 -0
  173. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/project/get_projects_data.py +0 -0
  174. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipe_links/__init__.py +0 -0
  175. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  176. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  177. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  178. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/__init__.py +0 -0
  179. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  180. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  181. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/create_recipe.py +0 -0
  182. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/create_recipes.py +0 -0
  183. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  184. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  185. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/get_curve.py +0 -0
  186. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  187. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  188. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  189. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  190. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  191. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  192. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  193. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
  194. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  195. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/triggers/__init__.py +0 -0
  196. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/api/triggers/run_trigger.py +0 -0
  197. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/async_batch_processor.py +0 -0
  198. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/base.py +0 -0
  199. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/calculations.py +0 -0
  200. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/chemical_structure.py +0 -0
  201. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/curves.py +0 -0
  202. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/entity.py +0 -0
  203. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/experiment_groups.py +0 -0
  204. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/field_values.py +0 -0
  205. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/fields.py +0 -0
  206. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/id_source.py +0 -0
  207. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/identifier.py +0 -0
  208. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/input_attributes.py +0 -0
  209. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/inputs.py +0 -0
  210. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/outputs.py +0 -0
  211. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/permissions.py +0 -0
  212. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/phases.py +0 -0
  213. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/post_base.py +0 -0
  214. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/recipe_identifiers.py +0 -0
  215. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/recipe_inputs.py +0 -0
  216. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/recipe_links.py +0 -0
  217. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/recipe_metadata.py +0 -0
  218. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/recipe_output_metadata.py +0 -0
  219. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/recipe_tags.py +0 -0
  220. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/recipe_workflow_steps.py +0 -0
  221. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/response.py +0 -0
  222. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/units.py +0 -0
  223. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/users.py +0 -0
  224. {uncountablepythonsdk-0.0.22 → uncountablepythonsdk-0.0.24}/uncountable/types/workflows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.22
3
+ Version: 0.0.24
4
4
  Summary: Uncountable SDK
5
5
  Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
6
  Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.22
3
+ Version: 0.0.24
4
4
  Summary: Uncountable SDK
5
5
  Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
6
  Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
@@ -95,6 +95,7 @@ type_spec/external/api/project/get_projects.yaml
95
95
  type_spec/external/api/project/get_projects_data.yaml
96
96
  type_spec/external/api/recipe_links/create_recipe_link.yaml
97
97
  type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml
98
+ type_spec/external/api/recipes/archive_recipes.yaml
98
99
  type_spec/external/api/recipes/associate_recipe_as_input.yaml
99
100
  type_spec/external/api/recipes/associate_recipe_as_lot.yaml
100
101
  type_spec/external/api/recipes/create_recipe.yaml
@@ -200,6 +201,7 @@ uncountable/types/api/recipe_links/create_recipe_link.py
200
201
  uncountable/types/api/recipe_metadata/__init__.py
201
202
  uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py
202
203
  uncountable/types/api/recipes/__init__.py
204
+ uncountable/types/api/recipes/archive_recipes.py
203
205
  uncountable/types/api/recipes/associate_recipe_as_input.py
204
206
  uncountable/types/api/recipes/associate_recipe_as_lot.py
205
207
  uncountable/types/api/recipes/create_recipe.py
@@ -86,6 +86,7 @@ class BaseTypeName(StrEnum):
86
86
  s_optional = "Optional"
87
87
  s_string = "String"
88
88
  s_tuple = "Tuple"
89
+ s_readonly_array = "ReadonlyArray"
89
90
  s_union = "Union"
90
91
 
91
92
  # For a root class that defines properties
@@ -118,7 +118,10 @@ def refer_to_io_ts(
118
118
  stype: builder.SpecType,
119
119
  ) -> str:
120
120
  if isinstance(stype, builder.SpecTypeInstance):
121
- if stype.defn_type.name == builder.BaseTypeName.s_list:
121
+ if (
122
+ stype.defn_type.name == builder.BaseTypeName.s_list
123
+ or stype.defn_type.name == builder.BaseTypeName.s_readonly_array
124
+ ):
122
125
  spec = refer_to_io_ts(ctx, stype.parameters[0])
123
126
  return f"IO.array({spec})"
124
127
  if stype.defn_type.name == builder.BaseTypeName.s_union:
@@ -634,6 +634,10 @@ def open_api_type(
634
634
  [open_api_type(ctx, p, config=config) for p in stype.parameters],
635
635
  description="TupleType",
636
636
  )
637
+ if stype.defn_type.name == builder.BaseTypeName.s_readonly_array:
638
+ return OpenAPIArrayType(
639
+ open_api_type(ctx, stype.parameters[0], config=config)
640
+ )
637
641
 
638
642
  # TODO: generics are not supported by OpenAPI
639
643
  # map to Free-Form Object and add description
@@ -819,6 +819,7 @@ base_name_map = {
819
819
  builder.BaseTypeName.s_opaque_key: "OpaqueKey",
820
820
  builder.BaseTypeName.s_string: "str",
821
821
  builder.BaseTypeName.s_tuple: "tuple",
822
+ builder.BaseTypeName.s_readonly_array: "tuple",
822
823
  builder.BaseTypeName.s_union: "typing.Union",
823
824
  builder.BaseTypeName.s_literal: "typing.Literal",
824
825
  }
@@ -827,6 +828,11 @@ base_name_map = {
827
828
  def refer_to(ctx: TrackingContext, stype: builder.SpecType) -> str:
828
829
  if isinstance(stype, builder.SpecTypeInstance):
829
830
  params = ", ".join([refer_to(ctx, p) for p in stype.parameters])
831
+
832
+ if stype.defn_type.is_base_type(builder.BaseTypeName.s_readonly_array):
833
+ assert len(stype.parameters) == 1, "Read Only Array takes one parameter"
834
+ params = f"{params}, ..."
835
+
830
836
  return f"{refer_to(ctx, stype.defn_type)}[{params}]"
831
837
 
832
838
  if isinstance(stype, builder.SpecTypeLiteralWrapper):
@@ -394,6 +394,9 @@ def refer_to_impl(
394
394
  if stype.defn_type.name == builder.BaseTypeName.s_list:
395
395
  spec, multi = refer_to_impl(ctx, stype.parameters[0])
396
396
  return f"({spec})[]" if multi else f"{spec}[]", False
397
+ if stype.defn_type.name == builder.BaseTypeName.s_readonly_array:
398
+ spec, multi = refer_to_impl(ctx, stype.parameters[0])
399
+ return f"readonly ({spec})[]" if multi else f"readonly {spec}[]", False
397
400
  if stype.defn_type.name == builder.BaseTypeName.s_union:
398
401
  return f'({" | ".join([refer_to(ctx, p) for p in stype.parameters])})', False
399
402
  if stype.defn_type.name == builder.BaseTypeName.s_literal:
@@ -174,6 +174,18 @@ class OpenAPIObjectType(OpenAPIType):
174
174
 
175
175
  return {"description": desc}
176
176
 
177
+ def _emit_property(
178
+ self, property_name: str, property_type: OpenAPIType
179
+ ) -> dict[str, object]:
180
+ property_info = {
181
+ **property_type.asdict(),
182
+ }
183
+ property_description = self._emit_property_desc(property_name)
184
+ if "$ref" in property_info and "description" in property_description:
185
+ return {"allOf": [property_info, property_description]}
186
+
187
+ return property_info | property_description
188
+
177
189
  def asdict(self) -> dict[str, object]:
178
190
  return self.add_addl_info({
179
191
  "type": "object",
@@ -183,10 +195,7 @@ class OpenAPIObjectType(OpenAPIType):
183
195
  if not property_type.nullable
184
196
  ],
185
197
  "properties": {
186
- property_name: {
187
- **property_type.asdict(),
188
- }
189
- | self._emit_property_desc(property_name)
198
+ property_name: self._emit_property(property_name, property_type)
190
199
  for property_name, property_type in self.properties.items()
191
200
  },
192
201
  })
@@ -0,0 +1,20 @@
1
+ $endpoint:
2
+ is_sdk: true
3
+ method: post
4
+ path: ${external}/recipes/archive
5
+ function: main.site.app.external.recipes.archive_recipes.archive_recipes
6
+ desc: Archive the provided recipes and their children
7
+
8
+ Arguments:
9
+ type: Object
10
+ properties:
11
+ recipes:
12
+ type: List<identifier.IdentifierKey>
13
+ desc: Identifier for the recipe
14
+ reason?:
15
+ type: String
16
+ desc: This reason will be written to the audit log archive entry
17
+
18
+
19
+ Data:
20
+ type: Object
@@ -1,6 +1,5 @@
1
1
  $endpoint:
2
2
  is_sdk: true
3
- is_beta: true
4
3
  async_batch_path: edit_recipe_inputs
5
4
  method: post
6
5
  path: ${external}/recipes/edit_recipe_inputs
@@ -3,6 +3,7 @@
3
3
  # ruff: noqa: E402
4
4
  # fmt: off
5
5
  # isort: skip_file
6
+ from .api.recipes import archive_recipes as archive_recipes_t
6
7
  from .api.recipes import associate_recipe_as_input as associate_recipe_as_input_t
7
8
  from .api.recipes import associate_recipe_as_lot as associate_recipe_as_lot_t
8
9
  from . import async_batch as async_batch_t
@@ -77,6 +78,7 @@ from . import workflows as workflows_t
77
78
 
78
79
 
79
80
  __all__: list[str] = [
81
+ "archive_recipes_t",
80
82
  "associate_recipe_as_input_t",
81
83
  "associate_recipe_as_lot_t",
82
84
  "async_batch_t",
@@ -0,0 +1,35 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # flake8: noqa: F821
3
+ # ruff: noqa: E402
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 dataclasses import dataclass
11
+ from ... import identifier as identifier_t
12
+
13
+ __all__: list[str] = [
14
+ "Arguments",
15
+ "Data",
16
+ "ENDPOINT_METHOD",
17
+ "ENDPOINT_PATH",
18
+ ]
19
+
20
+ ENDPOINT_METHOD = "POST"
21
+ ENDPOINT_PATH = "api/external/recipes/archive"
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ @dataclass(kw_only=True)
26
+ class Arguments:
27
+ recipes: list[identifier_t.IdentifierKey]
28
+ reason: typing.Optional[str] = None
29
+
30
+
31
+ # DO NOT MODIFY -- This file is generated by type_spec
32
+ @dataclass(kw_only=True)
33
+ class Data:
34
+ pass
35
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -26,6 +26,7 @@ class AsyncBatchRequestPath(StrEnum):
26
26
  SET_RECIPE_METADATA = "recipes/set_recipe_metadata"
27
27
  SET_RECIPE_TAGS = "recipes/set_recipe_tags"
28
28
  EDIT_RECIPE_INPUTS = "recipes/edit_recipe_inputs"
29
+ ARCHIVE_RECIPES = "recipes/archive"
29
30
 
30
31
 
31
32
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -9,6 +9,7 @@ import typing # noqa: F401
9
9
  import datetime # noqa: F401
10
10
  from decimal import Decimal # noqa: F401
11
11
  from pkgs.serialization import OpaqueKey
12
+ import uncountable.types.api.recipes.archive_recipes as archive_recipes_t
12
13
  import uncountable.types.api.recipes.associate_recipe_as_input as associate_recipe_as_input_t
13
14
  import uncountable.types.api.recipes.associate_recipe_as_lot as associate_recipe_as_lot_t
14
15
  from uncountable.types import async_batch as async_batch_t
@@ -21,6 +22,7 @@ import uncountable.types.api.recipes.create_recipe as create_recipe_t
21
22
  import uncountable.types.api.recipe_links.create_recipe_link as create_recipe_link_t
22
23
  import uncountable.types.api.recipes.create_recipes as create_recipes_t
23
24
  import uncountable.types.api.recipes.disassociate_recipe_as_input as disassociate_recipe_as_input_t
25
+ import uncountable.types.api.recipes.edit_recipe_inputs as edit_recipe_inputs_t
24
26
  from uncountable.types import entity as entity_t
25
27
  import uncountable.types.api.batch.execute_batch as execute_batch_t
26
28
  import uncountable.types.api.batch.execute_batch_load_async as execute_batch_load_async_t
@@ -51,6 +53,7 @@ from uncountable.types import post_base as post_base_t
51
53
  from uncountable.types import recipe_identifiers as recipe_identifiers_t
52
54
  from uncountable.types import recipe_links as recipe_links_t
53
55
  from uncountable.types import recipe_metadata as recipe_metadata_t
56
+ from uncountable.types import recipe_workflow_steps as recipe_workflow_steps_t
54
57
  import uncountable.types.api.entity.resolve_entity_ids as resolve_entity_ids_t
55
58
  import uncountable.types.api.outputs.resolve_output_conditions as resolve_output_conditions_t
56
59
  import uncountable.types.api.triggers.run_trigger as run_trigger_t
@@ -81,6 +84,28 @@ class ClientMethods(ABC):
81
84
  def do_request(self, *, api_request: APIRequest, return_type: type[DT]) -> DT:
82
85
  ...
83
86
 
87
+ def archive_recipes(
88
+ self,
89
+ *,
90
+ recipes: list[identifier_t.IdentifierKey],
91
+ reason: typing.Optional[str] = None,
92
+ ) -> archive_recipes_t.Data:
93
+ """Archive the provided recipes and their children
94
+
95
+ :param recipes: Identifier for the recipe
96
+ :param reason: This reason will be written to the audit log archive entry
97
+ """
98
+ args = archive_recipes_t.Arguments(
99
+ recipes=recipes,
100
+ reason=reason,
101
+ )
102
+ api_request = APIRequest(
103
+ method=archive_recipes_t.ENDPOINT_METHOD,
104
+ endpoint=archive_recipes_t.ENDPOINT_PATH,
105
+ args=args,
106
+ )
107
+ return self.do_request(api_request=api_request, return_type=archive_recipes_t.Data)
108
+
84
109
  def associate_recipe_as_input(
85
110
  self,
86
111
  *,
@@ -319,6 +344,29 @@ class ClientMethods(ABC):
319
344
  )
320
345
  return self.do_request(api_request=api_request, return_type=disassociate_recipe_as_input_t.Data)
321
346
 
347
+ def edit_recipe_inputs(
348
+ self,
349
+ *,
350
+ recipe_key: identifier_t.IdentifierKey,
351
+ recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
352
+ edits: list[edit_recipe_inputs_t.RecipeInputEdit],
353
+ ) -> edit_recipe_inputs_t.Data:
354
+ """Clear, update, or add inputs on a recipe
355
+
356
+ :param recipe_key: Identifier for the recipe
357
+ """
358
+ args = edit_recipe_inputs_t.Arguments(
359
+ recipe_key=recipe_key,
360
+ recipe_workflow_step_identifier=recipe_workflow_step_identifier,
361
+ edits=edits,
362
+ )
363
+ api_request = APIRequest(
364
+ method=edit_recipe_inputs_t.ENDPOINT_METHOD,
365
+ endpoint=edit_recipe_inputs_t.ENDPOINT_PATH,
366
+ args=args,
367
+ )
368
+ return self.do_request(api_request=api_request, return_type=edit_recipe_inputs_t.Data)
369
+
322
370
  def execute_batch(
323
371
  self,
324
372
  *,