uipath 2.1.107__tar.gz → 2.1.108__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 (384) hide show
  1. {uipath-2.1.107 → uipath-2.1.108}/PKG-INFO +1 -1
  2. {uipath-2.1.107 → uipath-2.1.108}/pyproject.toml +1 -1
  3. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_runtime/_contracts.py +25 -5
  4. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_resources/SDK_REFERENCE.md +0 -97
  5. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_uipath.py +10 -37
  6. uipath-2.1.108/tests/sdk/test_uipath_caching.py +326 -0
  7. {uipath-2.1.107 → uipath-2.1.108}/uv.lock +1 -1
  8. {uipath-2.1.107 → uipath-2.1.108}/.claude/agents/command-tester.md +0 -0
  9. {uipath-2.1.107 → uipath-2.1.108}/.claude/commands/prepare-pr.md +0 -0
  10. {uipath-2.1.107 → uipath-2.1.108}/.cursorrules +0 -0
  11. {uipath-2.1.107 → uipath-2.1.108}/.editorconfig +0 -0
  12. {uipath-2.1.107 → uipath-2.1.108}/.gitattributes +0 -0
  13. {uipath-2.1.107 → uipath-2.1.108}/.github/labeler.yml +0 -0
  14. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/auto-label.yml +0 -0
  15. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/cd.yml +0 -0
  16. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/ci.yml +0 -0
  17. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/commitlint.yml +0 -0
  18. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/integration_tests.yml +0 -0
  19. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/lint.yml +0 -0
  20. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/publish-dev.yml +0 -0
  21. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/publish-docs.yml +0 -0
  22. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/slack.yml +0 -0
  23. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/test-uipath-langchain.yml +0 -0
  24. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/test-uipath-llamaindex.yml +0 -0
  25. {uipath-2.1.107 → uipath-2.1.108}/.github/workflows/test.yml +0 -0
  26. {uipath-2.1.107 → uipath-2.1.108}/.gitignore +0 -0
  27. {uipath-2.1.107 → uipath-2.1.108}/.pre-commit-config.yaml +0 -0
  28. {uipath-2.1.107 → uipath-2.1.108}/.python-version +0 -0
  29. {uipath-2.1.107 → uipath-2.1.108}/.vscode/extensions.json +0 -0
  30. {uipath-2.1.107 → uipath-2.1.108}/.vscode/launch.json +0 -0
  31. {uipath-2.1.107 → uipath-2.1.108}/.vscode/settings.json +0 -0
  32. {uipath-2.1.107 → uipath-2.1.108}/CONTRIBUTING.md +0 -0
  33. {uipath-2.1.107 → uipath-2.1.108}/LICENSE +0 -0
  34. {uipath-2.1.107 → uipath-2.1.108}/README.md +0 -0
  35. {uipath-2.1.107 → uipath-2.1.108}/docs/AutomationSuite.md +0 -0
  36. {uipath-2.1.107 → uipath-2.1.108}/docs/CONTRIBUTING.md +0 -0
  37. {uipath-2.1.107 → uipath-2.1.108}/docs/FAQ.md +0 -0
  38. {uipath-2.1.107 → uipath-2.1.108}/docs/assets/env-preparation-failed-dark.png +0 -0
  39. {uipath-2.1.107 → uipath-2.1.108}/docs/assets/env-preparation-failed-light.png +0 -0
  40. {uipath-2.1.107 → uipath-2.1.108}/docs/assets/favicon.png +0 -0
  41. {uipath-2.1.107 → uipath-2.1.108}/docs/assets/llms.txt +0 -0
  42. {uipath-2.1.107 → uipath-2.1.108}/docs/assets/logo-dark.svg +0 -0
  43. {uipath-2.1.107 → uipath-2.1.108}/docs/assets/logo-light.svg +0 -0
  44. {uipath-2.1.107 → uipath-2.1.108}/docs/cli/index.md +0 -0
  45. {uipath-2.1.107 → uipath-2.1.108}/docs/core/actions.md +0 -0
  46. {uipath-2.1.107 → uipath-2.1.108}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  47. {uipath-2.1.107 → uipath-2.1.108}/docs/core/assets/cloud_env_var_light.gif +0 -0
  48. {uipath-2.1.107 → uipath-2.1.108}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  49. {uipath-2.1.107 → uipath-2.1.108}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  50. {uipath-2.1.107 → uipath-2.1.108}/docs/core/assets/copy_path_dark.png +0 -0
  51. {uipath-2.1.107 → uipath-2.1.108}/docs/core/assets/copy_path_light.png +0 -0
  52. {uipath-2.1.107 → uipath-2.1.108}/docs/core/assets.md +0 -0
  53. {uipath-2.1.107 → uipath-2.1.108}/docs/core/attachments.md +0 -0
  54. {uipath-2.1.107 → uipath-2.1.108}/docs/core/buckets.md +0 -0
  55. {uipath-2.1.107 → uipath-2.1.108}/docs/core/connections.md +0 -0
  56. {uipath-2.1.107 → uipath-2.1.108}/docs/core/context_grounding.md +0 -0
  57. {uipath-2.1.107 → uipath-2.1.108}/docs/core/documents.md +0 -0
  58. {uipath-2.1.107 → uipath-2.1.108}/docs/core/documents_models.md +0 -0
  59. {uipath-2.1.107 → uipath-2.1.108}/docs/core/environment_variables.md +0 -0
  60. {uipath-2.1.107 → uipath-2.1.108}/docs/core/getting_started.md +0 -0
  61. {uipath-2.1.107 → uipath-2.1.108}/docs/core/jobs.md +0 -0
  62. {uipath-2.1.107 → uipath-2.1.108}/docs/core/llm_gateway.md +0 -0
  63. {uipath-2.1.107 → uipath-2.1.108}/docs/core/processes.md +0 -0
  64. {uipath-2.1.107 → uipath-2.1.108}/docs/core/queues.md +0 -0
  65. {uipath-2.1.107 → uipath-2.1.108}/docs/core/traced.md +0 -0
  66. {uipath-2.1.107 → uipath-2.1.108}/docs/hooks.py +0 -0
  67. {uipath-2.1.107 → uipath-2.1.108}/docs/index.md +0 -0
  68. {uipath-2.1.107 → uipath-2.1.108}/docs/javascripts/extra.js +0 -0
  69. {uipath-2.1.107 → uipath-2.1.108}/docs/overrides/main.html +0 -0
  70. {uipath-2.1.107 → uipath-2.1.108}/docs/overrides/partials/actions.html +0 -0
  71. {uipath-2.1.107 → uipath-2.1.108}/docs/overrides/partials/logo.html +0 -0
  72. {uipath-2.1.107 → uipath-2.1.108}/docs/release_policy.md +0 -0
  73. {uipath-2.1.107 → uipath-2.1.108}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  74. {uipath-2.1.107 → uipath-2.1.108}/docs/stylesheets/extra.css +0 -0
  75. {uipath-2.1.107 → uipath-2.1.108}/justfile +0 -0
  76. {uipath-2.1.107 → uipath-2.1.108}/mkdocs.yml +0 -0
  77. {uipath-2.1.107 → uipath-2.1.108}/py.typed +0 -0
  78. {uipath-2.1.107 → uipath-2.1.108}/samples/asset-modifier-agent/.env.example +0 -0
  79. {uipath-2.1.107 → uipath-2.1.108}/samples/asset-modifier-agent/README.md +0 -0
  80. {uipath-2.1.107 → uipath-2.1.108}/samples/asset-modifier-agent/input.json +0 -0
  81. {uipath-2.1.107 → uipath-2.1.108}/samples/asset-modifier-agent/main.py +0 -0
  82. {uipath-2.1.107 → uipath-2.1.108}/samples/asset-modifier-agent/pyproject.toml +0 -0
  83. {uipath-2.1.107 → uipath-2.1.108}/samples/asset-modifier-agent/uv.lock +0 -0
  84. {uipath-2.1.107 → uipath-2.1.108}/samples/calculator/README.md +0 -0
  85. {uipath-2.1.107 → uipath-2.1.108}/samples/calculator/evals/eval-sets/default.json +0 -0
  86. {uipath-2.1.107 → uipath-2.1.108}/samples/calculator/evals/evaluators/equality.json +0 -0
  87. {uipath-2.1.107 → uipath-2.1.108}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
  88. {uipath-2.1.107 → uipath-2.1.108}/samples/calculator/main.py +0 -0
  89. {uipath-2.1.107 → uipath-2.1.108}/samples/calculator/pyproject.toml +0 -0
  90. {uipath-2.1.107 → uipath-2.1.108}/samples/calculator/uipath.json +0 -0
  91. {uipath-2.1.107 → uipath-2.1.108}/samples/event-trigger/.python-version +0 -0
  92. {uipath-2.1.107 → uipath-2.1.108}/samples/event-trigger/README.md +0 -0
  93. {uipath-2.1.107 → uipath-2.1.108}/samples/event-trigger/main.py +0 -0
  94. {uipath-2.1.107 → uipath-2.1.108}/samples/event-trigger/pyproject.toml +0 -0
  95. {uipath-2.1.107 → uipath-2.1.108}/samples/google-ADK-agent/.env.example +0 -0
  96. {uipath-2.1.107 → uipath-2.1.108}/samples/google-ADK-agent/README.md +0 -0
  97. {uipath-2.1.107 → uipath-2.1.108}/samples/google-ADK-agent/input.json +0 -0
  98. {uipath-2.1.107 → uipath-2.1.108}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  99. {uipath-2.1.107 → uipath-2.1.108}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  100. {uipath-2.1.107 → uipath-2.1.108}/samples/google-ADK-agent/pyproject.toml +0 -0
  101. {uipath-2.1.107 → uipath-2.1.108}/samples/google-ADK-agent/uv.lock +0 -0
  102. {uipath-2.1.107 → uipath-2.1.108}/scripts/debug_test.py +0 -0
  103. {uipath-2.1.107 → uipath-2.1.108}/scripts/lint_httpx_client.py +0 -0
  104. {uipath-2.1.107 → uipath-2.1.108}/scripts/update_agents_md.py +0 -0
  105. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/__init__.py +0 -0
  106. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/README.md +0 -0
  107. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/__init__.py +0 -0
  108. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  109. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  110. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/_models.py +0 -0
  111. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  112. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  113. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  114. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/_utils.py +0 -0
  115. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/auth_config.json +0 -0
  116. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/index.html +0 -0
  117. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/localhost.crt +0 -0
  118. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_auth/localhost.key +0 -0
  119. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_debug/_bridge.py +0 -0
  120. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_debug/_runtime.py +0 -0
  121. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  122. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  123. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  124. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
  125. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  126. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  127. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  128. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  129. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  130. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  131. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  132. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  133. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/__init__.py +0 -0
  134. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
  135. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_evaluate.py +0 -0
  136. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
  137. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
  138. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
  139. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  140. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
  141. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
  142. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  143. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  144. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  145. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_runtime.py +0 -0
  146. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/_span_collection.py +0 -0
  147. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
  148. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/mocks/input_mocker.py +0 -0
  149. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/mocks/llm_mocker.py +0 -0
  150. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/mocks/mocker.py +0 -0
  151. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
  152. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
  153. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_evals/mocks/mocks.py +0 -0
  154. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  155. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  156. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  157. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_runtime/_logging.py +0 -0
  158. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  159. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_runtime/_runtime_factory.py +0 -0
  160. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  161. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  162. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_templates/.rels.template +0 -0
  163. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  164. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_templates/main.py.template +0 -0
  165. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  166. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_common.py +0 -0
  167. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_console.py +0 -0
  168. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_constants.py +0 -0
  169. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_debug.py +0 -0
  170. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  171. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_folders.py +0 -0
  172. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_input_args.py +0 -0
  173. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  174. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_processes.py +0 -0
  175. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_project_files.py +0 -0
  176. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  177. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_tracing.py +0 -0
  178. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  179. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_auth.py +0 -0
  180. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_debug.py +0 -0
  181. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_deploy.py +0 -0
  182. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_dev.py +0 -0
  183. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_eval.py +0 -0
  184. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_init.py +0 -0
  185. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_invoke.py +0 -0
  186. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_new.py +0 -0
  187. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_pack.py +0 -0
  188. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_publish.py +0 -0
  189. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_pull.py +0 -0
  190. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_push.py +0 -0
  191. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/cli_run.py +0 -0
  192. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/middlewares.py +0 -0
  193. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/models/__init__.py +0 -0
  194. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/models/runtime_schema.py +0 -0
  195. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_cli/spinner.py +0 -0
  196. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_config.py +0 -0
  197. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_events/__init__.py +0 -0
  198. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_events/_event_bus.py +0 -0
  199. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_events/_events.py +0 -0
  200. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_execution_context.py +0 -0
  201. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_folder_context.py +0 -0
  202. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_resources/AGENTS.md +0 -0
  203. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_resources/CLAUDE.md +0 -0
  204. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_resources/CLI_REFERENCE.md +0 -0
  205. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_resources/REQUIRED_STRUCTURE.md +0 -0
  206. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/__init__.py +0 -0
  207. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/_base_service.py +0 -0
  208. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/actions_service.py +0 -0
  209. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/api_client.py +0 -0
  210. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/assets_service.py +0 -0
  211. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/attachments_service.py +0 -0
  212. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/buckets_service.py +0 -0
  213. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/connections_service.py +0 -0
  214. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/context_grounding_service.py +0 -0
  215. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/documents_service.py +0 -0
  216. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/entities_service.py +0 -0
  217. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/external_application_service.py +0 -0
  218. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/folder_service.py +0 -0
  219. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/guardrails_service.py +0 -0
  220. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/jobs_service.py +0 -0
  221. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/llm_gateway_service.py +0 -0
  222. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/processes_service.py +0 -0
  223. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_services/queues_service.py +0 -0
  224. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/__init__.py +0 -0
  225. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_auth.py +0 -0
  226. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_endpoint.py +0 -0
  227. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_infer_bindings.py +0 -0
  228. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_logs.py +0 -0
  229. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_read_overwrites.py +0 -0
  230. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_request_override.py +0 -0
  231. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_request_spec.py +0 -0
  232. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_ssl_context.py +0 -0
  233. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_url.py +0 -0
  234. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/_user_agent.py +0 -0
  235. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/_utils/constants.py +0 -0
  236. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/_utils.py +0 -0
  237. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/__init__.py +0 -0
  238. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/async_stream.py +0 -0
  239. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/citation.py +0 -0
  240. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/content.py +0 -0
  241. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/conversation.py +0 -0
  242. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/event.py +0 -0
  243. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/exchange.py +0 -0
  244. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/message.py +0 -0
  245. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/meta.py +0 -0
  246. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/conversation/tool.py +0 -0
  247. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/models/agent.py +0 -0
  248. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/models/evals.py +0 -0
  249. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/react/__init__.py +0 -0
  250. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/react/prompts.py +0 -0
  251. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/agent/react/tools.py +0 -0
  252. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/_helpers/__init__.py +0 -0
  253. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/_helpers/helpers.py +0 -0
  254. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/evaluators/__init__.py +0 -0
  255. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  256. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  257. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  258. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  259. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  260. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  261. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/mocks/__init__.py +0 -0
  262. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/mocks/mockable.py +0 -0
  263. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/models/__init__.py +0 -0
  264. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/eval/models/models.py +0 -0
  265. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/__init__.py +0 -0
  266. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/action_schema.py +0 -0
  267. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/actions.py +0 -0
  268. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/assets.py +0 -0
  269. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/attachment.py +0 -0
  270. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/auth.py +0 -0
  271. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/buckets.py +0 -0
  272. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/connections.py +0 -0
  273. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/context_grounding.py +0 -0
  274. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/context_grounding_index.py +0 -0
  275. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/documents.py +0 -0
  276. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/entities.py +0 -0
  277. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/errors.py +0 -0
  278. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/exceptions.py +0 -0
  279. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/guardrails.py +0 -0
  280. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/interrupt_models.py +0 -0
  281. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/job.py +0 -0
  282. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/llm_gateway.py +0 -0
  283. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/processes.py +0 -0
  284. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/models/queues.py +0 -0
  285. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/py.typed +0 -0
  286. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/telemetry/__init__.py +0 -0
  287. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/telemetry/_constants.py +0 -0
  288. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/telemetry/_track.py +0 -0
  289. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/tracing/__init__.py +0 -0
  290. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/tracing/_otel_exporters.py +0 -0
  291. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/tracing/_traced.py +0 -0
  292. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/tracing/_utils.py +0 -0
  293. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/utils/__init__.py +0 -0
  294. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/utils/_endpoints_manager.py +0 -0
  295. {uipath-2.1.107 → uipath-2.1.108}/src/uipath/utils/dynamic_schema.py +0 -0
  296. {uipath-2.1.107 → uipath-2.1.108}/testcases/apicalls-testcase/main.py +0 -0
  297. {uipath-2.1.107 → uipath-2.1.108}/testcases/apicalls-testcase/pyproject.toml +0 -0
  298. {uipath-2.1.107 → uipath-2.1.108}/testcases/apicalls-testcase/run.sh +0 -0
  299. {uipath-2.1.107 → uipath-2.1.108}/testcases/apicalls-testcase/src/assert.py +0 -0
  300. {uipath-2.1.107 → uipath-2.1.108}/testcases/basic-testcase/main.py +0 -0
  301. {uipath-2.1.107 → uipath-2.1.108}/testcases/basic-testcase/pyproject.toml +0 -0
  302. {uipath-2.1.107 → uipath-2.1.108}/testcases/basic-testcase/run.sh +0 -0
  303. {uipath-2.1.107 → uipath-2.1.108}/testcases/basic-testcase/src/assert.py +0 -0
  304. {uipath-2.1.107 → uipath-2.1.108}/testcases/common/validate_output.sh +0 -0
  305. {uipath-2.1.107 → uipath-2.1.108}/testcases/langchain-cross/agent.mermaid +0 -0
  306. {uipath-2.1.107 → uipath-2.1.108}/testcases/langchain-cross/langgraph.json +0 -0
  307. {uipath-2.1.107 → uipath-2.1.108}/testcases/langchain-cross/pyproject.toml +0 -0
  308. {uipath-2.1.107 → uipath-2.1.108}/testcases/langchain-cross/run.sh +0 -0
  309. {uipath-2.1.107 → uipath-2.1.108}/testcases/langchain-cross/src/assert.py +0 -0
  310. {uipath-2.1.107 → uipath-2.1.108}/testcases/langchain-cross/src/main.py +0 -0
  311. {uipath-2.1.107 → uipath-2.1.108}/testcases/llamaindex-cross/agent.mermaid +0 -0
  312. {uipath-2.1.107 → uipath-2.1.108}/testcases/llamaindex-cross/llama_index.json +0 -0
  313. {uipath-2.1.107 → uipath-2.1.108}/testcases/llamaindex-cross/pyproject.toml +0 -0
  314. {uipath-2.1.107 → uipath-2.1.108}/testcases/llamaindex-cross/run.sh +0 -0
  315. {uipath-2.1.107 → uipath-2.1.108}/testcases/llamaindex-cross/src/assert.py +0 -0
  316. {uipath-2.1.107 → uipath-2.1.108}/testcases/llamaindex-cross/src/main.py +0 -0
  317. {uipath-2.1.107 → uipath-2.1.108}/tests/__init__.py +0 -0
  318. {uipath-2.1.107 → uipath-2.1.108}/tests/agent/models/test_agent.py +0 -0
  319. {uipath-2.1.107 → uipath-2.1.108}/tests/agent/models/test_evals.py +0 -0
  320. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/conftest.py +0 -0
  321. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/eval/evals/eval-sets/default.json +0 -0
  322. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/eval/evals/evaluators/equality.json +0 -0
  323. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/eval/mocks/test_input_mocker.py +0 -0
  324. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/eval/mocks/test_mocks.py +0 -0
  325. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/eval/test_evaluate.py +0 -0
  326. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  327. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/mocks/bindings_script.py +0 -0
  328. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/mocks/pyproject.toml +0 -0
  329. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/mocks/simple_script.py +0 -0
  330. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/mocks/uipath-mock.json +0 -0
  331. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  332. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/models/test_runtime_schema.py +0 -0
  333. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_auth.py +0 -0
  334. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_hitl.py +0 -0
  335. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_init.py +0 -0
  336. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_init_agents_md.py +0 -0
  337. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_input_args.py +0 -0
  338. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_invoke.py +0 -0
  339. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_new.py +0 -0
  340. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_oidc_utils.py +0 -0
  341. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_pack.py +0 -0
  342. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  343. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_portal_service_refresh_token.py +0 -0
  344. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_publish.py +0 -0
  345. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_pull.py +0 -0
  346. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_push.py +0 -0
  347. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_run.py +0 -0
  348. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/test_utils.py +0 -0
  349. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/utils/common.py +0 -0
  350. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/utils/project_details.py +0 -0
  351. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/utils/test_dynamic_schema.py +0 -0
  352. {uipath-2.1.107 → uipath-2.1.108}/tests/cli/utils/uipath_json.py +0 -0
  353. {uipath-2.1.107 → uipath-2.1.108}/tests/conftest.py +0 -0
  354. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/conftest.py +0 -0
  355. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_actions_service.py +0 -0
  356. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_api_client.py +0 -0
  357. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_assets_service.py +0 -0
  358. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_attachments_service.py +0 -0
  359. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_base_service.py +0 -0
  360. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_buckets_service.py +0 -0
  361. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_connections_service.py +0 -0
  362. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_context_grounding_service.py +0 -0
  363. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_documents_service.py +0 -0
  364. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_entities_service.py +0 -0
  365. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_external_application_service.py +0 -0
  366. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_folder_service.py +0 -0
  367. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_guardrails_service.py +0 -0
  368. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_jobs_service.py +0 -0
  369. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_llm_integration.py +0 -0
  370. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  371. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_llm_service.py +0 -0
  372. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_processes_service.py +0 -0
  373. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_queues_service.py +0 -0
  374. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  375. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  376. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  377. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  378. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/test_bindings_inference.py +0 -0
  379. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/test_config.py +0 -0
  380. {uipath-2.1.107 → uipath-2.1.108}/tests/sdk/test_overwrites.py +0 -0
  381. {uipath-2.1.107 → uipath-2.1.108}/tests/tracing/test_otel_exporters.py +0 -0
  382. {uipath-2.1.107 → uipath-2.1.108}/tests/tracing/test_span_utils.py +0 -0
  383. {uipath-2.1.107 → uipath-2.1.108}/tests/tracing/test_traced.py +0 -0
  384. {uipath-2.1.107 → uipath-2.1.108}/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.1.107
