UncountablePythonSDK 0.0.112__tar.gz → 0.0.114__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 (330) hide show
  1. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/.github/workflows/documentation.yml +2 -4
  2. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/.github/workflows/publish.yml +2 -5
  3. uncountablepythonsdk-0.0.114/.python-version +1 -0
  4. {uncountablepythonsdk-0.0.112/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.114}/PKG-INFO +1 -1
  5. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  6. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/UncountablePythonSDK.egg-info/SOURCES.txt +7 -0
  7. uncountablepythonsdk-0.0.114/examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
  8. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/integration-server/jobs/materials_auto/profile.yaml +19 -0
  9. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/argument_parser/argument_parser.py +8 -3
  10. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/_blob_session.py +8 -1
  11. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/builder.py +8 -2
  12. uncountablepythonsdk-0.0.114/pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
  13. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/parts/base.py.prepart +5 -8
  14. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/value_spec/__main__.py +2 -2
  15. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/job_scheduler.py +10 -2
  16. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/scan_profiles.py +1 -1
  17. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/secret_retrieval/retrieve_secret.py +1 -1
  18. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/__init__.py +6 -0
  19. uncountablepythonsdk-0.0.114/uncountable/types/api/entity/export_entities.py +46 -0
  20. uncountablepythonsdk-0.0.114/uncountable/types/api/recipes/create_mix_order.py +44 -0
  21. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/set_recipe_outputs.py +2 -1
  22. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/async_batch_processor.py +34 -0
  23. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/async_batch_t.py +1 -0
  24. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/base_t.py +5 -8
  25. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/data.py +2 -2
  26. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/data_t.py +37 -28
  27. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/entity_t.py +1 -1
  28. uncountablepythonsdk-0.0.114/uncountable/types/exports.py +8 -0
  29. uncountablepythonsdk-0.0.114/uncountable/types/exports_t.py +33 -0
  30. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/job_definition_t.py +1 -0
  31. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/.gitignore +0 -0
  32. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/README.md +0 -0
  33. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  34. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  35. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  36. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/.gitignore +0 -0
  37. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/conf.py +0 -0
  38. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/index.md +0 -0
  39. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/justfile +0 -0
  40. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/quickstart.md +0 -0
  41. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/requirements.txt +0 -0
  42. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/android-chrome-192x192.png +0 -0
  43. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/android-chrome-512x512.png +0 -0
  44. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/apple-touch-icon.png +0 -0
  45. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/browserconfig.xml +0 -0
  46. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/favicon-16x16.png +0 -0
  47. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/favicon-32x32.png +0 -0
  48. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/manifest.json +0 -0
  49. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/mstile-150x150.png +0 -0
  50. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  51. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/docs/static/logo_blue.png +0 -0
  52. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/async_batch.py +0 -0
  53. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/create_entity.py +0 -0
  54. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/create_ingredient_sdk.py +0 -0
  55. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/download_files.py +0 -0
  56. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/edit_recipe_inputs.py +0 -0
  57. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
  58. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
  59. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
  60. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/integration-server/pyproject.toml +0 -0
  61. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/invoke_uploader.py +0 -0
  62. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/set_recipe_metadata_file.py +0 -0
  63. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/set_recipe_output_file_sdk.py +0 -0
  64. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/examples/upload_files.py +0 -0
  65. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/__init__.py +0 -0
  66. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/argument_parser/__init__.py +0 -0
  67. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/argument_parser/_is_enum.py +0 -0
  68. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  69. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/argument_parser/case_convert.py +0 -0
  70. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/__init__.py +0 -0
  71. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
  72. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/_local_session.py +0 -0
  73. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/_s3_session.py +0 -0
  74. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  75. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/file_type_utils.py +0 -0
  76. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  77. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/py.typed +0 -0
  78. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/__init__.py +0 -0
  79. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/annotation.py +0 -0
  80. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/missing_sentry.py +0 -0
  81. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/opaque_key.py +0 -0
  82. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/serial_alias.py +0 -0
  83. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/serial_class.py +0 -0
  84. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/serial_generic.py +0 -0
  85. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/serial_union.py +0 -0
  86. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization/yaml.py +0 -0
  87. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization_util/__init__.py +0 -0
  88. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  89. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  90. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization_util/dataclasses.py +0 -0
  91. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/serialization_util/serialization_helpers.py +0 -0
  92. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/strenum_compat/__init__.py +0 -0
  93. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/strenum_compat/strenum_compat.py +0 -0
  94. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/__init__.py +0 -0
  95. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/__main__.py +0 -0
  96. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  97. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  98. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  99. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/config.py +0 -0
  100. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/cross_output_links.py +0 -0
  101. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/emit_io_ts.py +0 -0
  102. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/emit_open_api.py +0 -0
  103. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/emit_open_api_util.py +0 -0
  104. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/emit_python.py +0 -0
  105. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/emit_typescript.py +0 -0
  106. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/emit_typescript_util.py +0 -0
  107. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/load_types.py +0 -0
  108. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/open_api_util.py +0 -0
  109. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  110. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/test.py +0 -0
  111. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/type_info/__main__.py +0 -0
  112. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
  113. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
  114. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +0 -0
  115. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/util.py +0 -0
  116. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/value_spec/__init__.py +0 -0
  117. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  118. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  119. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pkgs/type_spec/value_spec/types.py +0 -0
  120. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/pyproject.toml +0 -0
  121. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/setup.cfg +0 -0
  122. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/__init__.py +0 -0
  123. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/core/__init__.py +0 -0
  124. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/core/async_batch.py +0 -0
  125. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/core/client.py +0 -0
  126. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/core/environment.py +0 -0
  127. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/core/file_upload.py +0 -0
  128. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/core/types.py +0 -0
  129. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/__init__.py +0 -0
  130. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/cli.py +0 -0
  131. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/construct_client.py +0 -0
  132. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/cron.py +0 -0
  133. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/db/__init__.py +0 -0
  134. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/db/connect.py +0 -0
  135. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/db/session.py +0 -0
  136. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/entrypoint.py +0 -0
  137. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/executors/__init__.py +0 -0
  138. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/executors/executors.py +0 -0
  139. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/executors/generic_upload_executor.py +0 -0
  140. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/executors/script_executor.py +0 -0
  141. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/job.py +0 -0
  142. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/__init__.py +0 -0
  143. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
  144. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
  145. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
  146. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  147. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
  148. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
  149. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
  150. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
  151. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/command_server/types.py +0 -0
  152. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
  153. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
  154. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
  155. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/datastore/model.py +0 -0
  156. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/queue_runner.py +0 -0
  157. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/types.py +0 -0
  158. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/queue_runner/worker.py +0 -0
  159. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/scheduler.py +0 -0
  160. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  161. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/server.py +0 -0
  162. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/telemetry.py +0 -0
  163. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/integration/webhook_server/entrypoint.py +0 -0
  164. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/py.typed +0 -0
  165. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/__init__.py +0 -0
  166. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/batch/__init__.py +0 -0
  167. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/batch/execute_batch.py +0 -0
  168. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  169. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/chemical/__init__.py +0 -0
  170. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  171. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/condition_parameters/__init__.py +0 -0
  172. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/condition_parameters/upsert_condition_match.py +0 -0
  173. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/__init__.py +0 -0
  174. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/create_entities.py +0 -0
  175. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/create_entity.py +0 -0
  176. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
  177. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/get_entities_data.py +0 -0
  178. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
  179. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/list_entities.py +0 -0
  180. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/lock_entity.py +0 -0
  181. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/lookup_entity.py +0 -0
  182. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  183. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
  184. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/set_values.py +0 -0
  185. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  186. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/entity/unlock_entity.py +0 -0
  187. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/equipment/__init__.py +0 -0
  188. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  189. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/field_options/__init__.py +0 -0
  190. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  191. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/files/__init__.py +0 -0
  192. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/files/download_file.py +0 -0
  193. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/id_source/__init__.py +0 -0
  194. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/id_source/list_id_source.py +0 -0
  195. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/id_source/match_id_source.py +0 -0
  196. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/input_groups/__init__.py +0 -0
  197. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  198. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/__init__.py +0 -0
  199. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/create_inputs.py +0 -0
  200. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/get_input_data.py +0 -0
  201. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/get_input_names.py +0 -0
  202. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  203. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  204. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/set_input_category.py +0 -0
  205. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  206. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  207. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/material_families/__init__.py +0 -0
  208. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  209. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/outputs/__init__.py +0 -0
  210. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/outputs/get_output_data.py +0 -0
  211. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/outputs/get_output_names.py +0 -0
  212. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  213. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/permissions/__init__.py +0 -0
  214. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  215. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/project/__init__.py +0 -0
  216. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/project/get_projects.py +0 -0
  217. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/project/get_projects_data.py +0 -0
  218. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipe_links/__init__.py +0 -0
  219. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  220. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  221. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  222. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  223. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/__init__.py +0 -0
  224. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  225. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
  226. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  227. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  228. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  229. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
  230. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/create_recipe.py +0 -0
  231. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/create_recipes.py +0 -0
  232. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  233. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  234. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
  235. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/get_curve.py +0 -0
  236. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  237. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  238. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  239. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  240. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  241. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/lock_recipes.py +0 -0
  242. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  243. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  244. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  245. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  246. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
  247. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  248. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  249. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
  250. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/runsheet/__init__.py +0 -0
  251. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/runsheet/complete_async_upload.py +0 -0
  252. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/triggers/__init__.py +0 -0
  253. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/triggers/run_trigger.py +0 -0
  254. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/uploader/__init__.py +0 -0
  255. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
  256. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/async_batch.py +0 -0
  257. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/async_jobs.py +0 -0
  258. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/async_jobs_t.py +0 -0
  259. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/auth_retrieval.py +0 -0
  260. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/auth_retrieval_t.py +0 -0
  261. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/base.py +0 -0
  262. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/calculations.py +0 -0
  263. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/calculations_t.py +0 -0
  264. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/chemical_structure.py +0 -0
  265. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/chemical_structure_t.py +0 -0
  266. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/client_base.py +0 -0
  267. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/client_config.py +0 -0
  268. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/client_config_t.py +0 -0
  269. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/curves.py +0 -0
  270. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/curves_t.py +0 -0
  271. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/entity.py +0 -0
  272. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/experiment_groups.py +0 -0
  273. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/experiment_groups_t.py +0 -0
  274. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/field_values.py +0 -0
  275. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/field_values_t.py +0 -0
  276. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/fields.py +0 -0
  277. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/fields_t.py +0 -0
  278. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/generic_upload.py +0 -0
  279. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/generic_upload_t.py +0 -0
  280. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/id_source.py +0 -0
  281. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/id_source_t.py +0 -0
  282. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/identifier.py +0 -0
  283. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/identifier_t.py +0 -0
  284. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/input_attributes.py +0 -0
  285. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/input_attributes_t.py +0 -0
  286. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/inputs.py +0 -0
  287. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/inputs_t.py +0 -0
  288. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/integration_server.py +0 -0
  289. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/integration_server_t.py +0 -0
  290. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/job_definition.py +0 -0
  291. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/outputs.py +0 -0
  292. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/outputs_t.py +0 -0
  293. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/overrides.py +0 -0
  294. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/overrides_t.py +0 -0
  295. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/permissions.py +0 -0
  296. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/permissions_t.py +0 -0
  297. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/phases.py +0 -0
  298. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/phases_t.py +0 -0
  299. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/post_base.py +0 -0
  300. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/post_base_t.py +0 -0
  301. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/queued_job.py +0 -0
  302. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/queued_job_t.py +0 -0
  303. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_identifiers.py +0 -0
  304. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_identifiers_t.py +0 -0
  305. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_inputs.py +0 -0
  306. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_inputs_t.py +0 -0
  307. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_links.py +0 -0
  308. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_links_t.py +0 -0
  309. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_metadata.py +0 -0
  310. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_metadata_t.py +0 -0
  311. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_output_metadata.py +0 -0
  312. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_output_metadata_t.py +0 -0
  313. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_tags.py +0 -0
  314. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_tags_t.py +0 -0
  315. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_workflow_steps.py +0 -0
  316. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipe_workflow_steps_t.py +0 -0
  317. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipes.py +0 -0
  318. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/recipes_t.py +0 -0
  319. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/response.py +0 -0
  320. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/response_t.py +0 -0
  321. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/secret_retrieval.py +0 -0
  322. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/secret_retrieval_t.py +0 -0
  323. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/units.py +0 -0
  324. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/units_t.py +0 -0
  325. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/users.py +0 -0
  326. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/users_t.py +0 -0
  327. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/webhook_job.py +0 -0
  328. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/webhook_job_t.py +0 -0
  329. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/workflows.py +0 -0
  330. {uncountablepythonsdk-0.0.112 → uncountablepythonsdk-0.0.114}/uncountable/types/workflows_t.py +0 -0
@@ -11,16 +11,14 @@ jobs:
11
11
  steps:
12
12
  - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
13
13
  - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
14
- with:
15
- python-version: '3.12'
16
14
  - uses: extractions/setup-crate@4993624604c307fbca528d28a3c8b60fa5ecc859 # v1
17
15
  with:
18
16
  repo: casey/just@0.10
19
17
  - name: Set up UV
20
- uses: astral-sh/setup-uv@4db96194c378173c656ce18a155ffc14a9fc4355 # v5
18
+ uses: astral-sh/setup-uv@v6
21
19
  with:
22
20
  version: "0.7.1"
23
- python-version: "3.12"
21
+ activate-environment: true
24
22
  enable-cache: true
25
23
  - name: Install dependencies
26
24
  run: |
@@ -22,14 +22,11 @@ jobs:
22
22
  - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
23
23
  with:
24
24
  fetch-depth: 0
25
- - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
26
- with:
27
- python-version: '3.12'
28
25
  - name: Set up UV
29
- uses: astral-sh/setup-uv@4db96194c378173c656ce18a155ffc14a9fc4355 # v5
26
+ uses: astral-sh/setup-uv@v6
30
27
  with:
31
28
  version: "0.7.1"
32
- python-version: "3.12"
29
+ activate-environment: true
33
30
  enable-cache: true
34
31
  - name: Install build dependencies
35
32
  run: |
@@ -0,0 +1 @@
1
+ 3.12.10
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.112
3
+ Version: 0.0.114
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.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.112
3
+ Version: 0.0.114
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,4 +1,5 @@
1
1
  .gitignore
2
+ .python-version
2
3
  README.md
3
4
  pyproject.toml
4
5
  .github/workflows/documentation.yml
@@ -34,6 +35,7 @@ examples/set_recipe_metadata_file.py
34
35
  examples/set_recipe_output_file_sdk.py
35
36
  examples/upload_files.py
36
37
  examples/integration-server/pyproject.toml
38
+ examples/integration-server/jobs/materials_auto/concurrent_cron.py
37
39
  examples/integration-server/jobs/materials_auto/example_cron.py
38
40
  examples/integration-server/jobs/materials_auto/example_runsheet_wh.py
39
41
  examples/integration-server/jobs/materials_auto/example_wh.py
@@ -81,6 +83,7 @@ pkgs/type_spec/emit_python.py
81
83
  pkgs/type_spec/emit_typescript.py
82
84
  pkgs/type_spec/emit_typescript_util.py
83
85
  pkgs/type_spec/load_types.py
86
+ pkgs/type_spec/non_discriminated_union_exceptions.py
84
87
  pkgs/type_spec/open_api_util.py
85
88
  pkgs/type_spec/test.py
86
89
  pkgs/type_spec/util.py
@@ -169,6 +172,8 @@ uncountable/types/entity.py
169
172
  uncountable/types/entity_t.py
170
173
  uncountable/types/experiment_groups.py
171
174
  uncountable/types/experiment_groups_t.py
175
+ uncountable/types/exports.py
176
+ uncountable/types/exports_t.py
172
177
  uncountable/types/field_values.py
173
178
  uncountable/types/field_values_t.py
174
179
  uncountable/types/fields.py
@@ -239,6 +244,7 @@ uncountable/types/api/entity/__init__.py
239
244
  uncountable/types/api/entity/create_entities.py
240
245
  uncountable/types/api/entity/create_entity.py
241
246
  uncountable/types/api/entity/create_or_update_entity.py
247
+ uncountable/types/api/entity/export_entities.py
242
248
  uncountable/types/api/entity/get_entities_data.py
243
249
  uncountable/types/api/entity/grant_entity_permissions.py
244
250
  uncountable/types/api/entity/list_entities.py
@@ -292,6 +298,7 @@ uncountable/types/api/recipes/archive_recipes.py
292
298
  uncountable/types/api/recipes/associate_recipe_as_input.py
293
299
  uncountable/types/api/recipes/associate_recipe_as_lot.py
294
300
  uncountable/types/api/recipes/clear_recipe_outputs.py
301
+ uncountable/types/api/recipes/create_mix_order.py
295
302
  uncountable/types/api/recipes/create_recipe.py
296
303
  uncountable/types/api/recipes/create_recipes.py
297
304
  uncountable/types/api/recipes/disassociate_recipe_as_input.py
@@ -0,0 +1,11 @@
1
+ import time
2
+
3
+ from uncountable.integration.job import CronJob, JobArguments, register_job
4
+ from uncountable.types.job_definition_t import JobResult
5
+
6
+
7
+ @register_job
8
+ class MyConcurrentCronJob(CronJob):
9
+ def run(self, args: JobArguments) -> JobResult:
10
+ time.sleep(10)
11
+ return JobResult(success=True)
@@ -22,6 +22,25 @@ jobs:
22
22
  - admin:
23
23
  type: ref_name
24
24
  ref_name: admin
25
+ - id: concurrent_cron_1
26
+ enabled: true
27
+ type: cron
28
+ name: MyConcurrentCron - 1
29
+ cron_spec: "* * * * *"
30
+ executor:
31
+ type: script
32
+ import_path: concurrent_cron
33
+ subqueue_name: subqueue_1
34
+ - id: concurrent_cron_2
35
+ enabled: true
36
+ type: cron
37
+ name: MyConcurrentCron - 2
38
+ cron_spec: "* * * * *"
39
+ executor:
40
+ type: script
41
+ import_path: concurrent_cron
42
+ subqueue_name: subqueue_2
43
+
25
44
 
26
45
  - id: example_wh1
27
46
  type: webhook
@@ -170,9 +170,15 @@ def _invoke_membership_parser(
170
170
 
171
171
  def _build_parser_discriminated_union(
172
172
  context: ParserContext,
173
- discriminator: str,
173
+ discriminator_raw: str,
174
174
  discriminator_map: dict[str, ParserFunction[T]],
175
175
  ) -> ParserFunction[T]:
176
+ discriminator = (
177
+ snake_to_camel_case(discriminator_raw)
178
+ if context.options.from_camel_case
179
+ else discriminator_raw
180
+ )
181
+
176
182
  def parse(value: typing.Any) -> typing.Any:
177
183
  if context.options.allow_direct_type and dataclasses.is_dataclass(value):
178
184
  discriminant = getattr(value, discriminator)
@@ -414,8 +420,7 @@ def _build_parser_dataclass(
414
420
  cur_parser = context.cache.get(parsed_type)
415
421
  if cur_parser is not None:
416
422
  return cur_parser
417
-
418
- type_hints = typing.get_type_hints(parsed_type)
423
+ type_hints = typing.get_type_hints(parsed_type, include_extras=True)
419
424
  dc_field_parsers: list[
420
425
  tuple[
421
426
  dataclasses.Field[typing.Any],
@@ -1,5 +1,6 @@
1
1
  from io import BytesIO
2
2
 
3
+ from azure.core.credentials import AzureSasCredential
3
4
  from azure.storage.blob import BlobServiceClient, ContainerClient
4
5
 
5
6
  from pkgs.filesystem_utils.file_type_utils import (
@@ -122,7 +123,13 @@ class BlobSession(FileSystemSession):
122
123
  )
123
124
  dest_blob_client = self.container_client.get_blob_client(dest_file.filepath)
124
125
 
125
- dest_blob_client.start_copy_from_url(source_blob_client.url)
126
+ source_url = (
127
+ f"{source_blob_client.url}?{self.config.credential.signature}"
128
+ if isinstance(self.config.credential, AzureSasCredential)
129
+ else source_blob_client.url
130
+ )
131
+
132
+ dest_blob_client.start_copy_from_url(source_url)
126
133
  source_blob_client.delete_blob()
127
134
 
128
135
  def delete_files(self, filepaths: list[FileSystemObject]) -> None:
@@ -14,6 +14,7 @@ from typing import Any, Self
14
14
 
15
15
  from . import util
16
16
  from .cross_output_links import CrossOutputPaths
17
+ from .non_discriminated_union_exceptions import NON_DISCRIMINATED_UNION_EXCEPTIONS
17
18
  from .util import parse_type_str, unused
18
19
 
19
20
  RawDict = dict[Any, Any]
@@ -636,6 +637,11 @@ class SpecTypeDefnUnion(SpecTypeDefn):
636
637
  self.discriminator_map[discriminant] = sub_type
637
638
 
638
639
  builder.pop_where()
640
+ elif (
641
+ f"{self.namespace.name}.{self.name}"
642
+ not in NON_DISCRIMINATED_UNION_EXCEPTIONS
643
+ ):
644
+ raise Exception(f"union requires a discriminator: {self.name}")
639
645
 
640
646
  def get_referenced_types(self) -> list[SpecType]:
641
647
  return self.types
@@ -960,8 +966,8 @@ class SpecEndpoint:
960
966
  elif isinstance(is_sdk, str):
961
967
  try:
962
968
  is_sdk = EndpointEmitType(is_sdk)
963
- except ValueError:
964
- raise ValueError(f"Invalid value for is_sdk: {is_sdk}")
969
+ except ValueError as e:
970
+ raise ValueError(f"Invalid value for is_sdk: {is_sdk}") from e
965
971
 
966
972
  assert isinstance(is_sdk, EndpointEmitType)
967
973
 
@@ -0,0 +1,14 @@
1
+ NON_DISCRIMINATED_UNION_EXCEPTIONS = [
2
+ "generate_tool_parameters.UnionWithoutDiscrim",
3
+ "output_calculation_entities.ConditionParameterFilterCondition",
4
+ "output_parameters.AnalyticalMethodParameterOptions",
5
+ "output_parameters.AnalyticalMethodLinkedOptionValue",
6
+ "recipes_redirect.RecipesRedirectResult",
7
+ "value_spec.ResolvedPathAll",
8
+ "weighted_sum.WeightedSumEntities",
9
+ "workflows.WorkflowTotalDisplay",
10
+ "type_info.TypeFormActionConstraint",
11
+ "structured_loading.CompatibleFilterNode",
12
+ "structured_display_element.DisplayElementColumn",
13
+ "field_values.FieldValue",
14
+ ]
@@ -58,15 +58,12 @@ def is_pure_json_value(value: ExtJsonValue) -> bool:
58
58
  return True
59
59
 
60
60
  if isinstance(value, list):
61
- for item in value:
62
- if not is_pure_json_value(item):
63
- return False
64
- return True
61
+ return all(is_pure_json_value(item) for item in value)
65
62
 
66
63
  if isinstance(value, dict):
67
- for key, item in value.items():
68
- if not is_pure_json_value(key) or not is_pure_json_value(item):
69
- return False
70
- return True
64
+ return all(
65
+ is_pure_json_value(key) and is_pure_json_value(item)
66
+ for key, item in value.items()
67
+ )
71
68
 
72
69
  return False
@@ -104,8 +104,8 @@ def parse_function_signature(text: str) -> ParsedFunctionSignature:
104
104
 
105
105
  type_str = source.extract_type()
106
106
  ref_name = arg_group.group(1)
107
- is_missing = arg_group.group(2) == "?"
108
- is_repeating = arg_group.group(2) == "+"
107
+ # is_missing = arg_group.group(2) == "?"
108
+ # is_repeating = arg_group.group(2) == "+"
109
109
  type_path = parse_type_str(type_str)
110
110
 
111
111
  match arg_group.group(3):
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import sys
2
3
  import typing
3
4
  from concurrent.futures import ProcessPoolExecutor
4
5
  from dataclasses import dataclass
@@ -34,6 +35,10 @@ class JobListenerKey:
34
35
  def _get_job_worker_key(
35
36
  job_definition: job_definition_t.JobDefinition, profile_name: str
36
37
  ) -> JobListenerKey:
38
+ if job_definition.subqueue_name is not None:
39
+ return JobListenerKey(
40
+ profile_name=profile_name, subqueue_name=job_definition.subqueue_name
41
+ )
37
42
  return JobListenerKey(profile_name=profile_name)
38
43
 
39
44
 
@@ -41,9 +46,12 @@ def on_worker_crash(
41
46
  worker_key: JobListenerKey,
42
47
  ) -> typing.Callable[[asyncio.Task], None]:
43
48
  def hook(task: asyncio.Task) -> None:
44
- raise Exception(
45
- f"worker {worker_key.profile_name}_{worker_key.subqueue_name} crashed unexpectedly"
49
+ Logger(get_current_span()).log_exception(
50
+ Exception(
51
+ f"worker {worker_key.profile_name}_{worker_key.subqueue_name} crashed unexpectedly"
52
+ )
46
53
  )
54
+ sys.exit(1)
47
55
 
48
56
  return hook
49
57
 
@@ -26,7 +26,7 @@ def load_profiles() -> list[job_definition_t.ProfileMetadata]:
26
26
  profile_name = profile_file.name
27
27
  try:
28
28
  definition = profile_parser.parse_yaml_resource(
29
- package=".".join([profiles_module, profile_name]),
29
+ package=f"{profiles_module}.{profile_name}",
30
30
  resource="profile.yaml",
31
31
  )
32
32
  for job in definition.jobs:
@@ -54,7 +54,7 @@ def _load_secret_overrides(profile_name: str) -> dict[SecretRetrieval, str]:
54
54
  profiles_module = os.environ["UNC_PROFILES_MODULE"]
55
55
  try:
56
56
  overrides = overrides_parser.parse_yaml_resource(
57
- package=".".join([profiles_module, profile_name]),
57
+ package=f"{profiles_module}.{profile_name}",
58
58
  resource="local_overrides.yaml",
59
59
  )
60
60
  return {
@@ -21,6 +21,7 @@ from .api.chemical import convert_chemical_formats as convert_chemical_formats_t
21
21
  from .api.entity import create_entities as create_entities_t
22
22
  from .api.entity import create_entity as create_entity_t
23
23
  from .api.inputs import create_inputs as create_inputs_t
24
+ from .api.recipes import create_mix_order as create_mix_order_t
24
25
  from .api.entity import create_or_update_entity as create_or_update_entity_t
25
26
  from .api.recipes import create_recipe as create_recipe_t
26
27
  from .api.recipe_links import create_recipe_link as create_recipe_link_t
@@ -34,6 +35,8 @@ from . import entity_t as entity_t
34
35
  from .api.batch import execute_batch as execute_batch_t
35
36
  from .api.batch import execute_batch_load_async as execute_batch_load_async_t
36
37
  from . import experiment_groups_t as experiment_groups_t
38
+ from .api.entity import export_entities as export_entities_t
39
+ from . import exports_t as exports_t
37
40
  from . import field_values_t as field_values_t
38
41
  from . import fields_t as fields_t
39
42
  from . import generic_upload_t as generic_upload_t
@@ -135,6 +138,7 @@ __all__: list[str] = [
135
138
  "create_entities_t",
136
139
  "create_entity_t",
137
140
  "create_inputs_t",
141
+ "create_mix_order_t",
138
142
  "create_or_update_entity_t",
139
143
  "create_recipe_t",
140
144
  "create_recipe_link_t",
@@ -148,6 +152,8 @@ __all__: list[str] = [
148
152
  "execute_batch_t",
149
153
  "execute_batch_load_async_t",
150
154
  "experiment_groups_t",
155
+ "export_entities_t",
156
+ "exports_t",
151
157
  "field_values_t",
152
158
  "fields_t",
153
159
  "generic_upload_t",
@@ -0,0 +1,46 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import async_batch_t
12
+ from ... import base_t
13
+ from ... import exports_t
14
+ from ... import identifier_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/entity/export_entities"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.entity.export_entities.Arguments",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
+ class Arguments:
33
+ config_key: identifier_t.IdentifierKey
34
+ type: exports_t.ExportType = exports_t.ExportType.EXCEL
35
+ client_timezone: exports_t.ListingExportUserTimezone | None = None
36
+ limit: int | None = None
37
+
38
+
39
+ # DO NOT MODIFY -- This file is generated by type_spec
40
+ @serial_class(
41
+ named_type_path="sdk.api.entity.export_entities.Data",
42
+ )
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
+ class Data(async_batch_t.AsyncBatchActionReturn):
45
+ pass
46
+ # 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
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ import dataclasses
10
+ from pkgs.serialization import serial_class
11
+ from ... import async_batch_t
12
+ from ... import base_t
13
+ from ... import identifier_t
14
+ from ... import recipe_workflow_steps_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/recipes/create_mix_order"
25
+
26
+
27
+ # DO NOT MODIFY -- This file is generated by type_spec
28
+ @serial_class(
29
+ named_type_path="sdk.api.recipes.create_mix_order.Arguments",
30
+ )
31
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
32
+ class Arguments:
33
+ recipe_key: identifier_t.IdentifierKey
34
+ recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier
35
+
36
+
37
+ # DO NOT MODIFY -- This file is generated by type_spec
38
+ @serial_class(
39
+ named_type_path="sdk.api.recipes.create_mix_order.Data",
40
+ )
41
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
42
+ class Data(async_batch_t.AsyncBatchActionReturn):
43
+ pass
44
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -60,7 +60,8 @@ class RecipeOutputValue:
60
60
  value_numeric: Decimal | None = None
61
61
  value_str: str | None = None
62
62
  value_curve: CurveValues | None = None
63
- value_color: data_t.RecipeOutputColor | None = None
63
+ value_color: data_t.SupportedColorFormatColor | None = None
64
+ value_ingredient_id: base_t.ObjectId | None = None
64
65
  formatting: recipes_t.RecipeAttributeFormatting | None = None
65
66
  field_values: list[field_values_t.ArgumentValueRefName | field_values_t.ArgumentValueId] | None = None
66
67
 
@@ -14,6 +14,7 @@ from uncountable.types import async_batch_t
14
14
  from uncountable.types import base_t
15
15
  import uncountable.types.api.recipes.clear_recipe_outputs as clear_recipe_outputs_t
16
16
  import uncountable.types.api.runsheet.complete_async_upload as complete_async_upload_t
17
+ import uncountable.types.api.recipes.create_mix_order as create_mix_order_t
17
18
  import uncountable.types.api.entity.create_or_update_entity as create_or_update_entity_t
18
19
  import uncountable.types.api.recipes.create_recipe as create_recipe_t
19
20
  import uncountable.types.api.recipes.edit_recipe_inputs as edit_recipe_inputs_t
@@ -217,6 +218,39 @@ class AsyncBatchProcessorBase(ABC):
217
218
  batch_reference=req.batch_reference,
218
219
  )
219
220
 
221
+ def create_mix_order(
222
+ self,
223
+ *,
224
+ recipe_key: identifier_t.IdentifierKey,
225
+ recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
226
+ depends_on: list[str] | None = None,
227
+ ) -> async_batch_t.QueuedAsyncBatchRequest:
228
+ """Creates mix order on a recipe workflow step
229
+
230
+ :param depends_on: A list of batch reference keys to process before processing this request
231
+ """
232
+ args = create_mix_order_t.Arguments(
233
+ recipe_key=recipe_key,
234
+ recipe_workflow_step_identifier=recipe_workflow_step_identifier,
235
+ )
236
+ json_data = serialize_for_api(args)
237
+
238
+ batch_reference = str(uuid.uuid4())
239
+
240
+ req = async_batch_t.AsyncBatchRequest(
241
+ path=async_batch_t.AsyncBatchRequestPath.CREATE_MIX_ORDER,
242
+ data=json_data,
243
+ depends_on=depends_on,
244
+ batch_reference=batch_reference,
245
+ )
246
+
247
+ self._enqueue(req)
248
+
249
+ return async_batch_t.QueuedAsyncBatchRequest(
250
+ path=req.path,
251
+ batch_reference=req.batch_reference,
252
+ )
253
+
220
254
  def create_or_update_entity(
221
255
  self,
222
256
  *,
@@ -44,6 +44,7 @@ class AsyncBatchRequestPath(StrEnum):
44
44
  CREATE_RECIPE_LINK = "recipe_links/create_recipe_link"
45
45
  UPSERT_CONDITION_MATCH = "condition_parameters/upsert_condition_match"
46
46
  COMPLETE_ASYNC_UPLOAD = "runsheet/complete_async_upload"
47
+ CREATE_MIX_ORDER = "recipes/create_mix_order"
47
48
 
48
49
 
49
50
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -74,16 +74,13 @@ def is_pure_json_value(value: ExtJsonValue) -> bool:
74
74
  return True
75
75
 
76
76
  if isinstance(value, list):
77
- for item in value:
78
- if not is_pure_json_value(item):
79
- return False
80
- return True
77
+ return all(is_pure_json_value(item) for item in value)
81
78
 
82
79
  if isinstance(value, dict):
83
- for key, item in value.items():
84
- if not is_pure_json_value(key) or not is_pure_json_value(item):
85
- return False
86
- return True
80
+ return all(
81
+ is_pure_json_value(key) and is_pure_json_value(item)
82
+ for key, item in value.items()
83
+ )
87
84
 
88
85
  return False
89
86
  # === END section from base.prepart.py ===
@@ -3,10 +3,10 @@
3
3
  # isort: skip_file
4
4
  # DO NOT MODIFY -- This file is generated by type_spec
5
5
  # Kept only for SDK backwards compatibility
6
+ from .data_t import ColorFormat as ColorFormat
6
7
  from .data_t import RgbColor as RgbColor
7
8
  from .data_t import CielabColor as CielabColor
8
9
  from .data_t import XyzColor as XyzColor
9
10
  from .data_t import LChColor as LChColor
10
- from .data_t import HslColor as HslColor
11
- from .data_t import RecipeOutputColor as RecipeOutputColor
11
+ from .data_t import SupportedColorFormatColor as SupportedColorFormatColor
12
12
  # DO NOT MODIFY -- This file is generated by type_spec