UncountablePythonSDK 0.0.159__tar.gz → 0.0.160__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.
Files changed (399) hide show
  1. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/PKG-INFO +1 -1
  2. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/PKG-INFO +1 -1
  3. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/SOURCES.txt +1 -0
  4. uncountablepythonsdk-0.0.160/docs/static/favicons/manifest.json +18 -0
  5. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/pyproject.toml +1 -1
  6. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/__init__.py +2 -0
  7. uncountablepythonsdk-0.0.160/pkgs/filesystem_utils/_file_share_session.py +131 -0
  8. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/file_type_utils.py +9 -0
  9. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_open_api.py +21 -15
  10. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/client.py +5 -0
  11. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/worker.py +15 -2
  12. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/edit_recipe_inputs.py +59 -1
  13. uncountablepythonsdk-0.0.159/docs/static/favicons/manifest.json +0 -18
  14. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.github/workflows/documentation.yml +0 -0
  15. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.github/workflows/publish.yml +0 -0
  16. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.gitignore +0 -0
  17. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/.python-version +0 -0
  18. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/README.md +0 -0
  19. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  20. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  21. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  22. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/.gitignore +0 -0
  23. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/conf.py +0 -0
  24. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/index.md +0 -0
  25. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/create_ingredient.md +0 -0
  26. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/create_output.md +0 -0
  27. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/index.md +0 -0
  28. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/integration_examples/upload_file.md +0 -0
  29. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/justfile +0 -0
  30. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/requirements.txt +0 -0
  31. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/android-chrome-192x192.png +0 -0
  32. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/android-chrome-512x512.png +0 -0
  33. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/apple-touch-icon.png +0 -0
  34. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/browserconfig.xml +0 -0
  35. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/favicon-16x16.png +0 -0
  36. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/favicon-32x32.png +0 -0
  37. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/mstile-150x150.png +0 -0
  38. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  39. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/docs/static/logo_blue.png +0 -0
  40. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/async_batch.py +0 -0
  41. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/async_batch_large_parse.py +0 -0
  42. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/basic_auth.py +0 -0
  43. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/create_entity.py +0 -0
  44. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/create_ingredient_sdk.py +0 -0
  45. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/download_files.py +0 -0
  46. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/edit_recipe_inputs.py +0 -0
  47. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/concurrent_cron.py +0 -0
  48. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
  49. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_http.py +0 -0
  50. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_instrument.py +0 -0
  51. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_parse.py +0 -0
  52. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_predictions.py +0 -0
  53. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
  54. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
  55. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
  56. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/invoke_uploader.py +0 -0
  57. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/oauth.py +0 -0
  58. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_input_pdf_attribute.py +0 -0
  59. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_recipe_metadata_file.py +0 -0
  60. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/set_recipe_output_file_sdk.py +0 -0
  61. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/examples/upload_files.py +0 -0
  62. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/__init__.py +0 -0
  63. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/__init__.py +0 -0
  64. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/_is_enum.py +0 -0
  65. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  66. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/argument_parser.py +0 -0
  67. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/argument_parser/case_convert.py +0 -0
  68. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_blob_session.py +0 -0
  69. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
  70. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_local_session.py +0 -0
  71. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_s3_session.py +0 -0
  72. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  73. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  74. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/py.typed +0 -0
  75. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/__init__.py +0 -0
  76. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/annotation.py +0 -0
  77. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/missing_sentry.py +0 -0
  78. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/opaque_key.py +0 -0
  79. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_alias.py +0 -0
  80. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_class.py +0 -0
  81. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_generic.py +0 -0
  82. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/serial_union.py +0 -0
  83. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/unknown.py +0 -0
  84. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization/yaml.py +0 -0
  85. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/__init__.py +0 -0
  86. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  87. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  88. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/dataclasses.py +0 -0
  89. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/serialization_util/serialization_helpers.py +0 -0
  90. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/strenum_compat/__init__.py +0 -0
  91. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/strenum_compat/strenum_compat.py +0 -0
  92. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/__init__.py +0 -0
  93. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/__main__.py +0 -0
  94. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  95. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  96. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  97. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/builder.py +0 -0
  98. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/builder_types.py +0 -0
  99. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/config.py +0 -0
  100. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/cross_output_links.py +0 -0
  101. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_io_ts.py +0 -0
  102. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_open_api_util.py +0 -0
  103. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_python.py +0 -0
  104. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_typescript.py +0 -0
  105. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/emit_typescript_util.py +0 -0
  106. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/load_types.py +0 -0
  107. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/non_discriminated_union_exceptions.py +0 -0
  108. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/open_api_util.py +0 -0
  109. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/parts/base.py.prepart +0 -0
  110. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  111. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/test.py +0 -0
  112. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/type_info/__main__.py +0 -0
  113. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
  114. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
  115. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +0 -0
  116. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/util.py +0 -0
  117. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/__init__.py +0 -0
  118. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/__main__.py +0 -0
  119. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  120. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  121. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pkgs/type_spec/value_spec/types.py +0 -0
  122. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/pyproject.toml +0 -0
  123. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/setup.cfg +0 -0
  124. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/__init__.py +0 -0
  125. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/__init__.py +0 -0
  126. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/async_batch.py +0 -0
  127. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/environment.py +0 -0
  128. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/file_upload.py +0 -0
  129. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/__init__.py +0 -0
  130. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/builder.py +0 -0
  131. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/column.py +0 -0
  132. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/row.py +0 -0
  133. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/query/types.py +0 -0
  134. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/core/types.py +0 -0
  135. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/__init__.py +0 -0
  136. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/cli.py +0 -0
  137. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/construct_client.py +0 -0
  138. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/cron.py +0 -0
  139. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/db/__init__.py +0 -0
  140. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/db/connect.py +0 -0
  141. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/db/session.py +0 -0
  142. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/entrypoint.py +0 -0
  143. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/__init__.py +0 -0
  144. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/executors.py +0 -0
  145. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/generic_upload_executor.py +0 -0
  146. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/executors/script_executor.py +0 -0
  147. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/http_server/__init__.py +0 -0
  148. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/http_server/types.py +0 -0
  149. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/job.py +0 -0
  150. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/__init__.py +0 -0
  151. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
  152. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
  153. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
  154. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/constants.py +0 -0
  155. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  156. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
  157. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
  158. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
  159. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
  160. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/command_server/types.py +0 -0
  161. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
  162. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
  163. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
  164. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/datastore/model.py +0 -0
  165. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
  166. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/queue_runner.py +0 -0
  167. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/queue_runner/types.py +0 -0
  168. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/request_context.py +0 -0
  169. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/scan_profiles.py +0 -0
  170. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/scheduler.py +0 -0
  171. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  172. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
  173. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/server.py +0 -0
  174. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/telemetry.py +0 -0
  175. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/integration/webhook_server/entrypoint.py +0 -0
  176. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/py.typed +0 -0
  177. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/__init__.py +0 -0
  178. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/__init__.py +0 -0
  179. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/batch/__init__.py +0 -0
  180. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/batch/execute_batch.py +0 -0
  181. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  182. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/chemical/__init__.py +0 -0
  183. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  184. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/condition_parameters/__init__.py +0 -0
  185. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/condition_parameters/upsert_condition_match.py +0 -0
  186. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/__init__.py +0 -0
  187. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/create_entities.py +0 -0
  188. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/create_entity.py +0 -0
  189. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
  190. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/export_entities.py +0 -0
  191. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/get_entities_data.py +0 -0
  192. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
  193. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/list_aggregate.py +0 -0
  194. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/list_entities.py +0 -0
  195. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/lock_entity.py +0 -0
  196. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/lookup_entity.py +0 -0
  197. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  198. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/set_barcode.py +0 -0
  199. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
  200. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/set_values.py +0 -0
  201. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  202. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/entity/unlock_entity.py +0 -0
  203. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/equipment/__init__.py +0 -0
  204. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  205. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/field_options/__init__.py +0 -0
  206. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  207. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/file_folders/__init__.py +0 -0
  208. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/file_folders/modify_file_system.py +0 -0
  209. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/files/__init__.py +0 -0
  210. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/files/create_file_record.py +0 -0
  211. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/files/download_file.py +0 -0
  212. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/id_source/__init__.py +0 -0
  213. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/id_source/list_id_source.py +0 -0
  214. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/id_source/match_id_source.py +0 -0
  215. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/input_groups/__init__.py +0 -0
  216. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  217. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/__init__.py +0 -0
  218. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/create_inputs.py +0 -0
  219. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/get_input_data.py +0 -0
  220. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/get_input_names.py +0 -0
  221. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  222. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  223. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_input_category.py +0 -0
  224. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  225. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  226. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/__init__.py +0 -0
  227. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/publish_realtime_data.py +0 -0
  228. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/push_notification.py +0 -0
  229. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/integrations/register_sockets_token.py +0 -0
  230. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/listing/__init__.py +0 -0
  231. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/listing/export_listing.py +0 -0
  232. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/listing/fetch_listing.py +0 -0
  233. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/material_families/__init__.py +0 -0
  234. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  235. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/notebooks/__init__.py +0 -0
  236. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/notebooks/add_notebook_content.py +0 -0
  237. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/notebooks/get_notebook_content.py +0 -0
  238. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/__init__.py +0 -0
  239. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/get_output_data.py +0 -0
  240. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/get_output_names.py +0 -0
  241. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/get_output_organization.py +0 -0
  242. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  243. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/outputs/update_output_condition_parameter.py +0 -0
  244. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/permissions/__init__.py +0 -0
  245. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  246. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/permissions/set_entity_permission.py +0 -0
  247. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/project/__init__.py +0 -0
  248. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/project/get_projects.py +0 -0
  249. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/project/get_projects_data.py +0 -0
  250. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_links/__init__.py +0 -0
  251. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  252. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  253. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  254. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  255. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/__init__.py +0 -0
  256. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  257. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
  258. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  259. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  260. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  261. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
  262. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/create_mix_order.py +0 -0
  263. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/create_recipe.py +0 -0
  264. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/create_recipes.py +0 -0
  265. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  266. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
  267. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_curve.py +0 -0
  268. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  269. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  270. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  271. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  272. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  273. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/lock_recipes.py +0 -0
  274. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  275. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  276. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  277. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  278. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
  279. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
  280. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  281. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/set_recipe_total.py +0 -0
  282. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  283. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
  284. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/runsheet/__init__.py +0 -0
  285. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/runsheet/complete_async_upload.py +0 -0
  286. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/runsheet/export_default_runsheet.py +0 -0
  287. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/triggers/__init__.py +0 -0
  288. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/triggers/run_trigger.py +0 -0
  289. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/uploader/__init__.py +0 -0
  290. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/uploader/complete_async_parse.py +0 -0
  291. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
  292. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/user/__init__.py +0 -0
  293. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/api/user/get_current_user_info.py +0 -0
  294. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_batch.py +0 -0
  295. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_batch_processor.py +0 -0
  296. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_batch_t.py +0 -0
  297. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_jobs.py +0 -0
  298. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/async_jobs_t.py +0 -0
  299. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/auth_retrieval.py +0 -0
  300. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/auth_retrieval_t.py +0 -0
  301. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/base.py +0 -0
  302. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/base_t.py +0 -0
  303. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/calculations.py +0 -0
  304. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/calculations_t.py +0 -0
  305. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/chemical_structure.py +0 -0
  306. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/chemical_structure_t.py +0 -0
  307. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/client_base.py +0 -0
  308. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/client_config.py +0 -0
  309. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/client_config_t.py +0 -0
  310. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/curves.py +0 -0
  311. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/curves_t.py +0 -0
  312. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/data.py +0 -0
  313. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/data_t.py +0 -0
  314. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/entity.py +0 -0
  315. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/entity_t.py +0 -0
  316. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/experiment_groups.py +0 -0
  317. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/experiment_groups_t.py +0 -0
  318. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/exports.py +0 -0
  319. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/exports_t.py +0 -0
  320. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/field_values.py +0 -0
  321. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/field_values_t.py +0 -0
  322. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/fields.py +0 -0
  323. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/fields_t.py +0 -0
  324. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/generic_upload.py +0 -0
  325. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/generic_upload_t.py +0 -0
  326. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/id_source.py +0 -0
  327. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/id_source_t.py +0 -0
  328. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/identifier.py +0 -0
  329. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/identifier_t.py +0 -0
  330. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/input_attributes.py +0 -0
  331. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/input_attributes_t.py +0 -0
  332. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/inputs.py +0 -0
  333. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/inputs_t.py +0 -0
  334. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_server.py +0 -0
  335. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_server_t.py +0 -0
  336. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_session.py +0 -0
  337. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integration_session_t.py +0 -0
  338. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integrations.py +0 -0
  339. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/integrations_t.py +0 -0
  340. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/job_definition.py +0 -0
  341. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/job_definition_t.py +0 -0
  342. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/listing.py +0 -0
  343. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/listing_t.py +0 -0
  344. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notices.py +0 -0
  345. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notices_t.py +0 -0
  346. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notifications.py +0 -0
  347. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/notifications_t.py +0 -0
  348. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/outputs.py +0 -0
  349. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/outputs_t.py +0 -0
  350. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/overrides.py +0 -0
  351. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/overrides_t.py +0 -0
  352. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/permissions.py +0 -0
  353. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/permissions_t.py +0 -0
  354. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/phases.py +0 -0
  355. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/phases_t.py +0 -0
  356. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/post_base.py +0 -0
  357. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/post_base_t.py +0 -0
  358. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/queued_job.py +0 -0
  359. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/queued_job_t.py +0 -0
  360. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_identifiers.py +0 -0
  361. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_identifiers_t.py +0 -0
  362. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_inputs.py +0 -0
  363. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_inputs_t.py +0 -0
  364. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_links.py +0 -0
  365. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_links_t.py +0 -0
  366. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_metadata.py +0 -0
  367. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_metadata_t.py +0 -0
  368. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_output_metadata.py +0 -0
  369. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_output_metadata_t.py +0 -0
  370. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_step_relationships.py +0 -0
  371. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_step_relationships_t.py +0 -0
  372. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_tags.py +0 -0
  373. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_tags_t.py +0 -0
  374. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_workflow_steps.py +0 -0
  375. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipe_workflow_steps_t.py +0 -0
  376. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipes.py +0 -0
  377. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/recipes_t.py +0 -0
  378. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/response.py +0 -0
  379. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/response_t.py +0 -0
  380. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet.py +0 -0
  381. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet_format.py +0 -0
  382. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet_format_t.py +0 -0
  383. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/runsheet_t.py +0 -0
  384. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/secret_retrieval.py +0 -0
  385. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/secret_retrieval_t.py +0 -0
  386. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/sockets.py +0 -0
  387. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/sockets_t.py +0 -0
  388. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/specs.py +0 -0
  389. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/specs_t.py +0 -0
  390. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/units.py +0 -0
  391. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/units_t.py +0 -0
  392. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/uploader.py +0 -0
  393. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/uploader_t.py +0 -0
  394. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/users.py +0 -0
  395. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/users_t.py +0 -0
  396. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/webhook_job.py +0 -0
  397. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/webhook_job_t.py +0 -0
  398. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/workflows.py +0 -0
  399. {uncountablepythonsdk-0.0.159 → uncountablepythonsdk-0.0.160}/uncountable/types/workflows_t.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.159
3
+ Version: 0.0.160
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.159
3
+ Version: 0.0.160
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
@@ -60,6 +60,7 @@ pkgs/argument_parser/argument_parser.py
60
60
  pkgs/argument_parser/case_convert.py
61
61
  pkgs/filesystem_utils/__init__.py
62
62
  pkgs/filesystem_utils/_blob_session.py
63
+ pkgs/filesystem_utils/_file_share_session.py
63
64
  pkgs/filesystem_utils/_gdrive_session.py
64
65
  pkgs/filesystem_utils/_local_session.py
65
66
  pkgs/filesystem_utils/_s3_session.py
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "",
3
+ "icons": [
4
+ {
5
+ "src": "/static/img/icons/android-chrome-192x192.png",
6
+ "sizes": "192x192",
7
+ "type": "image/png"
8
+ },
9
+ {
10
+ "src": "/static/img/icons/android-chrome-512x512.png",
11
+ "sizes": "512x512",
12
+ "type": "image/png"
13
+ }
14
+ ],
15
+ "theme_color": "#ffffff",
16
+ "background_color": "#ffffff",
17
+ "display": "standalone"
18
+ }
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "types-paramiko ==4.0.0.20250822",
13
13
  "types-openpyxl == 3.*",
14
14
  "types-pysftp == 0.*",
15
- "types-pytz ==2025.*",
15
+ "types-pytz ==2026.*",
16
16
  "types-requests == 2.*",
17
17
  "types-simplejson == 3.*",
18
18
  "pandas-stubs",
@@ -1,4 +1,5 @@
1
1
  from ._blob_session import BlobSession as BlobSession
2
+ from ._file_share_session import FileShareSession as FileShareSession
2
3
  from ._gdrive_session import GDriveSession as GDriveSession
3
4
  from ._gdrive_session import delete_gdrive_file as delete_gdrive_file
4
5
  from ._gdrive_session import download_gdrive_file as download_gdrive_file
@@ -13,6 +14,7 @@ from ._sftp_session import move_sftp_files as move_sftp_files
13
14
  from .file_type_utils import FileObjectData as FileObjectData
14
15
  from .file_type_utils import FileSystemBlobConfig as FileSystemBlobConfig
15
16
  from .file_type_utils import FileSystemFileReference as FileSystemFileReference
17
+ from .file_type_utils import FileSystemFileShareConfig as FileSystemFileShareConfig
16
18
  from .file_type_utils import FileSystemObject as FileSystemObject
17
19
  from .file_type_utils import FileSystemS3Config as FileSystemS3Config
18
20
  from .file_type_utils import FileSystemSFTPConfig as FileSystemSFTPConfig
@@ -0,0 +1,131 @@
1
+ from io import BytesIO
2
+ from typing import Self
3
+
4
+ from azure.core.credentials import AzureSasCredential
5
+ from azure.storage.fileshare import ShareClient, ShareDirectoryClient
6
+
7
+ from pkgs.filesystem_utils.file_type_utils import (
8
+ FileObjectData,
9
+ FileSystemFileReference,
10
+ FileSystemFileShareConfig,
11
+ FileSystemObject,
12
+ FileTransfer,
13
+ IncompatibleFileReference,
14
+ )
15
+ from pkgs.filesystem_utils.filesystem_session import FileSystemSession
16
+
17
+
18
+ class FileShareSession(FileSystemSession):
19
+ def __init__(self, config: FileSystemFileShareConfig) -> None:
20
+ super().__init__()
21
+ self.config = config
22
+ self._share_client: ShareClient | None = None
23
+
24
+ def start(self) -> None:
25
+ self._share_client = ShareClient(
26
+ account_url=self.config.account_url,
27
+ share_name=self.config.share_name,
28
+ credential=self.config.credential,
29
+ )
30
+
31
+ def __enter__(self) -> Self:
32
+ self.start()
33
+ return self
34
+
35
+ def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None:
36
+ self._share_client = None
37
+
38
+ def _list_dir(
39
+ self,
40
+ dir_client: ShareDirectoryClient,
41
+ *,
42
+ recursive: bool,
43
+ valid_extensions: list[str] | None,
44
+ ) -> list[FileSystemObject]:
45
+ results: list[FileSystemObject] = []
46
+ for item in dir_client.list_directories_and_files():
47
+ item_path = f"{dir_client.directory_path}/{item['name']}".lstrip("/")
48
+ if item["is_directory"]:
49
+ if recursive:
50
+ assert self._share_client is not None
51
+ results.extend(
52
+ self._list_dir(
53
+ self._share_client.get_directory_client(item_path),
54
+ recursive=recursive,
55
+ valid_extensions=valid_extensions,
56
+ )
57
+ )
58
+ elif valid_extensions is None or any(
59
+ item_path.endswith(ext) for ext in valid_extensions
60
+ ):
61
+ results.append(FileSystemFileReference(filepath=item_path))
62
+ return results
63
+
64
+ def list_files(
65
+ self,
66
+ dir_path: FileSystemObject,
67
+ *,
68
+ recursive: bool = False,
69
+ valid_extensions: list[str] | None = None,
70
+ ) -> list[FileSystemObject]:
71
+ if not isinstance(dir_path, FileSystemFileReference):
72
+ raise IncompatibleFileReference()
73
+ assert self._share_client is not None, (
74
+ "call to list_files on uninitialized file share session"
75
+ )
76
+ dir_client = self._share_client.get_directory_client(dir_path.filepath)
77
+ return self._list_dir(
78
+ dir_client, recursive=recursive, valid_extensions=valid_extensions
79
+ )
80
+
81
+ def download_files(self, filepaths: list[FileSystemObject]) -> list[FileObjectData]:
82
+ assert self._share_client is not None, (
83
+ "call to download_files on uninitialized file share session"
84
+ )
85
+ downloaded: list[FileObjectData] = []
86
+ for file_object in filepaths:
87
+ if (
88
+ not isinstance(file_object, FileSystemFileReference)
89
+ or not file_object.filename
90
+ ):
91
+ raise IncompatibleFileReference()
92
+ file_client = self._share_client.get_file_client(file_object.filepath)
93
+ stream = file_client.download_file()
94
+ file_data = stream.readall()
95
+ downloaded.append(
96
+ FileObjectData(
97
+ file_data=file_data,
98
+ file_IO=BytesIO(file_data),
99
+ filename=file_object.filename,
100
+ filepath=file_object.filepath,
101
+ )
102
+ )
103
+ return downloaded
104
+
105
+ def move_files(self, file_mappings: list[FileTransfer]) -> None:
106
+ assert self._share_client is not None, (
107
+ "call to move_files on uninitialized file share session"
108
+ )
109
+ for src, dest in file_mappings:
110
+ if not isinstance(src, FileSystemFileReference) or not isinstance(
111
+ dest, FileSystemFileReference
112
+ ):
113
+ raise IncompatibleFileReference()
114
+ src_client = self._share_client.get_file_client(src.filepath)
115
+ dest_client = self._share_client.get_file_client(dest.filepath)
116
+ source_url = (
117
+ f"{src_client.url}?{self.config.credential.signature}"
118
+ if isinstance(self.config.credential, AzureSasCredential)
119
+ else src_client.url
120
+ )
121
+ dest_client.start_copy_from_url(source_url)
122
+ src_client.delete_file()
123
+
124
+ def delete_files(self, filepaths: list[FileSystemObject]) -> None:
125
+ assert self._share_client is not None, (
126
+ "call to delete_files on uninitialized file share session"
127
+ )
128
+ for file_object in filepaths:
129
+ if not isinstance(file_object, FileSystemFileReference):
130
+ raise IncompatibleFileReference()
131
+ self._share_client.get_file_client(file_object.filepath).delete_file()
@@ -89,3 +89,12 @@ class FileSystemBlobConfig:
89
89
  | None