3
+ Version: 2.1.108
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.1.107"
3
+ version = "2.1.108"
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"
@@ -460,12 +460,12 @@ class UiPathRuntimeContext(BaseModel):
460
460
  return instance
461
461
 
462
462
 
463
- class UiPathRuntimeError(Exception):
463
+ class UiPathBaseRuntimeError(Exception):
464
464
  """Base exception class for UiPath runtime errors with structured error information."""
465
465
 
466
466
  def __init__(
467
467
  self,
468
- code: UiPathErrorCode,
468
+ code: str,
469
469
  title: str,
470
470
  detail: str,
471
471
  category: UiPathErrorCategory = UiPathErrorCategory.UNKNOWN,
@@ -484,10 +484,8 @@ class UiPathRuntimeError(Exception):
484
484
  if status is None:
485
485
  status = self._extract_http_status()
486
486
 
487
- code_value = code.value
488
-
489
487
  self.error_info = UiPathErrorContract(
490
- code=f"{prefix}.{code_value}",
488
+ code=f"{prefix}.{code}",
491
489
  title=title,
492
490
  detail=detail,
493
491
  category=category,
@@ -529,6 +527,28 @@ class UiPathRuntimeError(Exception):
529
527
  return self.error_info.model_dump()
530
528
 
531
529
 
530
+ class UiPathRuntimeError(UiPathBaseRuntimeError):
531
+ """Exception class for UiPath runtime errors."""
532
+
533
+ def __init__(
534
+ self,
535
+ code: UiPathErrorCode,
536
+ title: str,
537
+ detail: str,
538
+ category: UiPathErrorCategory = UiPathErrorCategory.UNKNOWN,
539
+ prefix: str = "Python",
540
+ include_traceback: bool = True,
541
+ ):
542
+ super().__init__(
543
+ code=code.value,
544
+ title=title,
545
+ detail=detail,
546
+ category=category,
547
+ prefix=prefix,
548
+ include_traceback=include_traceback,
549
+ )
550
+
551
+
532
552
  class UiPathRuntimeStreamNotSupportedError(NotImplementedError):
533
553
  """Raised when a runtime does not support streaming."""
534
554
 
@@ -70,93 +70,6 @@ sdk.assets.update_async(robot_asset: uipath.models.assets.UserAsset, folder_key:
70
70
 
71
71
  ```
72
72
 
73
- ### Attachments
74
-
75
- Attachments service
76
-
77
- ```python
78
- # Delete an attachment.
79
- sdk.attachments.delete(key: uuid.UUID, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> None
80
-
81
- # Delete an attachment asynchronously.
82
- sdk.attachments.delete_async(key: uuid.UUID, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> None
83
-
84
- # Download an attachment.
85
- sdk.attachments.download(key: uuid.UUID, destination_path: str, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> str
86
-
87
- # Download an attachment asynchronously.
88
- sdk.attachments.download_async(key: uuid.UUID, destination_path: str, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> str
89
-
90
- # Upload a file or content to UiPath as an attachment.
91
- sdk.attachments.upload(name: str, content: Union[str, bytes, NoneType]=None, source_path: Optional[str]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uuid.UUID
92
-
93
- # Upload a file or content to UiPath as an attachment asynchronously.
94
- sdk.attachments.upload_async(name: str, content: Union[str, bytes, NoneType]=None, source_path: Optional[str]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uuid.UUID
95
-
96
- ```
97
-
98
- ### Buckets
99
-
100
- Buckets service
101
-
102
- ```python
103
- # Download a file from a bucket.
104
- sdk.buckets.download(name: Optional[str]=None, key: Optional[str]=None, blob_file_path: str, destination_path: str, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> None
105
-
106
- # Download a file from a bucket asynchronously.
107
- sdk.buckets.download_async(name: Optional[str]=None, key: Optional[str]=None, blob_file_path: str, destination_path: str, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> None
108
-
109
- # Retrieve bucket information by its name.
110
- sdk.buckets.retrieve(name: Optional[str]=None, key: Optional[str]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uipath.models.buckets.Bucket
111
-
112
- # Asynchronously retrieve bucket information by its name.
113
- sdk.buckets.retrieve_async(name: Optional[str]=None, key: Optional[str]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uipath.models.buckets.Bucket
114
-
115
- # Upload a file to a bucket.
116
- sdk.buckets.upload(key: Optional[str]=None, name: Optional[str]=None, blob_file_path: str, content_type: Optional[str]=None, source_path: Optional[str]=None, content: Union[str, bytes, NoneType]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> None
117
-
118
- # Upload a file to a bucket asynchronously.
119
- sdk.buckets.upload_async(key: Optional[str]=None, name: Optional[str]=None, blob_file_path: str, content_type: Optional[str]=None, source_path: Optional[str]=None, content: Union[str, bytes, NoneType]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> None
120
-
121
- ```
122
-
123
- ### Connections
124
-
125
- Connections service
126
-
127
- ```python
128
- # Lists all connections with optional filtering.
129
- sdk.connections.list(name: Optional[str]=None, folder_path: Optional[str]=None, folder_key: Optional[str]=None, connector_key: Optional[str]=None, skip: Optional[int]=None, top: Optional[int]=None) -> typing.List[uipath.models.connections.Connection]
130
-
131
- # Asynchronously lists all connections with optional filtering.
132
- sdk.connections.list_async(name: Optional[str]=None, folder_path: Optional[str]=None, folder_key: Optional[str]=None, connector_key: Optional[str]=None, skip: Optional[int]=None, top: Optional[int]=None) -> typing.List[uipath.models.connections.Connection]
133
-
134
- # Synchronously retrieve connection API metadata.
135
- sdk.connections.metadata(element_instance_id: int, tool_path: str, schema_mode: bool=True) -> uipath.models.connections.ConnectionMetadata
136
-
137
- # Asynchronously retrieve connection API metadata.
138
- sdk.connections.metadata_async(element_instance_id: int, tool_path: str, schema_mode: bool=True) -> uipath.models.connections.ConnectionMetadata
139
-
140
- # Retrieve connection details by its key.
141
- sdk.connections.retrieve(key: str) -> uipath.models.connections.Connection
142
-
143
- # Asynchronously retrieve connection details by its key.
144
- sdk.connections.retrieve_async(key: str) -> uipath.models.connections.Connection
145
-
146
- # Retrieve event payload from UiPath Integration Service.
147
- sdk.connections.retrieve_event_payload(event_args: uipath.models.connections.EventArguments) -> typing.Dict[str, typing.Any]
148
-
149
- # Retrieve event payload from UiPath Integration Service.
150
- sdk.connections.retrieve_event_payload_async(event_args: uipath.models.connections.EventArguments) -> typing.Dict[str, typing.Any]
151
-
152
- # Retrieve an authentication token for a connection.
153
- sdk.connections.retrieve_token(key: str, token_type: <enum 'ConnectionTokenType="direct") -> uipath.models.connections.ConnectionToken
154
-
155
- # Asynchronously retrieve an authentication token for a connection.
156
- sdk.connections.retrieve_token_async(key: str, token_type: <enum 'ConnectionTokenType="direct") -> uipath.models.connections.ConnectionToken
157
-
158
- ```
159
-
160
73
  ### Context Grounding
161
74
 
162
75
  Context Grounding service
@@ -274,16 +187,6 @@ sdk.entities.update_records_async(entity_key: str, records: List[Any], schema: O
274
187
 
275
188
  ```
276
189
 
277
- ### Folders
278
-
279
- Folders service
280
-
281
- ```python
282
- # Retrieve the folder key by folder path with pagination support.
283
- sdk.folders.retrieve_key(folder_path: str) -> typing.Optional[str]
284
-
285
- ```
286
-
287
190
  ### Jobs
288
191
 
289
192
  Jobs service
@@ -1,3 +1,4 @@
1
+ from functools import cached_property
1
2
  from typing import Optional
2
3
 
3
4
  from pydantic import ValidationError
@@ -51,10 +52,6 @@ class UiPath:
51
52
  raise BaseUrlMissingError() from e
52
53
  elif error["loc"][0] == "secret":
53
54
  raise SecretMissingError() from e
54
- self._folders_service: Optional[FolderService] = None
55
- self._buckets_service: Optional[BucketsService] = None
56
- self._attachments_service: Optional[AttachmentsService] = None
57
- self._connections_service: Optional[ConnectionsService] = None
58
55
  setup_logging(should_debug=debug)
59
56
  self._execution_context = ExecutionContext()
60
57
 
@@ -66,13 +63,9 @@ class UiPath:
66
63
  def assets(self) -> AssetsService:
67
64
  return AssetsService(self._config, self._execution_context)
68
65
 
69
- @property
66
+ @cached_property
70
67
  def attachments(self) -> AttachmentsService:
71
- if not self._attachments_service:
72
- self._attachments_service = AttachmentsService(
73
- self._config, self._execution_context
74
- )
75
- return self._attachments_service
68
+ return AttachmentsService(self._config, self._execution_context)
76
69
 
77
70
  @property
78
71
  def processes(self) -> ProcessesService:
@@ -82,39 +75,21 @@ class UiPath:
82
75
  def actions(self) -> ActionsService:
83
76
  return ActionsService(self._config, self._execution_context)
84
77
 
85
- @property
78
+ @cached_property
86
79
  def buckets(self) -> BucketsService:
87
- if not self._buckets_service:
88
- self._buckets_service = BucketsService(
89
- self._config, self._execution_context
90
- )
91
80
  return BucketsService(self._config, self._execution_context)
92
81
 
93
- @property
82
+ @cached_property
94
83
  def connections(self) -> ConnectionsService:
95
- if not self._connections_service:
96
- if not self._folders_service:
97
- self._folders_service = FolderService(
98
- self._config, self._execution_context
99
- )
100
- self._connections_service = ConnectionsService(
101
- self._config, self._execution_context, self._folders_service
102
- )
103
- return self._connections_service
84
+ return ConnectionsService(self._config, self._execution_context, self.folders)
104
85
 
105
86
  @property
106
87
  def context_grounding(self) -> ContextGroundingService:
107
- if not self._folders_service:
108
- self._folders_service = FolderService(self._config, self._execution_context)
109
- if not self._buckets_service:
110
- self._buckets_service = BucketsService(
111
- self._config, self._execution_context
112
- )
113
88
  return ContextGroundingService(
114
89
  self._config,
115
90
  self._execution_context,
116
- self._folders_service,
117
- self._buckets_service,
91
+ self.folders,
92
+ self.buckets,
118
93
  )
119
94
 
120
95
  @property
@@ -129,11 +104,9 @@ class UiPath:
129
104
  def jobs(self) -> JobsService:
130
105
  return JobsService(self._config, self._execution_context)
131
106
 
132
- @property
107
+ @cached_property
133
108
  def folders(self) -> FolderService:
134
- if not self._folders_service:
135
- self._folders_service = FolderService(self._config, self._execution_context)
136
- return self._folders_service
109
+ return FolderService(self._config, self._execution_context)
137
110
 
138
111
  @property
139
112
  def llm_openai(self) -> UiPathOpenAIService:
@@ -0,0 +1,326 @@
1
+ """Tests for service caching behavior in UiPath SDK.
2
+
3
+ This module tests that services using @cached_property are properly cached
4
+ and thread-safe, while stateless services create new instances as expected.
5
+ """
6
+
7
+ import threading
8
+ import time
9
+ from typing import Any
10
+
11
+ import pytest
12
+ from pytest import MonkeyPatch
13
+
14
+ from uipath import UiPath
15
+
16
+
17
+ @pytest.fixture
18
+ def sdk(monkeypatch: MonkeyPatch) -> UiPath:
19
+ """Create a UiPath SDK instance with mocked credentials."""
20
+ monkeypatch.setenv("UIPATH_URL", "https://test.example.com")
21
+ monkeypatch.setenv("UIPATH_ACCESS_TOKEN", "test_token_1234567890")
22
+ return UiPath()
23
+
24
+
25
+ class TestCachedServices:
26
+ """Test suite for services that should be cached."""
27
+
28
+ def test_buckets_service_returns_cached_instance(self, sdk: UiPath) -> None:
29
+ """Verify that buckets property returns the same instance on multiple accesses."""
30
+ buckets1 = sdk.buckets
31
+ buckets2 = sdk.buckets
32
+
33
+ assert buckets1 is buckets2, "BucketsService should return cached instance"
34
+ assert id(buckets1) == id(buckets2), "Instance IDs should match"
35
+
36
+ def test_attachments_service_returns_cached_instance(self, sdk: UiPath) -> None:
37
+ """Verify that attachments property returns the same instance."""
38
+ attachments1 = sdk.attachments
39
+ attachments2 = sdk.attachments
40
+
41
+ assert attachments1 is attachments2, (
42
+ "AttachmentsService should return cached instance"
43
+ )
44
+ assert id(attachments1) == id(attachments2), "Instance IDs should match"
45
+
46
+ def test_connections_service_returns_cached_instance(self, sdk: UiPath) -> None:
47
+ """Verify that connections property returns the same instance."""
48
+ connections1 = sdk.connections
49
+ connections2 = sdk.connections
50
+
51
+ assert connections1 is connections2, (
52
+ "ConnectionsService should return cached instance"
53
+ )
54
+ assert id(connections1) == id(connections2), "Instance IDs should match"
55
+
56
+ def test_folders_service_returns_cached_instance(self, sdk: UiPath) -> None:
57
+ """Verify that folders property returns the same instance."""
58
+ folders1 = sdk.folders
59
+ folders2 = sdk.folders
60
+
61
+ assert folders1 is folders2, "FolderService should return cached instance"
62
+ assert id(folders1) == id(folders2), "Instance IDs should match"
63
+
64
+ @pytest.mark.parametrize(
65
+ "service_property",
66
+ [
67
+ "attachments",
68
+ "buckets",
69
+ "connections",
70
+ "folders",
71
+ ],
72
+ )
73
+ def test_all_cached_services_return_same_instance(
74
+ self, sdk: UiPath, service_property: str
75
+ ) -> None:
76
+ """Verify that all cached services return the same instance."""
77
+ service1 = getattr(sdk, service_property)
78
+ service2 = getattr(sdk, service_property)
79
+
80
+ assert service1 is service2, f"{service_property} should return cached instance"
81
+
82
+ def test_cached_services_share_config(self, sdk: UiPath) -> None:
83
+ """Verify that cached instances share the same config object."""
84
+ buckets1 = sdk.buckets
85
+ buckets2 = sdk.buckets
86
+
87
+ assert buckets1._config is buckets2._config, "Config should be shared"
88
+ assert buckets1._execution_context is buckets2._execution_context, (
89
+ "Execution context should be shared"
90
+ )
91
+
92
+ def test_different_sdk_instances_have_different_services(
93
+ self, monkeypatch: MonkeyPatch
94
+ ) -> None:
95
+ """Verify that different SDK instances have different service instances."""
96
+ monkeypatch.setenv("UIPATH_URL", "https://test.example.com")
97
+ monkeypatch.setenv("UIPATH_ACCESS_TOKEN", "test_token_1234567890")
98
+ sdk1 = UiPath()
99
+ sdk2 = UiPath()
100
+
101
+ assert sdk1.buckets is not sdk2.buckets, (
102
+ "Different SDK instances should have different service instances"
103
+ )
104
+ assert sdk1.attachments is not sdk2.attachments, (
105
+ "Different SDK instances should have different service instances"
106
+ )
107
+ assert sdk1.connections is not sdk2.connections, (
108
+ "Different SDK instances should have different service instances"
109
+ )
110
+ assert sdk1.folders is not sdk2.folders, (
111
+ "Different SDK instances should have different service instances"
112
+ )
113
+
114
+
115
+ class TestThreadSafety:
116
+ """Test suite for thread safety of cached services."""
117
+
118
+ def test_buckets_service_thread_safe_initialization(self, sdk: UiPath) -> None:
119
+ """Verify that cached_property handles concurrent access safely."""
120
+ instances: list[Any] = []
121
+
122
+ def access_service() -> None:
123
+ # Small delay to increase chance of race condition
124
+ time.sleep(0.001)
125
+ instances.append(sdk.buckets)
126
+
127
+ # Create 10 threads accessing the service simultaneously
128
+ threads = [threading.Thread(target=access_service) for _ in range(10)]
129
+
130
+ for thread in threads:
131
+ thread.start()
132
+
133
+ for thread in threads:
134
+ thread.join()
135
+
136
+ # All threads should get the same instance
137
+ assert len(set(id(instance) for instance in instances)) == 1, (
138
+ "All threads should receive the same cached instance"
139
+ )
140
+
141
+ for instance in instances[1:]:
142
+ assert instances[0] is instance, "All instances should be identical"
143
+
144
+ def test_attachments_service_thread_safe_initialization(self, sdk: UiPath) -> None:
145
+ """Verify attachments service thread safety."""
146
+ instances: list[Any] = []
147
+
148
+ def access_service() -> None:
149
+ time.sleep(0.001)
150
+ instances.append(sdk.attachments)
151
+
152
+ threads = [threading.Thread(target=access_service) for _ in range(10)]
153
+
154
+ for thread in threads:
155
+ thread.start()
156
+ for thread in threads:
157
+ thread.join()
158
+
159
+ assert len(set(id(instance) for instance in instances)) == 1
160
+
161
+ def test_connections_service_thread_safe_initialization(self, sdk: UiPath) -> None:
162
+ """Verify connections service thread safety."""
163
+ instances: list[Any] = []
164
+
165
+ def access_service() -> None:
166
+ time.sleep(0.001)
167
+ instances.append(sdk.connections)
168
+
169
+ threads = [threading.Thread(target=access_service) for _ in range(10)]
170
+
171
+ for thread in threads:
172
+ thread.start()
173
+ for thread in threads:
174
+ thread.join()
175
+
176
+ assert len(set(id(instance) for instance in instances)) == 1
177
+
178
+ def test_folders_service_thread_safe_initialization(self, sdk: UiPath) -> None:
179
+ """Verify folders service thread safety."""
180
+ instances: list[Any] = []
181
+
182
+ def access_service() -> None:
183
+ time.sleep(0.001)
184
+ instances.append(sdk.folders)
185
+
186
+ threads = [threading.Thread(target=access_service) for _ in range(10)]
187
+
188
+ for thread in threads:
189
+ thread.start()
190
+ for thread in threads:
191
+ thread.join()
192
+
193
+ assert len(set(id(instance) for instance in instances)) == 1
194
+
195
+
196
+ class TestStatelessServices:
197
+ """Test suite for services that should NOT be cached."""
198
+
199
+ def test_assets_service_creates_new_instances(self, sdk: UiPath) -> None:
200
+ """Verify that assets service creates new instances (stateless)."""
201
+ assets1 = sdk.assets
202
+ assets2 = sdk.assets
203
+
204
+ # These should be different instances
205
+ assert assets1 is not assets2, "Assets service should create new instances"
206
+
207
+ def test_actions_service_creates_new_instances(self, sdk: UiPath) -> None:
208
+ """Verify that actions service creates new instances (stateless)."""
209
+ actions1 = sdk.actions
210
+ actions2 = sdk.actions
211
+
212
+ assert actions1 is not actions2, "Actions service should create new instances"
213
+
214
+ def test_queues_service_creates_new_instances(self, sdk: UiPath) -> None:
215
+ """Verify that queues service creates new instances (stateless)."""
216
+ queues1 = sdk.queues
217
+ queues2 = sdk.queues
218
+
219
+ assert queues1 is not queues2, "Queues service should create new instances"
220
+
221
+ def test_jobs_service_creates_new_instances(self, sdk: UiPath) -> None:
222
+ """Verify that jobs service creates new instances (stateless)."""
223
+ jobs1 = sdk.jobs
224
+ jobs2 = sdk.jobs
225
+
226
+ assert jobs1 is not jobs2, "Jobs service should create new instances"
227
+
228
+ @pytest.mark.parametrize(
229
+ "service_property",
230
+ [
231
+ "api_client",
232
+ "assets",
233
+ "actions",
234
+ "processes",
235
+ "queues",
236
+ "jobs",
237
+ "documents",
238
+ "llm_openai",
239
+ "llm",
240
+ "entities",
241
+ ],
242
+ )
243
+ def test_stateless_services_create_new_instances(
244
+ self, sdk: UiPath, service_property: str
245
+ ) -> None:
246
+ """Verify that stateless services create new instances."""
247
+ service1 = getattr(sdk, service_property)
248
+ service2 = getattr(sdk, service_property)
249
+
250
+ assert service1 is not service2, (
251
+ f"{service_property} should create new instances"
252
+ )
253
+
254
+
255
+ class TestServiceDependencies:
256
+ """Test suite for services with dependencies on cached services."""
257
+
258
+ def test_connections_uses_cached_folders(self, sdk: UiPath) -> None:
259
+ """Verify that connections service uses the cached folders service."""
260
+
261
+ # Access connections (which depends on folders)
262
+ _ = sdk.connections
263
+
264
+ # Access folders directly
265
+ folders = sdk.folders
266
+
267
+ # The folders instance used by connections should be the same cached instance
268
+ assert folders is sdk.folders, "Folders should be cached and reused"
269
+
270
+ def test_context_grounding_uses_cached_dependencies(self, sdk: UiPath) -> None:
271
+ """Verify that context_grounding uses cached folders and buckets."""
272
+
273
+ # Access dependencies first
274
+ folders = sdk.folders
275
+ buckets = sdk.buckets
276
+
277
+ # Access context_grounding (creates new instance but uses cached deps)
278
+ cg1 = sdk.context_grounding
279
+ cg2 = sdk.context_grounding
280
+
281
+ # context_grounding itself is not cached (creates new instances)
282
+ assert cg1 is not cg2, "ContextGroundingService should create new instances"
283
+
284
+ # But it should use the same cached dependencies
285
+ assert folders is sdk.folders, "Folders should remain cached"
286
+ assert buckets is sdk.buckets, "Buckets should remain cached"
287
+
288
+ def test_processes_uses_cached_attachments(self, sdk: UiPath) -> None:
289
+ """Verify that processes service uses the cached attachments service."""
290
+
291
+ # Access attachments directly
292
+ attachments = sdk.attachments
293
+
294
+ # Access processes (which depends on attachments)
295
+ _ = sdk.processes
296
+
297
+ # Attachments should still be cached
298
+ assert attachments is sdk.attachments, "Attachments should remain cached"
299
+
300
+
301
+ class TestCachingBehavior:
302
+ """Test suite for general caching behavior."""
303
+
304
+ def test_cached_property_attribute_name(self, sdk: UiPath) -> None:
305
+ """Verify that @cached_property stores values in expected attribute names."""
306
+
307
+ # Access the service
308
+ _ = sdk.buckets
309
+
310
+ # @cached_property stores the value in an attribute with the property name
311
+ assert hasattr(sdk, "buckets"), "Cached value should be stored as attribute"
312
+
313
+ def test_service_initialization_order(self, sdk: UiPath) -> None:
314
+ """Verify that services can be accessed in any order."""
315
+
316
+ # Access in different order
317
+ connections = sdk.connections # Depends on folders
318
+ folders = sdk.folders
319
+ buckets = sdk.buckets
320
+ attachments = sdk.attachments
321
+
322
+ # All should be cached and reusable
323
+ assert connections is sdk.connections
324
+ assert folders is sdk.folders
325
+ assert buckets is sdk.buckets
326
+ assert attachments is sdk.attachments
@@ -2823,7 +2823,7 @@ wheels = [
2823
2823
 
2824
2824
  [[package]]
2825
2825
  name = "uipath"
2826
- version = "2.1.107"
2826
+ version = "2.1.108"
2827
2827
  source = { editable = "." }
2828
2828
  dependencies = [
2829
2829
  { name = "azure-monitor-opentelemetry" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes