UncountablePythonSDK 0.0.113__tar.gz → 0.0.115__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 (335) hide show
  1. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/.github/workflows/documentation.yml +2 -4
  2. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/.github/workflows/publish.yml +2 -5
  3. uncountablepythonsdk-0.0.115/.python-version +1 -0
  4. {uncountablepythonsdk-0.0.113/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.115}/PKG-INFO +1 -1
  5. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  6. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/UncountablePythonSDK.egg-info/SOURCES.txt +10 -0
  7. uncountablepythonsdk-0.0.115/examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
  8. uncountablepythonsdk-0.0.115/examples/integration-server/jobs/materials_auto/example_http.py +35 -0
  9. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/integration-server/jobs/materials_auto/profile.yaml +25 -0
  10. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/argument_parser/argument_parser.py +8 -3
  11. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/builder.py +8 -2
  12. uncountablepythonsdk-0.0.115/pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
  13. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/parts/base.py.prepart +5 -8
  14. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +18 -5
  15. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/value_spec/__main__.py +2 -2
  16. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/core/environment.py +1 -1
  17. uncountablepythonsdk-0.0.115/uncountable/integration/http_server/__init__.py +5 -0
  18. uncountablepythonsdk-0.0.115/uncountable/integration/http_server/types.py +67 -0
  19. uncountablepythonsdk-0.0.115/uncountable/integration/job.py +240 -0
  20. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/job_scheduler.py +10 -2
  21. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/server.py +2 -2
  22. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/telemetry.py +1 -1
  23. uncountablepythonsdk-0.0.115/uncountable/integration/webhook_server/entrypoint.py +95 -0
  24. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/__init__.py +6 -0
  25. uncountablepythonsdk-0.0.115/uncountable/types/api/entity/export_entities.py +46 -0
  26. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/lookup_entity.py +15 -1
  27. uncountablepythonsdk-0.0.115/uncountable/types/api/recipes/create_mix_order.py +44 -0
  28. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/set_recipe_outputs.py +1 -0
  29. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/async_batch_processor.py +34 -0
  30. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/async_batch_t.py +1 -0
  31. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/base_t.py +5 -8
  32. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/client_base.py +49 -0
  33. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/entity_t.py +3 -1
  34. uncountablepythonsdk-0.0.115/uncountable/types/exports.py +8 -0
  35. uncountablepythonsdk-0.0.115/uncountable/types/exports_t.py +33 -0
  36. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/integration_server_t.py +2 -0
  37. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/job_definition.py +2 -0
  38. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/job_definition_t.py +26 -2
  39. uncountablepythonsdk-0.0.113/uncountable/integration/job.py +0 -116
  40. uncountablepythonsdk-0.0.113/uncountable/integration/webhook_server/entrypoint.py +0 -170
  41. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/.gitignore +0 -0
  42. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/README.md +0 -0
  43. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  44. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  45. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  46. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/.gitignore +0 -0
  47. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/conf.py +0 -0
  48. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/index.md +0 -0
  49. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/justfile +0 -0
  50. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/quickstart.md +0 -0
  51. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/requirements.txt +0 -0
  52. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/android-chrome-192x192.png +0 -0
  53. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/android-chrome-512x512.png +0 -0
  54. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/apple-touch-icon.png +0 -0
  55. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/browserconfig.xml +0 -0
  56. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/favicon-16x16.png +0 -0
  57. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/favicon-32x32.png +0 -0
  58. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/manifest.json +0 -0
  59. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/mstile-150x150.png +0 -0
  60. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  61. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/docs/static/logo_blue.png +0 -0
  62. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/async_batch.py +0 -0
  63. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/create_entity.py +0 -0
  64. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/create_ingredient_sdk.py +0 -0
  65. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/download_files.py +0 -0
  66. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/edit_recipe_inputs.py +0 -0
  67. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
  68. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
  69. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
  70. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/integration-server/pyproject.toml +0 -0
  71. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/invoke_uploader.py +0 -0
  72. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/set_recipe_metadata_file.py +0 -0
  73. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/set_recipe_output_file_sdk.py +0 -0
  74. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/examples/upload_files.py +0 -0
  75. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/__init__.py +0 -0
  76. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/argument_parser/__init__.py +0 -0
  77. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/argument_parser/_is_enum.py +0 -0
  78. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  79. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/argument_parser/case_convert.py +0 -0
  80. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/__init__.py +0 -0
  81. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/_blob_session.py +0 -0
  82. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
  83. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/_local_session.py +0 -0
  84. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/_s3_session.py +0 -0
  85. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  86. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/file_type_utils.py +0 -0
  87. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  88. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/py.typed +0 -0
  89. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/__init__.py +0 -0
  90. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/annotation.py +0 -0
  91. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/missing_sentry.py +0 -0
  92. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/opaque_key.py +0 -0
  93. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/serial_alias.py +0 -0
  94. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/serial_class.py +0 -0
  95. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/serial_generic.py +0 -0
  96. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/serial_union.py +0 -0
  97. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization/yaml.py +0 -0
  98. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization_util/__init__.py +0 -0
  99. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  100. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  101. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization_util/dataclasses.py +0 -0
  102. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/serialization_util/serialization_helpers.py +0 -0
  103. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/strenum_compat/__init__.py +0 -0
  104. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/strenum_compat/strenum_compat.py +0 -0
  105. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/__init__.py +0 -0
  106. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/__main__.py +0 -0
  107. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  108. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  109. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  110. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/config.py +0 -0
  111. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/cross_output_links.py +0 -0
  112. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/emit_io_ts.py +0 -0
  113. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/emit_open_api.py +0 -0
  114. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/emit_open_api_util.py +0 -0
  115. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/emit_python.py +0 -0
  116. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/emit_typescript.py +0 -0
  117. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/emit_typescript_util.py +0 -0
  118. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/load_types.py +0 -0
  119. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/open_api_util.py +0 -0
  120. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  121. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/test.py +0 -0
  122. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/type_info/__main__.py +0 -0
  123. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
  124. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
  125. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/util.py +0 -0
  126. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/value_spec/__init__.py +0 -0
  127. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  128. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  129. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pkgs/type_spec/value_spec/types.py +0 -0
  130. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/pyproject.toml +0 -0
  131. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/setup.cfg +0 -0
  132. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/__init__.py +0 -0
  133. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/core/__init__.py +0 -0
  134. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/core/async_batch.py +0 -0
  135. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/core/client.py +0 -0
  136. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/core/file_upload.py +0 -0
  137. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/core/types.py +0 -0
  138. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/__init__.py +0 -0
  139. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/cli.py +0 -0
  140. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/construct_client.py +0 -0
  141. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/cron.py +0 -0
  142. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/db/__init__.py +0 -0
  143. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/db/connect.py +0 -0
  144. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/db/session.py +0 -0
  145. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/entrypoint.py +0 -0
  146. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/executors/__init__.py +0 -0
  147. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/executors/executors.py +0 -0
  148. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/executors/generic_upload_executor.py +0 -0
  149. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/executors/script_executor.py +0 -0
  150. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/__init__.py +0 -0
  151. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
  152. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
  153. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
  154. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  155. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
  156. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
  157. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
  158. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
  159. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/command_server/types.py +0 -0
  160. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
  161. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
  162. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
  163. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/datastore/model.py +0 -0
  164. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/queue_runner.py +0 -0
  165. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/types.py +0 -0
  166. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/queue_runner/worker.py +0 -0
  167. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/scan_profiles.py +0 -0
  168. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/scheduler.py +0 -0
  169. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  170. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
  171. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/py.typed +0 -0
  172. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/__init__.py +0 -0
  173. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/batch/__init__.py +0 -0
  174. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/batch/execute_batch.py +0 -0
  175. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  176. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/chemical/__init__.py +0 -0
  177. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  178. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/condition_parameters/__init__.py +0 -0
  179. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/condition_parameters/upsert_condition_match.py +0 -0
  180. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/__init__.py +0 -0
  181. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/create_entities.py +0 -0
  182. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/create_entity.py +0 -0
  183. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
  184. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/get_entities_data.py +0 -0
  185. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
  186. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/list_entities.py +0 -0
  187. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/lock_entity.py +0 -0
  188. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  189. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
  190. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/set_values.py +0 -0
  191. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  192. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/entity/unlock_entity.py +0 -0
  193. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/equipment/__init__.py +0 -0
  194. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  195. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/field_options/__init__.py +0 -0
  196. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  197. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/files/__init__.py +0 -0
  198. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/files/download_file.py +0 -0
  199. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/id_source/__init__.py +0 -0
  200. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/id_source/list_id_source.py +0 -0
  201. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/id_source/match_id_source.py +0 -0
  202. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/input_groups/__init__.py +0 -0
  203. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  204. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/__init__.py +0 -0
  205. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/create_inputs.py +0 -0
  206. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/get_input_data.py +0 -0
  207. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/get_input_names.py +0 -0
  208. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  209. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  210. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/set_input_category.py +0 -0
  211. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  212. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  213. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/material_families/__init__.py +0 -0
  214. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  215. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/outputs/__init__.py +0 -0
  216. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/outputs/get_output_data.py +0 -0
  217. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/outputs/get_output_names.py +0 -0
  218. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  219. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/permissions/__init__.py +0 -0
  220. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  221. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/project/__init__.py +0 -0
  222. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/project/get_projects.py +0 -0
  223. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/project/get_projects_data.py +0 -0
  224. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipe_links/__init__.py +0 -0
  225. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  226. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  227. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  228. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  229. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/__init__.py +0 -0
  230. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  231. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
  232. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  233. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  234. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  235. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
  236. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/create_recipe.py +0 -0
  237. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/create_recipes.py +0 -0
  238. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  239. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  240. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
  241. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/get_curve.py +0 -0
  242. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  243. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  244. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  245. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  246. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  247. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/lock_recipes.py +0 -0
  248. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  249. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  250. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  251. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  252. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
  253. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  254. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  255. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
  256. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/runsheet/__init__.py +0 -0
  257. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/runsheet/complete_async_upload.py +0 -0
  258. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/triggers/__init__.py +0 -0
  259. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/triggers/run_trigger.py +0 -0
  260. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/uploader/__init__.py +0 -0
  261. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
  262. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/async_batch.py +0 -0
  263. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/async_jobs.py +0 -0
  264. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/async_jobs_t.py +0 -0
  265. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/auth_retrieval.py +0 -0
  266. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/auth_retrieval_t.py +0 -0
  267. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/base.py +0 -0
  268. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/calculations.py +0 -0
  269. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/calculations_t.py +0 -0
  270. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/chemical_structure.py +0 -0
  271. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/chemical_structure_t.py +0 -0
  272. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/client_config.py +0 -0
  273. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/client_config_t.py +0 -0
  274. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/curves.py +0 -0
  275. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/curves_t.py +0 -0
  276. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/data.py +0 -0
  277. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/data_t.py +0 -0
  278. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/entity.py +0 -0
  279. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/experiment_groups.py +0 -0
  280. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/experiment_groups_t.py +0 -0
  281. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/field_values.py +0 -0
  282. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/field_values_t.py +0 -0
  283. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/fields.py +0 -0
  284. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/fields_t.py +0 -0
  285. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/generic_upload.py +0 -0
  286. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/generic_upload_t.py +0 -0
  287. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/id_source.py +0 -0
  288. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/id_source_t.py +0 -0
  289. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/identifier.py +0 -0
  290. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/identifier_t.py +0 -0
  291. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/input_attributes.py +0 -0
  292. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/input_attributes_t.py +0 -0
  293. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/inputs.py +0 -0
  294. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/inputs_t.py +0 -0
  295. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/integration_server.py +0 -0
  296. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/outputs.py +0 -0
  297. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/outputs_t.py +0 -0
  298. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/overrides.py +0 -0
  299. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/overrides_t.py +0 -0
  300. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/permissions.py +0 -0
  301. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/permissions_t.py +0 -0
  302. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/phases.py +0 -0
  303. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/phases_t.py +0 -0
  304. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/post_base.py +0 -0
  305. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/post_base_t.py +0 -0
  306. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/queued_job.py +0 -0
  307. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/queued_job_t.py +0 -0
  308. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_identifiers.py +0 -0
  309. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_identifiers_t.py +0 -0
  310. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_inputs.py +0 -0
  311. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_inputs_t.py +0 -0
  312. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_links.py +0 -0
  313. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_links_t.py +0 -0
  314. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_metadata.py +0 -0
  315. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_metadata_t.py +0 -0
  316. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_output_metadata.py +0 -0
  317. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_output_metadata_t.py +0 -0
  318. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_tags.py +0 -0
  319. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_tags_t.py +0 -0
  320. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_workflow_steps.py +0 -0
  321. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipe_workflow_steps_t.py +0 -0
  322. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipes.py +0 -0
  323. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/recipes_t.py +0 -0
  324. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/response.py +0 -0
  325. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/response_t.py +0 -0
  326. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/secret_retrieval.py +0 -0
  327. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/secret_retrieval_t.py +0 -0
  328. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/units.py +0 -0
  329. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/units_t.py +0 -0
  330. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/users.py +0 -0
  331. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/users_t.py +0 -0
  332. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/webhook_job.py +0 -0
  333. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/webhook_job_t.py +0 -0
  334. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/uncountable/types/workflows.py +0 -0
  335. {uncountablepythonsdk-0.0.113 → uncountablepythonsdk-0.0.115}/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.113