90
90
  )
91
91
  container: ContainerProperties | str
92
+
93
+
94
+ @dataclass(frozen=True, kw_only=True)
95
+ class FileSystemFileShareConfig:
96
+ account_url: str
97
+ credential: (
98
+ AzureNamedKeyCredential | AzureSasCredential | TokenCredential | str | None
99
+ )
100
+ share_name: str
@@ -93,18 +93,29 @@ def _write_guide_as_html(guide: EmitOpenAPIGuide, *, is_open: bool) -> str:
93
93
  </details>"""
94
94
 
95
95
 
96
+ _FRONTMATTER_RE = re.compile(r"^---\n.*?\n---\n", re.DOTALL)
97
+
98
+
99
+ def _strip_guide_frontmatter(content: str) -> str:
100
+ return _FRONTMATTER_RE.sub("", content).lstrip("\n")
101
+
102
+
96
103
  def _open_api_info(
97
- config: OpenAPIConfig, guides: list[EmitOpenAPIGuide]
104
+ *, config: OpenAPIConfig, root_guides: list[builder.SpecGuide]
98
105
  ) -> GlobalContextInfo:
99
- full_guides = "<br/>".join([
100
- _write_guide_as_html(guide, is_open=True)
101
- for guide in sorted(guides, key=lambda g: g.ref_name)
102
- ])
103
- full_description = f"{config.description}<br/>{full_guides}"
104
106
  info: GlobalContextInfo = dict()
105
107
  info["version"] = "1.0.0"
106
108
  info["title"] = "Uncountable API Documentation"
107
- info["description"] = full_description
109
+ sorted_guides = sorted(root_guides, key=lambda g: g.ref_name)
110
+ description_parts = [
111
+ config.description,
112
+ *[
113
+ f'<a id="{guide.ref_name}" />\n\n'
114
+ + _strip_guide_frontmatter(guide.markdown_content)
115
+ for guide in sorted_guides
116
+ ],
117
+ ]
118
+ info["description"] = "\n\n".join(description_parts)
108
119
  info["x-logo"] = {
109
120
  "url": "../static/images/logo_blue.png",
110
121
  "altText": "Logo",
@@ -119,16 +130,11 @@ def _open_api_servers(config: OpenAPIConfig) -> list[EmitOpenAPIServer]:
119
130
 
120
131
 
121
132
  def emit_open_api(builder: builder.SpecBuilder, *, config: OpenAPIConfig) -> None:
122
- root_guides = builder.guides.get(RootGuideKey(), [])
123
- openapi_guides = [
124
- EmitOpenAPIGuide(
125
- ref_name=guide.ref_name, title=guide.title, html_content=guide.html_content
126
- )
127
- for guide in root_guides
128
- ]
129
133
  gctx = EmitOpenAPIGlobalContext(
130
134
  version="3.0.0",
131
- info=_open_api_info(config, openapi_guides),
135
+ info=_open_api_info(
136
+ config=config, root_guides=builder.guides.get(RootGuideKey(), [])
137
+ ),
132
138
  servers=_open_api_servers(config),
133
139
  )
134
140
 
@@ -330,6 +330,11 @@ class Client(ClientMethods):
330
330
  headers = self._build_auth_headers()
331
331
  headers[UNC_REQUEST_ID_HEADER] = request_id
332
332
  headers[UNC_SDK_VERSION_HEADER] = get_version()
333
+ if self._cfg.request_context is not None:
334
+ if self._cfg.request_context.user_locale is not None:
335
+ headers["X-User-Locale"] = self._cfg.request_context.user_locale
336
+ if self._cfg.request_context.user_timezone is not None:
337
+ headers["X-User-Timezone"] = self._cfg.request_context.user_timezone
333
338
  method = api_request.method.lower()
334
339
  data = {"data": json.dumps(serialize_for_api(api_request.args))}
335
340
  match method:
@@ -23,7 +23,7 @@ from uncountable.integration.queue_runner.datastore.interface import Datastore
23
23
  from uncountable.integration.queue_runner.types import ListenQueue, ResultQueue
24
24
  from uncountable.integration.scan_profiles import load_profiles
25
25
  from uncountable.integration.telemetry import JobLogger, Logger, get_otel_tracer
26
- from uncountable.types import base_t, job_definition_t, queued_job_t
26
+ from uncountable.types import base_t, client_config_t, job_definition_t, queued_job_t
27
27
 
28
28
 
29
29
  class Worker:
@@ -89,6 +89,16 @@ def _resolve_queued_job_payload(queued_job: queued_job_t.QueuedJob) -> base_t.Js
89
89
  return queued_job.payload.invocation_context.webhook_payload
90
90
 
91
91
 
92
+ def _resolve_queued_job_request_context(
93
+ queued_job: queued_job_t.QueuedJob,
94
+ ) -> client_config_t.RequestContext | None:
95
+ match queued_job.payload.invocation_context:
96
+ case queued_job_t.InvocationContextWebhook():
97
+ return queued_job.payload.invocation_context.request_context
98
+ case _:
99
+ return None
100
+
101
+
92
102
  def run_queued_job(
93
103
  queued_job: queued_job_t.QueuedJob,
94
104
  ) -> job_definition_t.JobResult:
@@ -108,8 +118,11 @@ def run_queued_job(
108
118
  )
109
119
  with job_logger.resource_tracking():
110
120
  try:
121
+ request_context = _resolve_queued_job_request_context(queued_job)
111
122
  client = construct_uncountable_client(
112
- profile_meta=job_details.profile_metadata, logger=job_logger
123
+ profile_meta=job_details.profile_metadata,
124
+ logger=job_logger,
125
+ request_context=request_context,
113
126
  )
114
127
  batch_processor = AsyncBatchProcessor(client=client)
115
128
 
@@ -23,12 +23,15 @@ __all__: list[str] = [
23
23
  "ENDPOINT_METHOD",
24
24
  "ENDPOINT_PATH",
25
25
  "MixStepMatchStrategy",
26
+ "PlaceholderAssignmentPlaceholderType",
26
27
  "PlaceholderBase",
27
28
  "PlaceholderDisplayMode",
28
29
  "PlaceholderType",
30
+ "ProductRecipePlaceholderAssignment",
29
31
  "RecipeInputEdit",
30
32
  "RecipeInputEditAddInput",
31
33
  "RecipeInputEditAddInstructions",
34
+ "RecipeInputEditAssignPlaceholder",
32
35
  "RecipeInputEditBase",
33
36
  "RecipeInputEditChangeBasisViewed",
34
37
  "RecipeInputEditClearInputs",
@@ -41,6 +44,8 @@ __all__: list[str] = [
41
44
  "RecipeInputEditUpdateAnnotations",
42
45
  "RecipeInputEditUpsertInput",
43
46
  "RecipeInputPlaceholder",
47
+ "RecipeInputPlaceholderAssignment",
48
+ "RecipeInputPlaceholderAssignmentBase",
44
49
  "SubcategoryPlaceholder",
45
50
  ]
46
51
 
@@ -60,6 +65,7 @@ class RecipeInputEditType(StrEnum):
60
65
  ADD_INSTRUCTIONS = "add_instructions"
61
66
  SET_ROLE = "set_role"
62
67
  SET_PLACEHOLDER = "set_placeholder"
68
+ ASSIGN_PLACEHOLDER = "assign_placeholder"
63
69
 
64
70
 
65
71
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -269,9 +275,60 @@ class RecipeInputEditPlaceholder(RecipeInputEditBase):
269
275
  mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
270
276
 
271
277
 
278
+ # DO NOT MODIFY -- This file is generated by type_spec
279
+ class PlaceholderAssignmentPlaceholderType(StrEnum):
280
+ PRODUCT = "product"
281
+
282
+
283
+ # DO NOT MODIFY -- This file is generated by type_spec
284
+ @serial_class(
285
+ named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputPlaceholderAssignmentBase",
286
+ )
287
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
288
+ class RecipeInputPlaceholderAssignmentBase:
289
+ type: PlaceholderAssignmentPlaceholderType
290
+
291
+
292
+ # DO NOT MODIFY -- This file is generated by type_spec
293
+ @serial_class(
294
+ named_type_path="sdk.api.recipes.edit_recipe_inputs.ProductRecipePlaceholderAssignment",
295
+ parse_require={"type"},
296
+ )
297
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
298
+ class ProductRecipePlaceholderAssignment(RecipeInputPlaceholderAssignmentBase):
299
+ type: typing.Literal[PlaceholderAssignmentPlaceholderType.PRODUCT] = PlaceholderAssignmentPlaceholderType.PRODUCT
300
+ product_key: identifier_t.IdentifierKey
301
+ recipe_key: identifier_t.IdentifierKey
302
+
303
+
304
+ # DO NOT MODIFY -- This file is generated by type_spec
305
+ RecipeInputPlaceholderAssignment = typing.Annotated[
306
+ typing.Union[ProductRecipePlaceholderAssignment],
307
+ serial_union_annotation(
308
+ named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputPlaceholderAssignment",
309
+ discriminator="type",
310
+ discriminator_map={
311
+ "product": ProductRecipePlaceholderAssignment,
312
+ },
313
+ ),
314
+ ]
315
+
316
+
317
+ # DO NOT MODIFY -- This file is generated by type_spec
318
+ @serial_class(
319
+ named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditAssignPlaceholder",
320
+ parse_require={"type"},
321
+ )
322
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
323
+ class RecipeInputEditAssignPlaceholder(RecipeInputEditBase):
324
+ type: typing.Literal[RecipeInputEditType.ASSIGN_PLACEHOLDER] = RecipeInputEditType.ASSIGN_PLACEHOLDER
325
+ assignment: RecipeInputPlaceholderAssignment
326
+ mix_step_match_strategy: MixStepMatchStrategy = MixStepMatchStrategy.FIRST
327
+
328
+
272
329
  # DO NOT MODIFY -- This file is generated by type_spec
273
330
  RecipeInputEdit = typing.Annotated[
274
- RecipeInputEditClearInputs | RecipeInputEditUpsertInput | RecipeInputEditAddInput | RecipeInputEditUpdateAnnotations | RecipeInputEditSetLot | RecipeInputEditSetPropagatedPercentage | RecipeInputEditChangeBasisViewed | RecipeInputEditAddInstructions | RecipeInputEditSetRole | RecipeInputEditPlaceholder,
331
+ RecipeInputEditClearInputs | RecipeInputEditUpsertInput | RecipeInputEditAddInput | RecipeInputEditUpdateAnnotations | RecipeInputEditSetLot | RecipeInputEditSetPropagatedPercentage | RecipeInputEditChangeBasisViewed | RecipeInputEditAddInstructions | RecipeInputEditSetRole | RecipeInputEditPlaceholder | RecipeInputEditAssignPlaceholder,
275
332
  serial_union_annotation(
276
333
  named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEdit",
277
334
  discriminator="type",
@@ -286,6 +343,7 @@ RecipeInputEdit = typing.Annotated[
286
343
  "add_instructions": RecipeInputEditAddInstructions,
287
344
  "set_role": RecipeInputEditSetRole,
288
345
  "set_placeholder": RecipeInputEditPlaceholder,
346
+ "assign_placeholder": RecipeInputEditAssignPlaceholder,
289
347
  },
290
348
  ),
291
349
  ]
@@ -1,18 +0,0 @@
1
- {
2
- "name": "",
3
- "icons": [
4
- {
5
- "src": "/static/img/icons/android-chrome-192x192.png",
6
- "sizes": "192x192",
7
- "type": "image/png"
8
- },
9
- {
10
- "src": "/static/img/icons/android-chrome-512x512.png",
11
- "sizes": "512x512",
12
- "type": "image/png"
13
- }
14
- ],
15
- "theme_color": "#ffffff",
16
- "background_color": "#ffffff",
17
- "display": "standalone"
18
- }