uipath 2.0.69__tar.gz → 2.0.70__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 uipath might be problematic. Click here for more details.

Files changed (196) hide show
  1. {uipath-2.0.69 → uipath-2.0.70}/PKG-INFO +1 -1
  2. {uipath-2.0.69 → uipath-2.0.70}/pyproject.toml +1 -1
  3. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_pack.py +1 -1
  4. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/buckets_service.py +34 -10
  5. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/context_grounding_service.py +4 -4
  6. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_buckets_service.py +0 -1
  7. {uipath-2.0.69 → uipath-2.0.70}/uv.lock +1697 -1698
  8. {uipath-2.0.69 → uipath-2.0.70}/.cursorrules +0 -0
  9. {uipath-2.0.69 → uipath-2.0.70}/.editorconfig +0 -0
  10. {uipath-2.0.69 → uipath-2.0.70}/.gitattributes +0 -0
  11. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/cd.yml +0 -0
  12. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/ci.yml +0 -0
  13. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/commitlint.yml +0 -0
  14. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/lint.yml +0 -0
  15. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/publish-dev.yml +0 -0
  16. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/publish-docs.yml +0 -0
  17. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/slack.yml +0 -0
  18. {uipath-2.0.69 → uipath-2.0.70}/.github/workflows/test.yml +0 -0
  19. {uipath-2.0.69 → uipath-2.0.70}/.gitignore +0 -0
  20. {uipath-2.0.69 → uipath-2.0.70}/.pre-commit-config.yaml +0 -0
  21. {uipath-2.0.69 → uipath-2.0.70}/.python-version +0 -0
  22. {uipath-2.0.69 → uipath-2.0.70}/.vscode/extensions.json +0 -0
  23. {uipath-2.0.69 → uipath-2.0.70}/.vscode/launch.json +0 -0
  24. {uipath-2.0.69 → uipath-2.0.70}/.vscode/settings.json +0 -0
  25. {uipath-2.0.69 → uipath-2.0.70}/CONTRIBUTING.md +0 -0
  26. {uipath-2.0.69 → uipath-2.0.70}/LICENSE +0 -0
  27. {uipath-2.0.69 → uipath-2.0.70}/README.md +0 -0
  28. {uipath-2.0.69 → uipath-2.0.70}/docs/CONTRIBUTING.md +0 -0
  29. {uipath-2.0.69 → uipath-2.0.70}/docs/FAQ.md +0 -0
  30. {uipath-2.0.69 → uipath-2.0.70}/docs/assets/env-preparation-failed-dark.png +0 -0
  31. {uipath-2.0.69 → uipath-2.0.70}/docs/assets/env-preparation-failed-light.png +0 -0
  32. {uipath-2.0.69 → uipath-2.0.70}/docs/assets/favicon.png +0 -0
  33. {uipath-2.0.69 → uipath-2.0.70}/docs/assets/logo-dark.svg +0 -0
  34. {uipath-2.0.69 → uipath-2.0.70}/docs/assets/logo-light.svg +0 -0
  35. {uipath-2.0.69 → uipath-2.0.70}/docs/cli/index.md +0 -0
  36. {uipath-2.0.69 → uipath-2.0.70}/docs/core/actions.md +0 -0
  37. {uipath-2.0.69 → uipath-2.0.70}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  38. {uipath-2.0.69 → uipath-2.0.70}/docs/core/assets/cloud_env_var_light.gif +0 -0
  39. {uipath-2.0.69 → uipath-2.0.70}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  40. {uipath-2.0.69 → uipath-2.0.70}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  41. {uipath-2.0.69 → uipath-2.0.70}/docs/core/assets/copy_path_dark.png +0 -0
  42. {uipath-2.0.69 → uipath-2.0.70}/docs/core/assets/copy_path_light.png +0 -0
  43. {uipath-2.0.69 → uipath-2.0.70}/docs/core/assets.md +0 -0
  44. {uipath-2.0.69 → uipath-2.0.70}/docs/core/attachments.md +0 -0
  45. {uipath-2.0.69 → uipath-2.0.70}/docs/core/buckets.md +0 -0
  46. {uipath-2.0.69 → uipath-2.0.70}/docs/core/connections.md +0 -0
  47. {uipath-2.0.69 → uipath-2.0.70}/docs/core/context_grounding.md +0 -0
  48. {uipath-2.0.69 → uipath-2.0.70}/docs/core/environment_variables.md +0 -0
  49. {uipath-2.0.69 → uipath-2.0.70}/docs/core/getting_started.md +0 -0
  50. {uipath-2.0.69 → uipath-2.0.70}/docs/core/jobs.md +0 -0
  51. {uipath-2.0.69 → uipath-2.0.70}/docs/core/processes.md +0 -0
  52. {uipath-2.0.69 → uipath-2.0.70}/docs/core/queues.md +0 -0
  53. {uipath-2.0.69 → uipath-2.0.70}/docs/core/traced.md +0 -0
  54. {uipath-2.0.69 → uipath-2.0.70}/docs/hooks.py +0 -0
  55. {uipath-2.0.69 → uipath-2.0.70}/docs/javascripts/extra.js +0 -0
  56. {uipath-2.0.69 → uipath-2.0.70}/docs/langchain/chat_models.md +0 -0
  57. {uipath-2.0.69 → uipath-2.0.70}/docs/langchain/context_grounding.md +0 -0
  58. {uipath-2.0.69 → uipath-2.0.70}/docs/langchain/human_in_the_loop.md +0 -0
  59. {uipath-2.0.69 → uipath-2.0.70}/docs/overrides/main.html +0 -0
  60. {uipath-2.0.69 → uipath-2.0.70}/docs/overrides/partials/actions.html +0 -0
  61. {uipath-2.0.69 → uipath-2.0.70}/docs/overrides/partials/logo.html +0 -0
  62. {uipath-2.0.69 → uipath-2.0.70}/docs/release_policy.md +0 -0
  63. {uipath-2.0.69 → uipath-2.0.70}/docs/stylesheets/extra.css +0 -0
  64. {uipath-2.0.69 → uipath-2.0.70}/justfile +0 -0
  65. {uipath-2.0.69 → uipath-2.0.70}/mkdocs.yml +0 -0
  66. {uipath-2.0.69 → uipath-2.0.70}/py.typed +0 -0
  67. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/__init__.py +0 -0
  68. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/README.md +0 -0
  69. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/__init__.py +0 -0
  70. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  71. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/_models.py +0 -0
  72. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  73. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  74. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/_utils.py +0 -0
  75. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/auth_config.json +0 -0
  76. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/index.html +0 -0
  77. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/localhost.crt +0 -0
  78. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_auth/localhost.key +0 -0
  79. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  80. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  81. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  82. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_runtime/_logging.py +0 -0
  83. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  84. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  85. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_templates/.rels.template +0 -0
  86. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  87. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_templates/main.py.template +0 -0
  88. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  89. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_common.py +0 -0
  90. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_console.py +0 -0
  91. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_constants.py +0 -0
  92. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_debug.py +0 -0
  93. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_folders.py +0 -0
  94. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_input_args.py +0 -0
  95. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  96. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_processes.py +0 -0
  97. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/_utils/_tracing.py +0 -0
  98. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_auth.py +0 -0
  99. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_deploy.py +0 -0
  100. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_init.py +0 -0
  101. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_invoke.py +0 -0
  102. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_new.py +0 -0
  103. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_publish.py +0 -0
  104. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/cli_run.py +0 -0
  105. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/middlewares.py +0 -0
  106. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_cli/spinner.py +0 -0
  107. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_config.py +0 -0
  108. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_execution_context.py +0 -0
  109. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_folder_context.py +0 -0
  110. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/__init__.py +0 -0
  111. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/_base_service.py +0 -0
  112. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/actions_service.py +0 -0
  113. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/api_client.py +0 -0
  114. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/assets_service.py +0 -0
  115. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/attachments_service.py +0 -0
  116. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/connections_service.py +0 -0
  117. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/folder_service.py +0 -0
  118. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/jobs_service.py +0 -0
  119. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/llm_gateway_service.py +0 -0
  120. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/processes_service.py +0 -0
  121. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_services/queues_service.py +0 -0
  122. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_uipath.py +0 -0
  123. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/__init__.py +0 -0
  124. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_endpoint.py +0 -0
  125. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_infer_bindings.py +0 -0
  126. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_logs.py +0 -0
  127. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_read_overwrites.py +0 -0
  128. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_request_override.py +0 -0
  129. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_request_spec.py +0 -0
  130. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_url.py +0 -0
  131. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/_user_agent.py +0 -0
  132. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/_utils/constants.py +0 -0
  133. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/__init__.py +0 -0
  134. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/action_schema.py +0 -0
  135. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/actions.py +0 -0
  136. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/assets.py +0 -0
  137. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/attachment.py +0 -0
  138. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/buckets.py +0 -0
  139. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/connections.py +0 -0
  140. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/context_grounding.py +0 -0
  141. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/context_grounding_index.py +0 -0
  142. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/errors.py +0 -0
  143. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/exceptions.py +0 -0
  144. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/interrupt_models.py +0 -0
  145. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/job.py +0 -0
  146. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/llm_gateway.py +0 -0
  147. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/processes.py +0 -0
  148. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/models/queues.py +0 -0
  149. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/py.typed +0 -0
  150. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/telemetry/__init__.py +0 -0
  151. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/telemetry/_constants.py +0 -0
  152. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/telemetry/_track.py +0 -0
  153. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/tracing/__init__.py +0 -0
  154. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/tracing/_otel_exporters.py +0 -0
  155. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/tracing/_traced.py +0 -0
  156. {uipath-2.0.69 → uipath-2.0.70}/src/uipath/tracing/_utils.py +0 -0
  157. {uipath-2.0.69 → uipath-2.0.70}/tests/__init__.py +0 -0
  158. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/conftest.py +0 -0
  159. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/mocks/bindings_script.py +0 -0
  160. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/mocks/pyproject.toml +0 -0
  161. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/mocks/simple_script.py +0 -0
  162. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/mocks/uipath-mock.json +0 -0
  163. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  164. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_hitl.py +0 -0
  165. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_init.py +0 -0
  166. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_invoke.py +0 -0
  167. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_new.py +0 -0
  168. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_pack.py +0 -0
  169. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_publish.py +0 -0
  170. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_run.py +0 -0
  171. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/test_utils.py +0 -0
  172. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/utils/project_details.py +0 -0
  173. {uipath-2.0.69 → uipath-2.0.70}/tests/cli/utils/uipath_json.py +0 -0
  174. {uipath-2.0.69 → uipath-2.0.70}/tests/conftest.py +0 -0
  175. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/conftest.py +0 -0
  176. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_actions_service.py +0 -0
  177. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_api_client.py +0 -0
  178. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_assets_service.py +0 -0
  179. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_attachments_service.py +0 -0
  180. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_base_service.py +0 -0
  181. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_connections_service.py +0 -0
  182. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_context_grounding_service.py +0 -0
  183. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_folder_service.py +0 -0
  184. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_jobs_service.py +0 -0
  185. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_llm_integration.py +0 -0
  186. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_llm_service.py +0 -0
  187. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_processes_service.py +0 -0
  188. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_queues_service.py +0 -0
  189. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  190. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/test_bindings_inference.py +0 -0
  191. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/test_config.py +0 -0
  192. {uipath-2.0.69 → uipath-2.0.70}/tests/sdk/test_overwrites.py +0 -0
  193. {uipath-2.0.69 → uipath-2.0.70}/tests/tracing/test_otel_exporters.py +0 -0
  194. {uipath-2.0.69 → uipath-2.0.70}/tests/tracing/test_span_utils.py +0 -0
  195. {uipath-2.0.69 → uipath-2.0.70}/tests/tracing/test_traced.py +0 -0
  196. {uipath-2.0.69 → uipath-2.0.70}/tests/tracing/test_tracing_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.0.69
3
+ Version: 2.0.70
4
4
  Summary: Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools.
5
5
  Project-URL: Homepage, https://uipath.com
6
6
  Project-URL: Repository, https://github.com/UiPath/uipath-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.0.69"
3
+ version = "2.0.70"
4
4
  description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
5
5
  readme = { file = "README.md", content-type = "text/markdown" }
6
6
  requires-python = ">=3.10"
@@ -223,7 +223,7 @@ def pack_fn(projectName, description, entryPoints, version, authors, directory):
223
223
  file_extensions_included = [".py", ".mermaid", ".json", ".yaml", ".yml"]
224
224
  files_included = []
225
225
  # Binary files that should be read in binary mode
226
- binary_extensions = [".exe", ""]
226
+ binary_extensions = [".exe", "", ".xlsx", ".xls"]
227
227
 
228
228
  with open(config_path, "r") as f:
229
229
  config_data = json.load(f)
@@ -1,3 +1,4 @@
1
+ import mimetypes
1
2
  from typing import Any, Dict, Optional, Union
2
3
 
3
4
  import httpx
@@ -154,7 +155,7 @@ class BucketsService(FolderContext, BaseService):
154
155
  key: Optional[str] = None,
155
156
  name: Optional[str] = None,
156
157
  blob_file_path: str,
157
- content_type: str,
158
+ content_type: Optional[str] = None,
158
159
  source_path: Optional[str] = None,
159
160
  content: Optional[Union[str, bytes]] = None,
160
161
  folder_key: Optional[str] = None,
@@ -166,7 +167,7 @@ class BucketsService(FolderContext, BaseService):
166
167
  key (Optional[str]): The key of the bucket.
167
168
  name (Optional[str]): The name of the bucket.
168
169
  blob_file_path (str): The path where the file will be stored in the bucket.
169
- content_type (str): The MIME type of the file.
170
+ content_type (Optional[str]): The MIME type of the file. For file inputs this is computed dynamically. Default is "application/octet-stream".
170
171
  source_path (Optional[str]): The local path of the file to upload.
171
172
  content (Optional[Union[str, bytes]]): The content to upload (string or bytes).
172
173
  folder_key (Optional[str]): The key of the folder where the bucket resides.
@@ -185,9 +186,17 @@ class BucketsService(FolderContext, BaseService):
185
186
  name=name, key=key, folder_key=folder_key, folder_path=folder_path
186
187
  )
187
188
 
189
+ # if source_path, dynamically detect the mime type
190
+ # default to application/octet-stream
191
+ if source_path:
192
+ _content_type, _ = mimetypes.guess_type(source_path)
193
+ else:
194
+ _content_type = content_type
195
+ _content_type = _content_type or "application/octet-stream"
196
+
188
197
  spec = self._retrieve_writeri_spec(
189
198
  bucket.id,
190
- content_type,
199
+ _content_type,
191
200
  blob_file_path,
192
201
  folder_key=folder_key,
193
202
  folder_path=folder_path,
@@ -209,6 +218,8 @@ class BucketsService(FolderContext, BaseService):
209
218
  )
210
219
  }
211
220
 
221
+ headers["Content-Type"] = _content_type
222
+
212
223
  if content is not None:
213
224
  if isinstance(content, str):
214
225
  content = content.encode("utf-8")
@@ -220,13 +231,14 @@ class BucketsService(FolderContext, BaseService):
220
231
 
221
232
  if source_path is not None:
222
233
  with open(source_path, "rb") as file:
234
+ file_content = file.read()
223
235
  if result["RequiresAuth"]:
224
236
  self.request(
225
- "PUT", write_uri, headers=headers, files={"file": file}
237
+ "PUT", write_uri, headers=headers, content=file_content
226
238
  )
227
239
  else:
228
240
  self.custom_client.put(
229
- write_uri, headers=headers, files={"file": file}
241
+ write_uri, headers=headers, content=file_content
230
242
  )
231
243
 
232
244
  @traced(name="buckets_upload", run_type="uipath")
@@ -237,7 +249,7 @@ class BucketsService(FolderContext, BaseService):
237
249
  key: Optional[str] = None,
238
250
  name: Optional[str] = None,
239
251
  blob_file_path: str,
240
- content_type: str,
252
+ content_type: Optional[str] = None,
241
253
  source_path: Optional[str] = None,
242
254
  content: Optional[Union[str, bytes]] = None,
243
255
  folder_key: Optional[str] = None,
@@ -249,8 +261,9 @@ class BucketsService(FolderContext, BaseService):
249
261
  key (Optional[str]): The key of the bucket.
250
262
  name (Optional[str]): The name of the bucket.
251
263
  blob_file_path (str): The path where the file will be stored in the bucket.
252
- content_type (str): The MIME type of the file.
264
+ content_type (Optional[str]): The MIME type of the file. For file inputs this is computed dynamically. Default is "application/octet-stream".
253
265
  source_path (str): The local path of the file to upload.
266
+ content (Optional[Union[str, bytes]]): The content to upload (string or bytes).
254
267
  folder_key (Optional[str]): The key of the folder where the bucket resides.
255
268
  folder_path (Optional[str]): The path of the folder where the bucket resides.
256
269
 
@@ -267,9 +280,17 @@ class BucketsService(FolderContext, BaseService):
267
280
  name=name, key=key, folder_key=folder_key, folder_path=folder_path
268
281
  )
269
282
 
283
+ # if source_path, dynamically detect the mime type
284
+ # default to application/octet-stream
285
+ if source_path:
286
+ _content_type, _ = mimetypes.guess_type(source_path)
287
+ else:
288
+ _content_type = content_type
289
+ _content_type = _content_type or "application/octet-stream"
290
+
270
291
  spec = self._retrieve_writeri_spec(
271
292
  bucket.id,
272
- content_type,
293
+ _content_type,
273
294
  blob_file_path,
274
295
  folder_key=folder_key,
275
296
  folder_path=folder_path,
@@ -293,6 +314,8 @@ class BucketsService(FolderContext, BaseService):
293
314
  )
294
315
  }
295
316
 
317
+ headers["Content-Type"] = _content_type
318
+
296
319
  if content is not None:
297
320
  if isinstance(content, str):
298
321
  content = content.encode("utf-8")
@@ -308,13 +331,14 @@ class BucketsService(FolderContext, BaseService):
308
331
 
309
332
  if source_path is not None:
310
333
  with open(source_path, "rb") as file:
334
+ file_content = file.read()
311
335
  if result["RequiresAuth"]:
312
336
  await self.request_async(
313
- "PUT", write_uri, headers=headers, files={"file": file}
337
+ "PUT", write_uri, headers=headers, content=file_content
314
338
  )
315
339
  else:
316
340
  await self.custom_client_async.put(
317
- write_uri, headers=headers, files={"file": file}
341
+ write_uri, headers=headers, content=file_content
318
342
  )
319
343
 
320
344
  @traced(name="buckets_retrieve", run_type="uipath")
@@ -50,8 +50,8 @@ class ContextGroundingService(FolderContext, BaseService):
50
50
  def add_to_index(
51
51
  self,
52
52
  name: str,
53
- content_type: str,
54
53
  blob_file_path: str,
54
+ content_type: Optional[str] = None,
55
55
  content: Optional[Union[str, bytes]] = None,
56
56
  source_path: Optional[str] = None,
57
57
  folder_key: Optional[str] = None,
@@ -62,7 +62,7 @@ class ContextGroundingService(FolderContext, BaseService):
62
62
 
63
63
  Args:
64
64
  name (str): The name of the index to add content to.
65
- content_type (str): The type of content being added.
65
+ content_type (Optional[str]): The MIME type of the file. For file inputs this is computed dynamically. Default is "application/octet-stream".
66
66
  blob_file_path (str): The path where the blob will be stored in the storage bucket.
67
67
  content (Optional[Union[str, bytes]]): The content to be added, either as a string or bytes.
68
68
  source_path (Optional[str]): The source path of the content if it is being uploaded from a file.
@@ -105,8 +105,8 @@ class ContextGroundingService(FolderContext, BaseService):
105
105
  async def add_to_index_async(
106
106
  self,
107
107
  name: str,
108
- content_type: str,
109
108
  blob_file_path: str,
109
+ content_type: Optional[str] = None,
110
110
  content: Optional[Union[str, bytes]] = None,
111
111
  source_path: Optional[str] = None,
112
112
  folder_key: Optional[str] = None,
@@ -117,7 +117,7 @@ class ContextGroundingService(FolderContext, BaseService):
117
117
 
118
118
  Args:
119
119
  name (str): The name of the index to add content to.
120
- content_type (str): The type of content being added.
120
+ content_type (Optional[str]): The MIME type of the file. For file inputs this is computed dynamically. Default is "application/octet-stream".
121
121
  blob_file_path (str): The path where the blob will be stored in the storage bucket.
122
122
  content (Optional[Union[str, bytes]]): The content to be added, either as a string or bytes.
123
123
  source_path (Optional[str]): The source path of the content if it is being uploaded from a file.
@@ -224,7 +224,6 @@ class TestBucketsService:
224
224
  assert sent_requests[2].url == "https://test-storage.com/test-file.txt"
225
225
 
226
226
  assert b"test content" in sent_requests[2].content
227
- assert b"Content-Disposition: form-data;" in sent_requests[2].content
228
227
 
229
228
  def test_upload_from_memory(
230
229
  self,