3
+ Version: 0.0.115
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.113
3
+ Version: 0.0.115
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,7 +35,9 @@ 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
40
+ examples/integration-server/jobs/materials_auto/example_http.py
38
41
  examples/integration-server/jobs/materials_auto/example_runsheet_wh.py
39
42
  examples/integration-server/jobs/materials_auto/example_wh.py
40
43
  examples/integration-server/jobs/materials_auto/profile.yaml
@@ -81,6 +84,7 @@ pkgs/type_spec/emit_python.py
81
84
  pkgs/type_spec/emit_typescript.py
82
85
  pkgs/type_spec/emit_typescript_util.py
83
86
  pkgs/type_spec/load_types.py
87
+ pkgs/type_spec/non_discriminated_union_exceptions.py
84
88
  pkgs/type_spec/open_api_util.py
85
89
  pkgs/type_spec/test.py
86
90
  pkgs/type_spec/util.py
@@ -123,6 +127,8 @@ uncountable/integration/executors/__init__.py
123
127
  uncountable/integration/executors/executors.py
124
128
  uncountable/integration/executors/generic_upload_executor.py
125
129
  uncountable/integration/executors/script_executor.py
130
+ uncountable/integration/http_server/__init__.py
131
+ uncountable/integration/http_server/types.py
126
132
  uncountable/integration/queue_runner/__init__.py
127
133
  uncountable/integration/queue_runner/job_scheduler.py
128
134
  uncountable/integration/queue_runner/queue_runner.py
@@ -169,6 +175,8 @@ uncountable/types/entity.py
169
175
  uncountable/types/entity_t.py
170
176
  uncountable/types/experiment_groups.py
171
177
  uncountable/types/experiment_groups_t.py
178
+ uncountable/types/exports.py
179
+ uncountable/types/exports_t.py
172
180
  uncountable/types/field_values.py
173
181
  uncountable/types/field_values_t.py
174
182
  uncountable/types/fields.py
@@ -239,6 +247,7 @@ uncountable/types/api/entity/__init__.py
239
247
  uncountable/types/api/entity/create_entities.py
240
248
  uncountable/types/api/entity/create_entity.py
241
249
  uncountable/types/api/entity/create_or_update_entity.py
250
+ uncountable/types/api/entity/export_entities.py
242
251
  uncountable/types/api/entity/get_entities_data.py
243
252
  uncountable/types/api/entity/grant_entity_permissions.py
244
253
  uncountable/types/api/entity/list_entities.py
@@ -292,6 +301,7 @@ uncountable/types/api/recipes/archive_recipes.py
292
301
  uncountable/types/api/recipes/associate_recipe_as_input.py
293
302
  uncountable/types/api/recipes/associate_recipe_as_lot.py
294
303
  uncountable/types/api/recipes/clear_recipe_outputs.py
304
+ uncountable/types/api/recipes/create_mix_order.py
295
305
  uncountable/types/api/recipes/create_recipe.py
296
306
  uncountable/types/api/recipes/create_recipes.py
297
307
  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)
@@ -0,0 +1,35 @@
1
+ from dataclasses import dataclass
2
+
3
+ from uncountable.integration.http_server import (
4
+ GenericHttpRequest,
5
+ GenericHttpResponse,
6
+ )
7
+ from uncountable.integration.job import CustomHttpJob, register_job
8
+ from uncountable.types import job_definition_t
9
+
10
+
11
+ @dataclass(kw_only=True)
12
+ class ExampleWebhookPayload:
13
+ id: int
14
+ message: str
15
+
16
+
17
+ @register_job
18
+ class HttpExample(CustomHttpJob):
19
+ @staticmethod
20
+ def validate_request(
21
+ *,
22
+ request: GenericHttpRequest,
23
+ job_definition: job_definition_t.HttpJobDefinitionBase,
24
+ profile_meta: job_definition_t.ProfileMetadata,
25
+ ) -> None:
26
+ return None
27
+
28
+ @staticmethod
29
+ def handle_request(
30
+ *,
31
+ request: GenericHttpRequest,
32
+ job_definition: job_definition_t.HttpJobDefinitionBase,
33
+ profile_meta: job_definition_t.ProfileMetadata,
34
+ ) -> GenericHttpResponse:
35
+ return GenericHttpResponse(response="OK", status_code=200)
@@ -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
@@ -41,6 +60,12 @@ jobs:
41
60
  executor:
42
61
  type: script
43
62
  import_path: example_wh
63
+ - id: example_http
64
+ type: custom_http
65
+ name: Custom HTTP
66
+ executor:
67
+ type: script
68
+ import_path: example_http
44
69
  - id: example_runsheet_wh
45
70
  type: webhook
46
71
  name: Runsheet 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],
@@ -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
@@ -1,13 +1,14 @@
1
1
  import json
2
+ import re
2
3
  from dataclasses import dataclass
3
4
  from io import StringIO
4
5
  from pathlib import Path
5
6
  from typing import assert_never
6
7
 
7
8
  from main.base.types import (
9
+ base_t,
8
10
  ui_entry_actions_t,
9
11
  )
10
- from pkgs.argument_parser import snake_to_camel_case
11
12
  from pkgs.serialization_util import serialize_for_api
12
13
  from pkgs.type_spec import emit_typescript_util
13
14
  from pkgs.type_spec.builder import (
@@ -45,8 +46,8 @@ def ui_entry_variable_to_type_spec_type(
45
46
  match variable:
46
47
  case ui_entry_actions_t.UiEntryActionVariableString():
47
48
  return BaseTypeName.s_string
48
- case ui_entry_actions_t.UiEntryActionVariableEntityFields():
49
- return "entity.Entity"
49
+ case ui_entry_actions_t.UiEntryActionVariableSingleEntity():
50
+ return "ObjectId"
50
51
  case _:
51
52
  assert_never(variable)
52
53
 
@@ -157,6 +158,15 @@ def emit_entry_action_definition(
157
158
  )
158
159
 
159
160
 
161
+ def _validate_input(input: ui_entry_actions_t.UiEntryActionVariable) -> None:
162
+ if "_" in input.vs_var_name:
163
+ raise ValueError(f"Expected camelCase for variable {input.vs_var_name}")
164
+ if not re.fullmatch(base_t.REF_NAME_STRICT_REGEX, input.vs_var_name):
165
+ raise ValueError(
166
+ f"Variable {input.vs_var_name} has invalid syntax. See REF_NAME_STRICT_REGEX"
167
+ )
168
+
169
+
160
170
  def emit_query_index(
161
171
  ctx: emit_typescript_util.EmitTypescriptContext,
162
172
  defn_infos: list[EntryActionTypeInfo],
@@ -182,6 +192,7 @@ def emit_query_index(
182
192
  "type": BaseTypeName.s_object,
183
193
  "properties": {
184
194
  "value_spec_var": {"type": "String"},
195
+ "type": {"type": "ui_entry_actions.UiEntryActionDataType"},
185
196
  "variable": {"type": "ui_entry_actions.UiEntryActionVariable"},
186
197
  },
187
198
  },
@@ -215,10 +226,12 @@ def emit_query_index(
215
226
  for scope, defn in definitions.items():
216
227
  inputs = []
217
228
  outputs = []
218
- for name, input in defn.inputs.items():
229
+ for input in defn.inputs.values():
230
+ _validate_input(input)
219
231
  inputs.append(
220
232
  serialize_for_api({
221
- "value_spec_var": snake_to_camel_case(name),
233
+ "value_spec_var": input.vs_var_name,
234
+ "type": input.type,
222
235
  "variable": input,
223
236
  })
224
237
  )
@@ -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):
@@ -18,7 +18,7 @@ def get_server_env() -> str | None:
18
18
  return os.environ.get("UNC_SERVER_ENV")
19
19
 
20
20
 
21
- def get_webhook_server_port() -> int:
21
+ def get_http_server_port() -> int:
22
22
  return int(os.environ.get("UNC_WEBHOOK_SERVER_PORT", "5001"))
23
23
 
24
24
 
@@ -0,0 +1,5 @@
1
+ # CLOSED MODULE
2
+
3
+ from .types import GenericHttpRequest as GenericHttpRequest
4
+ from .types import GenericHttpResponse as GenericHttpResponse
5
+ from .types import HttpException as HttpException
@@ -0,0 +1,67 @@
1
+ import base64
2
+ import functools
3
+ from dataclasses import dataclass
4
+
5
+ from flask.wrappers import Response
6
+
7
+
8
+ class HttpException(Exception):
9
+ error_code: int
10
+ message: str
11
+
12
+ def __init__(self, *, error_code: int, message: str) -> None:
13
+ self.error_code = error_code
14
+ self.message = message
15
+
16
+ @staticmethod
17
+ def payload_failed_signature() -> "HttpException":
18
+ return HttpException(
19
+ error_code=401, message="webhook payload did not match signature"
20
+ )
21
+
22
+ @staticmethod
23
+ def no_signature_passed() -> "HttpException":
24
+ return HttpException(error_code=400, message="missing signature")
25
+
26
+ @staticmethod
27
+ def body_parse_error() -> "HttpException":
28
+ return HttpException(error_code=400, message="body parse error")
29
+
30
+ @staticmethod
31
+ def unknown_error() -> "HttpException":
32
+ return HttpException(error_code=500, message="internal server error")
33
+
34
+ @staticmethod
35
+ def configuration_error(
36
+ message: str = "internal configuration error",
37
+ ) -> "HttpException":
38
+ return HttpException(error_code=500, message=message)
39
+
40
+ def __str__(self) -> str:
41
+ return f"[{self.error_code}]: {self.message}"
42
+
43
+ def make_error_response(self) -> Response:
44
+ return Response(
45
+ status=self.error_code, response={"error": {"message": str(self)}}
46
+ )
47
+
48
+
49
+ @dataclass(kw_only=True, frozen=True)
50
+ class GenericHttpRequest:
51
+ body_base64: str
52
+ headers: dict[str, str]
53
+
54
+ @functools.cached_property
55
+ def body_bytes(self) -> bytes:
56
+ return base64.b64decode(self.body_base64)
57
+
58
+ @functools.cached_property
59
+ def body_text(self) -> str:
60
+ return self.body_bytes.decode()
61
+
62
+
63
+ @dataclass(kw_only=True)
64
+ class GenericHttpResponse:
65
+ response: str
66
+ status_code: int
67
+ headers: dict[str, str] | None = None