uipath 2.1.78__tar.gz → 2.1.80__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 (339) hide show
  1. {uipath-2.1.78 → uipath-2.1.80}/PKG-INFO +1 -1
  2. uipath-2.1.80/docs/assets/llms.txt +55 -0
  3. {uipath-2.1.78 → uipath-2.1.80}/pyproject.toml +1 -1
  4. {uipath-2.1.78 → uipath-2.1.80}/samples/calculator/main.py +2 -2
  5. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_models/_output.py +17 -14
  6. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_runtime.py +203 -102
  7. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_runtime/_runtime.py +3 -1
  8. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_eval.py +2 -2
  9. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/connections_service.py +0 -2
  10. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/mocks/mockable.py +4 -2
  11. {uipath-2.1.78 → uipath-2.1.80}/uv.lock +897 -897
  12. {uipath-2.1.78 → uipath-2.1.80}/.cursorrules +0 -0
  13. {uipath-2.1.78 → uipath-2.1.80}/.editorconfig +0 -0
  14. {uipath-2.1.78 → uipath-2.1.80}/.gitattributes +0 -0
  15. {uipath-2.1.78 → uipath-2.1.80}/.github/labeler.yml +0 -0
  16. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/auto-label.yml +0 -0
  17. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/cd.yml +0 -0
  18. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/ci.yml +0 -0
  19. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/commitlint.yml +0 -0
  20. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/integration_tests.yml +0 -0
  21. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/lint.yml +0 -0
  22. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/publish-dev.yml +0 -0
  23. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/publish-docs.yml +0 -0
  24. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/slack.yml +0 -0
  25. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/test-uipath-langchain.yml +0 -0
  26. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/test-uipath-llamaindex.yml +0 -0
  27. {uipath-2.1.78 → uipath-2.1.80}/.github/workflows/test.yml +0 -0
  28. {uipath-2.1.78 → uipath-2.1.80}/.gitignore +0 -0
  29. {uipath-2.1.78 → uipath-2.1.80}/.pre-commit-config.yaml +0 -0
  30. {uipath-2.1.78 → uipath-2.1.80}/.python-version +0 -0
  31. {uipath-2.1.78 → uipath-2.1.80}/.vscode/extensions.json +0 -0
  32. {uipath-2.1.78 → uipath-2.1.80}/.vscode/launch.json +0 -0
  33. {uipath-2.1.78 → uipath-2.1.80}/.vscode/settings.json +0 -0
  34. {uipath-2.1.78 → uipath-2.1.80}/CONTRIBUTING.md +0 -0
  35. {uipath-2.1.78 → uipath-2.1.80}/LICENSE +0 -0
  36. {uipath-2.1.78 → uipath-2.1.80}/README.md +0 -0
  37. {uipath-2.1.78 → uipath-2.1.80}/docs/CONTRIBUTING.md +0 -0
  38. {uipath-2.1.78 → uipath-2.1.80}/docs/FAQ.md +0 -0
  39. {uipath-2.1.78 → uipath-2.1.80}/docs/assets/env-preparation-failed-dark.png +0 -0
  40. {uipath-2.1.78 → uipath-2.1.80}/docs/assets/env-preparation-failed-light.png +0 -0
  41. {uipath-2.1.78 → uipath-2.1.80}/docs/assets/favicon.png +0 -0
  42. {uipath-2.1.78 → uipath-2.1.80}/docs/assets/logo-dark.svg +0 -0
  43. {uipath-2.1.78 → uipath-2.1.80}/docs/assets/logo-light.svg +0 -0
  44. {uipath-2.1.78 → uipath-2.1.80}/docs/cli/index.md +0 -0
  45. {uipath-2.1.78 → uipath-2.1.80}/docs/core/actions.md +0 -0
  46. {uipath-2.1.78 → uipath-2.1.80}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  47. {uipath-2.1.78 → uipath-2.1.80}/docs/core/assets/cloud_env_var_light.gif +0 -0
  48. {uipath-2.1.78 → uipath-2.1.80}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  49. {uipath-2.1.78 → uipath-2.1.80}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  50. {uipath-2.1.78 → uipath-2.1.80}/docs/core/assets/copy_path_dark.png +0 -0
  51. {uipath-2.1.78 → uipath-2.1.80}/docs/core/assets/copy_path_light.png +0 -0
  52. {uipath-2.1.78 → uipath-2.1.80}/docs/core/assets.md +0 -0
  53. {uipath-2.1.78 → uipath-2.1.80}/docs/core/attachments.md +0 -0
  54. {uipath-2.1.78 → uipath-2.1.80}/docs/core/buckets.md +0 -0
  55. {uipath-2.1.78 → uipath-2.1.80}/docs/core/connections.md +0 -0
  56. {uipath-2.1.78 → uipath-2.1.80}/docs/core/context_grounding.md +0 -0
  57. {uipath-2.1.78 → uipath-2.1.80}/docs/core/documents.md +0 -0
  58. {uipath-2.1.78 → uipath-2.1.80}/docs/core/documents_models.md +0 -0
  59. {uipath-2.1.78 → uipath-2.1.80}/docs/core/environment_variables.md +0 -0
  60. {uipath-2.1.78 → uipath-2.1.80}/docs/core/getting_started.md +0 -0
  61. {uipath-2.1.78 → uipath-2.1.80}/docs/core/jobs.md +0 -0
  62. {uipath-2.1.78 → uipath-2.1.80}/docs/core/llm_gateway.md +0 -0
  63. {uipath-2.1.78 → uipath-2.1.80}/docs/core/processes.md +0 -0
  64. {uipath-2.1.78 → uipath-2.1.80}/docs/core/queues.md +0 -0
  65. {uipath-2.1.78 → uipath-2.1.80}/docs/core/traced.md +0 -0
  66. {uipath-2.1.78 → uipath-2.1.80}/docs/hooks.py +0 -0
  67. {uipath-2.1.78 → uipath-2.1.80}/docs/index.md +0 -0
  68. {uipath-2.1.78 → uipath-2.1.80}/docs/javascripts/extra.js +0 -0
  69. {uipath-2.1.78 → uipath-2.1.80}/docs/overrides/main.html +0 -0
  70. {uipath-2.1.78 → uipath-2.1.80}/docs/overrides/partials/actions.html +0 -0
  71. {uipath-2.1.78 → uipath-2.1.80}/docs/overrides/partials/logo.html +0 -0
  72. {uipath-2.1.78 → uipath-2.1.80}/docs/release_policy.md +0 -0
  73. {uipath-2.1.78 → uipath-2.1.80}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  74. {uipath-2.1.78 → uipath-2.1.80}/docs/stylesheets/extra.css +0 -0
  75. {uipath-2.1.78 → uipath-2.1.80}/justfile +0 -0
  76. {uipath-2.1.78 → uipath-2.1.80}/mkdocs.yml +0 -0
  77. {uipath-2.1.78 → uipath-2.1.80}/py.typed +0 -0
  78. {uipath-2.1.78 → uipath-2.1.80}/samples/calculator/README.md +0 -0
  79. {uipath-2.1.78 → uipath-2.1.80}/samples/calculator/evals/eval-sets/default.json +0 -0
  80. {uipath-2.1.78 → uipath-2.1.80}/samples/calculator/evals/evaluators/equality.json +0 -0
  81. {uipath-2.1.78 → uipath-2.1.80}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
  82. {uipath-2.1.78 → uipath-2.1.80}/samples/calculator/pyproject.toml +0 -0
  83. {uipath-2.1.78 → uipath-2.1.80}/samples/event-trigger/.python-version +0 -0
  84. {uipath-2.1.78 → uipath-2.1.80}/samples/event-trigger/README.md +0 -0
  85. {uipath-2.1.78 → uipath-2.1.80}/samples/event-trigger/main.py +0 -0
  86. {uipath-2.1.78 → uipath-2.1.80}/samples/event-trigger/pyproject.toml +0 -0
  87. {uipath-2.1.78 → uipath-2.1.80}/samples/google-ADK-agent/.env.example +0 -0
  88. {uipath-2.1.78 → uipath-2.1.80}/samples/google-ADK-agent/README.md +0 -0
  89. {uipath-2.1.78 → uipath-2.1.80}/samples/google-ADK-agent/input.json +0 -0
  90. {uipath-2.1.78 → uipath-2.1.80}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  91. {uipath-2.1.78 → uipath-2.1.80}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  92. {uipath-2.1.78 → uipath-2.1.80}/samples/google-ADK-agent/pyproject.toml +0 -0
  93. {uipath-2.1.78 → uipath-2.1.80}/samples/google-ADK-agent/uv.lock +0 -0
  94. {uipath-2.1.78 → uipath-2.1.80}/scripts/debug_test.py +0 -0
  95. {uipath-2.1.78 → uipath-2.1.80}/scripts/lint_httpx_client.py +0 -0
  96. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/__init__.py +0 -0
  97. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/README.md +0 -0
  98. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/__init__.py +0 -0
  99. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  100. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  101. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
  102. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_models.py +0 -0
  103. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  104. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  105. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  106. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/_utils.py +0 -0
  107. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/auth_config.json +0 -0
  108. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/index.html +0 -0
  109. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/localhost.crt +0 -0
  110. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_auth/localhost.key +0 -0
  111. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  112. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  113. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  114. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
  115. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  116. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  117. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  118. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  119. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  120. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  121. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  122. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  123. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
  124. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
  125. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
  126. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
  127. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  128. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
  129. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
  130. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  131. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  132. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
  133. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/mocks/llm_mocker.py +0 -0
  134. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/mocks/mocker.py +0 -0
  135. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
  136. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
  137. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_evals/mocks/mocks.py +0 -0
  138. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  139. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  140. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  141. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  142. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_runtime/_logging.py +0 -0
  143. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  144. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  145. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_templates/.rels.template +0 -0
  146. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  147. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_templates/main.py.template +0 -0
  148. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  149. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_common.py +0 -0
  150. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_console.py +0 -0
  151. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_constants.py +0 -0
  152. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_debug.py +0 -0
  153. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  154. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_folders.py +0 -0
  155. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_input_args.py +0 -0
  156. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  157. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_processes.py +0 -0
  158. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_project_files.py +0 -0
  159. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  160. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_tracing.py +0 -0
  161. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  162. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_auth.py +0 -0
  163. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_deploy.py +0 -0
  164. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_dev.py +0 -0
  165. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_init.py +0 -0
  166. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_invoke.py +0 -0
  167. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_new.py +0 -0
  168. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_pack.py +0 -0
  169. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_publish.py +0 -0
  170. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_pull.py +0 -0
  171. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_push.py +0 -0
  172. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/cli_run.py +0 -0
  173. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/middlewares.py +0 -0
  174. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_cli/spinner.py +0 -0
  175. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_config.py +0 -0
  176. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_events/__init__.py +0 -0
  177. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_events/_event_bus.py +0 -0
  178. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_events/_events.py +0 -0
  179. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_execution_context.py +0 -0
  180. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_folder_context.py +0 -0
  181. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_resources/AGENTS.md +0 -0
  182. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/__init__.py +0 -0
  183. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/_base_service.py +0 -0
  184. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/actions_service.py +0 -0
  185. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/api_client.py +0 -0
  186. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/assets_service.py +0 -0
  187. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/attachments_service.py +0 -0
  188. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/buckets_service.py +0 -0
  189. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/context_grounding_service.py +0 -0
  190. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/documents_service.py +0 -0
  191. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/entities_service.py +0 -0
  192. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/folder_service.py +0 -0
  193. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/jobs_service.py +0 -0
  194. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/llm_gateway_service.py +0 -0
  195. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/processes_service.py +0 -0
  196. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_services/queues_service.py +0 -0
  197. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_uipath.py +0 -0
  198. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/__init__.py +0 -0
  199. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_endpoint.py +0 -0
  200. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_infer_bindings.py +0 -0
  201. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_logs.py +0 -0
  202. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_read_overwrites.py +0 -0
  203. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_request_override.py +0 -0
  204. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_request_spec.py +0 -0
  205. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_ssl_context.py +0 -0
  206. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_url.py +0 -0
  207. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/_user_agent.py +0 -0
  208. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/_utils/constants.py +0 -0
  209. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/_utils.py +0 -0
  210. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/__init__.py +0 -0
  211. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/async_stream.py +0 -0
  212. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/citation.py +0 -0
  213. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/content.py +0 -0
  214. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/conversation.py +0 -0
  215. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/event.py +0 -0
  216. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/exchange.py +0 -0
  217. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/message.py +0 -0
  218. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/meta.py +0 -0
  219. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/conversation/tool.py +0 -0
  220. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/agent/models/agent.py +0 -0
  221. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/_helpers/__init__.py +0 -0
  222. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/_helpers/helpers.py +0 -0
  223. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/evaluators/__init__.py +0 -0
  224. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  225. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  226. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  227. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  228. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  229. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  230. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/mocks/__init__.py +0 -0
  231. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/models/__init__.py +0 -0
  232. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/eval/models/models.py +0 -0
  233. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/__init__.py +0 -0
  234. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/action_schema.py +0 -0
  235. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/actions.py +0 -0
  236. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/assets.py +0 -0
  237. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/attachment.py +0 -0
  238. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/buckets.py +0 -0
  239. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/connections.py +0 -0
  240. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/context_grounding.py +0 -0
  241. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/context_grounding_index.py +0 -0
  242. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/documents.py +0 -0
  243. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/entities.py +0 -0
  244. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/errors.py +0 -0
  245. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/exceptions.py +0 -0
  246. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/interrupt_models.py +0 -0
  247. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/job.py +0 -0
  248. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/llm_gateway.py +0 -0
  249. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/processes.py +0 -0
  250. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/models/queues.py +0 -0
  251. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/py.typed +0 -0
  252. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/telemetry/__init__.py +0 -0
  253. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/telemetry/_constants.py +0 -0
  254. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/telemetry/_track.py +0 -0
  255. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/tracing/__init__.py +0 -0
  256. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/tracing/_otel_exporters.py +0 -0
  257. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/tracing/_traced.py +0 -0
  258. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/tracing/_utils.py +0 -0
  259. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/utils/__init__.py +0 -0
  260. {uipath-2.1.78 → uipath-2.1.80}/src/uipath/utils/_endpoints_manager.py +0 -0
  261. {uipath-2.1.78 → uipath-2.1.80}/testcases/apicalls-testcase/main.py +0 -0
  262. {uipath-2.1.78 → uipath-2.1.80}/testcases/apicalls-testcase/pyproject.toml +0 -0
  263. {uipath-2.1.78 → uipath-2.1.80}/testcases/apicalls-testcase/run.sh +0 -0
  264. {uipath-2.1.78 → uipath-2.1.80}/testcases/apicalls-testcase/src/assert.py +0 -0
  265. {uipath-2.1.78 → uipath-2.1.80}/testcases/basic-testcase/main.py +0 -0
  266. {uipath-2.1.78 → uipath-2.1.80}/testcases/basic-testcase/pyproject.toml +0 -0
  267. {uipath-2.1.78 → uipath-2.1.80}/testcases/basic-testcase/run.sh +0 -0
  268. {uipath-2.1.78 → uipath-2.1.80}/testcases/basic-testcase/src/assert.py +0 -0
  269. {uipath-2.1.78 → uipath-2.1.80}/testcases/common/validate_output.sh +0 -0
  270. {uipath-2.1.78 → uipath-2.1.80}/testcases/langchain-cross/agent.mermaid +0 -0
  271. {uipath-2.1.78 → uipath-2.1.80}/testcases/langchain-cross/langgraph.json +0 -0
  272. {uipath-2.1.78 → uipath-2.1.80}/testcases/langchain-cross/pyproject.toml +0 -0
  273. {uipath-2.1.78 → uipath-2.1.80}/testcases/langchain-cross/run.sh +0 -0
  274. {uipath-2.1.78 → uipath-2.1.80}/testcases/langchain-cross/src/assert.py +0 -0
  275. {uipath-2.1.78 → uipath-2.1.80}/testcases/langchain-cross/src/main.py +0 -0
  276. {uipath-2.1.78 → uipath-2.1.80}/testcases/llamaindex-cross/agent.mermaid +0 -0
  277. {uipath-2.1.78 → uipath-2.1.80}/testcases/llamaindex-cross/llama_index.json +0 -0
  278. {uipath-2.1.78 → uipath-2.1.80}/testcases/llamaindex-cross/pyproject.toml +0 -0
  279. {uipath-2.1.78 → uipath-2.1.80}/testcases/llamaindex-cross/run.sh +0 -0
  280. {uipath-2.1.78 → uipath-2.1.80}/testcases/llamaindex-cross/src/assert.py +0 -0
  281. {uipath-2.1.78 → uipath-2.1.80}/testcases/llamaindex-cross/src/main.py +0 -0
  282. {uipath-2.1.78 → uipath-2.1.80}/tests/__init__.py +0 -0
  283. {uipath-2.1.78 → uipath-2.1.80}/tests/agent/models/test_agent.py +0 -0
  284. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/conftest.py +0 -0
  285. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/eval/mocks/test_mocks.py +0 -0
  286. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  287. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/mocks/bindings_script.py +0 -0
  288. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/mocks/pyproject.toml +0 -0
  289. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/mocks/simple_script.py +0 -0
  290. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/mocks/uipath-mock.json +0 -0
  291. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  292. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_auth.py +0 -0
  293. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_hitl.py +0 -0
  294. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_init.py +0 -0
  295. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_init_agents_md.py +0 -0
  296. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_input_args.py +0 -0
  297. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_invoke.py +0 -0
  298. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_new.py +0 -0
  299. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_pack.py +0 -0
  300. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  301. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_portal_service_refresh_token.py +0 -0
  302. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_publish.py +0 -0
  303. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_pull.py +0 -0
  304. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_push.py +0 -0
  305. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_run.py +0 -0
  306. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/test_utils.py +0 -0
  307. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/utils/common.py +0 -0
  308. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/utils/project_details.py +0 -0
  309. {uipath-2.1.78 → uipath-2.1.80}/tests/cli/utils/uipath_json.py +0 -0
  310. {uipath-2.1.78 → uipath-2.1.80}/tests/conftest.py +0 -0
  311. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/conftest.py +0 -0
  312. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_actions_service.py +0 -0
  313. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_api_client.py +0 -0
  314. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_assets_service.py +0 -0
  315. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_attachments_service.py +0 -0
  316. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_base_service.py +0 -0
  317. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_buckets_service.py +0 -0
  318. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_connections_service.py +0 -0
  319. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_context_grounding_service.py +0 -0
  320. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_documents_service.py +0 -0
  321. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_entities_service.py +0 -0
  322. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_folder_service.py +0 -0
  323. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_jobs_service.py +0 -0
  324. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_llm_integration.py +0 -0
  325. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  326. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_llm_service.py +0 -0
  327. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_processes_service.py +0 -0
  328. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_queues_service.py +0 -0
  329. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  330. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  331. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  332. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  333. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/test_bindings_inference.py +0 -0
  334. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/test_config.py +0 -0
  335. {uipath-2.1.78 → uipath-2.1.80}/tests/sdk/test_overwrites.py +0 -0
  336. {uipath-2.1.78 → uipath-2.1.80}/tests/tracing/test_otel_exporters.py +0 -0
  337. {uipath-2.1.78 → uipath-2.1.80}/tests/tracing/test_span_utils.py +0 -0
  338. {uipath-2.1.78 → uipath-2.1.80}/tests/tracing/test_traced.py +0 -0
  339. {uipath-2.1.78 → uipath-2.1.80}/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.78
3
+ Version: 2.1.80
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
@@ -0,0 +1,55 @@
1
+ # UiPath Python SDK Documentation
2
+ > https://uipath.github.io/uipath-python/
3
+
4
+ A Python SDK for programmatic interaction with UiPath Cloud Platform services, featuring CLI tools for automation creation, packaging, and deployment. Includes support for LangChain, LlamaIndex, and Model Context Protocol (MCP) agent frameworks.
5
+
6
+ ## Core Documentation
7
+
8
+ ### Getting Started
9
+ - https://uipath.github.io/uipath-python/ - Main landing page
10
+ - https://uipath.github.io/uipath-python/core/getting_started - SDK quickstart guide
11
+ - https://uipath.github.io/uipath-python/FAQ - Frequently Asked Questions
12
+ - https://uipath.github.io/uipath-python/CONTRIBUTING - Contribution guidelines
13
+ - https://uipath.github.io/uipath-python/release_policy - Release policy
14
+
15
+ ### SDK Features
16
+ - https://uipath.github.io/uipath-python/core/processes - Process automation
17
+ - https://uipath.github.io/uipath-python/core/jobs - Job management
18
+ - https://uipath.github.io/uipath-python/core/assets - Asset storage and retrieval
19
+ - https://uipath.github.io/uipath-python/core/queues - Queue operations
20
+ - https://uipath.github.io/uipath-python/core/buckets - Cloud storage buckets
21
+ - https://uipath.github.io/uipath-python/core/attachments - File attachments
22
+ - https://uipath.github.io/uipath-python/core/actions - Action Center integration
23
+ - https://uipath.github.io/uipath-python/core/connections - External connections
24
+ - https://uipath.github.io/uipath-python/core/documents - Document handling
25
+ - https://uipath.github.io/uipath-python/core/documents_models - Document data models
26
+ - https://uipath.github.io/uipath-python/core/environment_variables - Environment configuration
27
+ - https://uipath.github.io/uipath-python/core/traced - Tracing and observability
28
+
29
+ ### LLM & AI Features
30
+ - https://uipath.github.io/uipath-python/core/llm_gateway - LLM Gateway for model access
31
+ - https://uipath.github.io/uipath-python/core/context_grounding - RAG and semantic search
32
+
33
+ ### Agent Frameworks
34
+ - https://uipath.github.io/uipath-python/mcp/quick_start - Model Context Protocol (MCP) SDK
35
+ - https://uipath.github.io/uipath-python/langchain/quick_start - LangChain integration
36
+ - https://uipath.github.io/uipath-python/llamaindex/quick_start - LlamaIndex integration
37
+
38
+ ### CLI Tools
39
+ - https://uipath.github.io/uipath-python/cli/ - Command-line interface reference
40
+
41
+ ## Supported LLM Models
42
+
43
+ The following LLM models are referenced in examples and evaluations throughout the repository:
44
+
45
+ ### OpenAI Models
46
+ - gpt-4o-mini-2024-07-18 - Used in samples and evaluations
47
+ - gpt-4o-2024-08-06 - Primary model for agent examples
48
+ - gpt-4 - General purpose examples
49
+ - gpt-4.1-2025-04-14 - LLM-as-judge evaluator
50
+
51
+ ### Google Models
52
+ - gemini-1.5-flash - Used in Google ADK agent sample
53
+
54
+ ### Embedding Models
55
+ - text-embedding-3-large - Azure OpenAI embeddings for RAG
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.1.78"
3
+ version = "2.1.80"
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"
@@ -35,7 +35,7 @@ GET_RANDOM_OPERATOR_EXAMPLES = [ExampleCall(id="example", input="{}", output="{\
35
35
 
36
36
  @traced()
37
37
  @mockable(example_calls=GET_RANDOM_OPERATOR_EXAMPLES)
38
- def get_random_operator() -> Wrapper:
38
+ async def get_random_operator() -> Wrapper:
39
39
  """Get a random operator."""
40
40
  return Wrapper(result=random.choice([Operator.ADD, Operator.SUBTRACT, Operator.MULTIPLY, Operator.DIVIDE]))
41
41
 
@@ -43,7 +43,7 @@ def get_random_operator() -> Wrapper:
43
43
  @traced()
44
44
  async def main(input: CalculatorInput) -> CalculatorOutput:
45
45
  if input.operator == Operator.RANDOM:
46
- operator = get_random_operator().result
46
+ operator = (await get_random_operator()).result
47
47
  else:
48
48
  operator = input.operator
49
49
  match operator:
@@ -58,43 +58,46 @@ class EvaluationRunResultDto(BaseModel):
58
58
  model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
59
59
 
60
60
  evaluator_name: str
61
+ evaluator_id: str
61
62
  result: EvaluationResultDto
62
63
 
64
+ @model_serializer(mode="wrap")
65
+ def serialize_model(self, serializer, info):
66
+ data = serializer(self)
67
+ if isinstance(data, dict):
68
+ data.pop("evaluatorId", None)
69
+ return data
70
+
63
71
 
64
72
  class EvaluationRunResult(BaseModel):
65
73
  model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
66
74
 
67
- score: float = 0.0
68
75
  evaluation_name: str
69
76
  evaluation_run_results: List[EvaluationRunResultDto]
70
77
 
71
- def compute_average_score(self) -> None:
78
+ @property
79
+ def score(self) -> float:
72
80
  """Compute average score for this single eval_item."""
73
81
  if not self.evaluation_run_results:
74
- self.score = 0.0
75
- return
82
+ return 0.0
76
83
 
77
84
  total_score = sum(dto.result.score for dto in self.evaluation_run_results)
78
- self.score = total_score / len(self.evaluation_run_results)
85
+ return total_score / len(self.evaluation_run_results)
79
86
 
80
87
 
81
88
  class UiPathEvalOutput(BaseModel):
82
89
  model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
83
90
 
84
91
  evaluation_set_name: str
85
- score: float
86
92
  evaluation_set_results: List[EvaluationRunResult]
87
93
 
88
- def compute_average_score(self) -> None:
89
- """Compute overall average by calling eval_item.compute_average_score()."""
94
+ @property
95
+ def score(self) -> float:
96
+ """Compute overall average score from evaluation results."""
90
97
  if not self.evaluation_set_results:
91
- self.score = 0.0
92
- return
93
-
94
- for eval_result in self.evaluation_set_results:
95
- eval_result.compute_average_score()
98
+ return 0.0
96
99
 
97
100
  eval_item_scores = [
98
101
  eval_result.score for eval_result in self.evaluation_set_results
99
102
  ]
100
- self.score = sum(eval_item_scores) / len(eval_item_scores)
103
+ return sum(eval_item_scores) / len(eval_item_scores)
@@ -1,3 +1,4 @@
1
+ import asyncio
1
2
  import json
2
3
  import logging
3
4
  import uuid
@@ -151,9 +152,6 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
151
152
  )
152
153
  evaluators = self._load_evaluators(evaluation_set)
153
154
 
154
- evaluator_averages = {evaluator.id: 0.0 for evaluator in evaluators}
155
- evaluator_counts = {evaluator.id: 0 for evaluator in evaluators}
156
-
157
155
  await event_bus.publish(
158
156
  EvaluationEvents.CREATE_EVAL_SET_RUN,
159
157
  EvalSetRunCreatedEvent(
@@ -165,110 +163,37 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
165
163
  ),
166
164
  )
167
165
 
168
- results = UiPathEvalOutput(
169
- evaluation_set_name=evaluation_set.name, score=0, evaluation_set_results=[]
170
- )
171
- for eval_item in evaluation_set.evaluations:
172
- set_evaluation_item(eval_item)
173
- await event_bus.publish(
174
- EvaluationEvents.CREATE_EVAL_RUN,
175
- EvalRunCreatedEvent(
176
- execution_id=self.execution_id,
177
- eval_item=eval_item,
178
- ),
166
+ # Check if parallel execution should be used
167
+ if (
168
+ self.context.workers
169
+ and self.context.workers > 1
170
+ and len(evaluation_set.evaluations) > 1
171
+ ):
172
+ eval_run_result_list = await self._execute_parallel(
173
+ evaluation_set, evaluators, event_bus, self.context.workers
179
174
  )
180
-
181
- evaluation_run_results = EvaluationRunResult(
182
- evaluation_name=eval_item.name, evaluation_run_results=[]
175
+ else:
176
+ eval_run_result_list = await self._execute_sequential(
177
+ evaluation_set, evaluators, event_bus
183
178
  )
179
+ results = UiPathEvalOutput(
180
+ evaluation_set_name=evaluation_set.name,
181
+ evaluation_set_results=eval_run_result_list,
182
+ )
184
183
 
185
- results.evaluation_set_results.append(evaluation_run_results)
186
-
187
- try:
188
- agent_execution_output = await self.execute_runtime(eval_item)
189
- evaluation_item_results: list[EvalItemResult] = []
190
-
191
- for evaluator in evaluators:
192
- evaluation_result = await self.run_evaluator(
193
- evaluator=evaluator,
194
- execution_output=agent_execution_output,
195
- eval_item=eval_item,
196
- )
197
-
198
- dto_result = EvaluationResultDto.from_evaluation_result(
199
- evaluation_result
200
- )
201
- evaluator_counts[evaluator.id] += 1
202
- count = evaluator_counts[evaluator.id]
203
- evaluator_averages[evaluator.id] += (
204
- dto_result.score - evaluator_averages[evaluator.id]
205
- ) / count
206
-
207
- evaluation_run_results.evaluation_run_results.append(
208
- EvaluationRunResultDto(
209
- evaluator_name=evaluator.name,
210
- result=dto_result,
211
- )
212
- )
213
- evaluation_item_results.append(
214
- EvalItemResult(
215
- evaluator_id=evaluator.id,
216
- result=evaluation_result,
217
- )
218
- )
219
-
220
- evaluation_run_results.compute_average_score()
221
-
222
- await event_bus.publish(
223
- EvaluationEvents.UPDATE_EVAL_RUN,
224
- EvalRunUpdatedEvent(
225
- execution_id=self.execution_id,
226
- eval_item=eval_item,
227
- eval_results=evaluation_item_results,
228
- success=not agent_execution_output.result.error,
229
- agent_output=agent_execution_output.result.output,
230
- agent_execution_time=agent_execution_output.execution_time,
231
- spans=agent_execution_output.spans,
232
- logs=agent_execution_output.logs,
233
- ),
234
- wait_for_completion=False,
235
- )
236
- except Exception as e:
237
- exception_details = EvalItemExceptionDetails(exception=e)
184
+ # Computing evaluator averages
185
+ evaluator_averages: Dict[str, float] = defaultdict(float)
186
+ evaluator_count: Dict[str, int] = defaultdict(int)
238
187
 
239
- for evaluator in evaluators:
240
- evaluator_counts[evaluator.id] += 1
241
- count = evaluator_counts[evaluator.id]
242
- evaluator_averages[evaluator.id] += (
243
- 0.0 - evaluator_averages[evaluator.id]
244
- ) / count
188
+ for eval_run_result in results.evaluation_set_results:
189
+ for result_dto in eval_run_result.evaluation_run_results:
190
+ evaluator_averages[result_dto.evaluator_id] += result_dto.result.score
191
+ evaluator_count[result_dto.evaluator_id] += 1
245
192
 
246
- eval_run_updated_event = EvalRunUpdatedEvent(
247
- execution_id=self.execution_id,
248
- eval_item=eval_item,
249
- eval_results=[],
250
- success=False,
251
- agent_output={},
252
- agent_execution_time=0.0,
253
- exception_details=exception_details,
254
- spans=[],
255
- logs=[],
256
- )
257
- if isinstance(e, EvaluationRuntimeException):
258
- eval_run_updated_event.spans = e.spans
259
- eval_run_updated_event.logs = e.logs
260
- eval_run_updated_event.exception_details.exception = ( # type: ignore
261
- e.root_exception
262
- )
263
- eval_run_updated_event.exception_details.runtime_exception = True # type: ignore
264
-
265
- await event_bus.publish(
266
- EvaluationEvents.UPDATE_EVAL_RUN,
267
- eval_run_updated_event,
268
- wait_for_completion=False,
269
- )
270
-
271
- results.compute_average_score()
193
+ for eval_id in evaluator_averages:
194
+ evaluator_averages[eval_id] = (
195
+ evaluator_averages[eval_id] / evaluator_count[eval_id]
196
+ )
272
197
 
273
198
  await event_bus.publish(
274
199
  EvaluationEvents.UPDATE_EVAL_SET_RUN,
@@ -285,6 +210,182 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
285
210
  )
286
211
  return self.context.result
287
212
 
213
+ async def _execute_sequential(
214
+ self,
215
+ evaluation_set: EvaluationSet,
216
+ evaluators: List[BaseEvaluator[Any]],
217
+ event_bus: EventBus,
218
+ ) -> List[EvaluationRunResult]:
219
+ all_eval_run_result: list[EvaluationRunResult] = []
220
+
221
+ for eval_item in evaluation_set.evaluations:
222
+ all_eval_run_result.append(
223
+ await self._execute_eval(eval_item, evaluators, event_bus)
224
+ )
225
+
226
+ return all_eval_run_result
227
+
228
+ async def _execute_parallel(
229
+ self,
230
+ evaluation_set: EvaluationSet,
231
+ evaluators: List[BaseEvaluator[Any]],
232
+ event_bus: EventBus,
233
+ workers: int,
234
+ ) -> List[EvaluationRunResult]:
235
+ # Create a queue with max concurrency
236
+ queue: asyncio.Queue[tuple[int, EvaluationItem]] = asyncio.Queue(
237
+ maxsize=workers
238
+ )
239
+
240
+ # Dictionary to store results with their original indices
241
+ results_dict: Dict[int, EvaluationRunResult] = {}
242
+
243
+ # Producer task to fill the queue
244
+ async def producer() -> None:
245
+ for index, eval_item in enumerate(evaluation_set.evaluations):
246
+ await queue.put((index, eval_item))
247
+ # Signal completion by putting None markers
248
+ for _ in range(workers):
249
+ await queue.put(None) # type: ignore
250
+
251
+ # Worker function to process items from the queue
252
+ async def worker(worker_id: int) -> None:
253
+ while True:
254
+ item = await queue.get()
255
+
256
+ # Check for termination signal
257
+ if item is None:
258
+ queue.task_done()
259
+ break
260
+
261
+ index, eval_item = item
262
+
263
+ try:
264
+ # Execute the evaluation
265
+ result = await self._execute_eval(eval_item, evaluators, event_bus)
266
+
267
+ # Store result with its index to maintain order
268
+ results_dict[index] = result
269
+ finally:
270
+ # Mark the task as done
271
+ queue.task_done()
272
+
273
+ # Start producer
274
+ producer_task = asyncio.create_task(producer())
275
+
276
+ # Create worker tasks based on workers
277
+ worker_tasks = [asyncio.create_task(worker(i)) for i in range(workers)]
278
+
279
+ # Wait for producer and all workers to complete
280
+ await producer_task
281
+ await asyncio.gather(*worker_tasks)
282
+
283
+ # Return results in the original order
284
+ return [results_dict[i] for i in range(len(evaluation_set.evaluations))]
285
+
286
+ async def _execute_eval(
287
+ self,
288
+ eval_item: EvaluationItem,
289
+ evaluators: List[BaseEvaluator[Any]],
290
+ event_bus: EventBus,
291
+ ) -> EvaluationRunResult:
292
+ set_evaluation_item(eval_item)
293
+
294
+ await event_bus.publish(
295
+ EvaluationEvents.CREATE_EVAL_RUN,
296
+ EvalRunCreatedEvent(
297
+ execution_id=self.execution_id,
298
+ eval_item=eval_item,
299
+ ),
300
+ )
301
+
302
+ evaluation_run_results = EvaluationRunResult(
303
+ evaluation_name=eval_item.name, evaluation_run_results=[]
304
+ )
305
+
306
+ try:
307
+ agent_execution_output = await self.execute_runtime(eval_item)
308
+ evaluation_item_results: list[EvalItemResult] = []
309
+
310
+ for evaluator in evaluators:
311
+ evaluation_result = await self.run_evaluator(
312
+ evaluator=evaluator,
313
+ execution_output=agent_execution_output,
314
+ eval_item=eval_item,
315
+ )
316
+
317
+ dto_result = EvaluationResultDto.from_evaluation_result(
318
+ evaluation_result
319
+ )
320
+
321
+ evaluation_run_results.evaluation_run_results.append(
322
+ EvaluationRunResultDto(
323
+ evaluator_name=evaluator.name,
324
+ result=dto_result,
325
+ evaluator_id=evaluator.id,
326
+ )
327
+ )
328
+ evaluation_item_results.append(
329
+ EvalItemResult(
330
+ evaluator_id=evaluator.id,
331
+ result=evaluation_result,
332
+ )
333
+ )
334
+
335
+ await event_bus.publish(
336
+ EvaluationEvents.UPDATE_EVAL_RUN,
337
+ EvalRunUpdatedEvent(
338
+ execution_id=self.execution_id,
339
+ eval_item=eval_item,
340
+ eval_results=evaluation_item_results,
341
+ success=not agent_execution_output.result.error,
342
+ agent_output=agent_execution_output.result.output,
343
+ agent_execution_time=agent_execution_output.execution_time,
344
+ spans=agent_execution_output.spans,
345
+ logs=agent_execution_output.logs,
346
+ ),
347
+ wait_for_completion=False,
348
+ )
349
+
350
+ except Exception as e:
351
+ exception_details = EvalItemExceptionDetails(exception=e)
352
+
353
+ for evaluator in evaluators:
354
+ evaluation_run_results.evaluation_run_results.append(
355
+ EvaluationRunResultDto(
356
+ evaluator_name=evaluator.name,
357
+ evaluator_id=evaluator.id,
358
+ result=EvaluationResultDto(score=0),
359
+ )
360
+ )
361
+
362
+ eval_run_updated_event = EvalRunUpdatedEvent(
363
+ execution_id=self.execution_id,
364
+ eval_item=eval_item,
365
+ eval_results=[],
366
+ success=False,
367
+ agent_output={},
368
+ agent_execution_time=0.0,
369
+ exception_details=exception_details,
370
+ spans=[],
371
+ logs=[],
372
+ )
373
+ if isinstance(e, EvaluationRuntimeException):
374
+ eval_run_updated_event.spans = e.spans
375
+ eval_run_updated_event.logs = e.logs
376
+ eval_run_updated_event.exception_details.exception = ( # type: ignore
377
+ e.root_exception
378
+ )
379
+ eval_run_updated_event.exception_details.runtime_exception = True # type: ignore
380
+
381
+ await event_bus.publish(
382
+ EvaluationEvents.UPDATE_EVAL_RUN,
383
+ eval_run_updated_event,
384
+ wait_for_completion=False,
385
+ )
386
+
387
+ return evaluation_run_results
388
+
288
389
  def _get_and_clear_execution_data(
289
390
  self, execution_id: str
290
391
  ) -> tuple[List[ReadableSpan], list[logging.LogRecord]]:
@@ -45,7 +45,9 @@ class UiPathRuntime(UiPathBaseRuntime):
45
45
  try:
46
46
  script_result = await self.executor(self.context.input_json)
47
47
 
48
- if self.context.job_id is None:
48
+ if self.context.job_id is None and not getattr(
49
+ self.context, "is_eval_run", False
50
+ ):
49
51
  logger.info(script_result)
50
52
 
51
53
  self.context.result = UiPathRuntimeResult(
@@ -69,8 +69,8 @@ def setup_reporting_prereq(no_report: bool) -> bool:
69
69
  @click.option(
70
70
  "--workers",
71
71
  type=int,
72
- default=8,
73
- help="Number of parallel workers for running evaluations (default: 8)",
72
+ default=1,
73
+ help="Number of parallel workers for running evaluations (default: 1)",
74
74
  )
75
75
  @click.option(
76
76
  "--output-file",
@@ -32,7 +32,6 @@ class ConnectionsService(BaseService):
32
32
  super().__init__(config=config, execution_context=execution_context)
33
33
  self._folders_service = folders_service
34
34
 
35
- @infer_bindings(resource_type="connection", name="key")
36
35
  @traced(
37
36
  name="connections_retrieve",
38
37
  run_type="uipath",
@@ -165,7 +164,6 @@ class ConnectionsService(BaseService):
165
164
 
166
165
  return self._parse_and_validate_list_response(response)
167
166
 
168
- @infer_bindings(resource_type="connection", name="key")
169
167
  @traced(
170
168
  name="connections_retrieve",
171
169
  run_type="uipath",
@@ -82,6 +82,8 @@ def get_input_schema(func):
82
82
  def mockable(
83
83
  name: Optional[str] = None,
84
84
  description: Optional[str] = None,
85
+ input_schema: Optional[dict[str, Any]] = None,
86
+ output_schema: Optional[dict[str, Any]] = None,
85
87
  example_calls: Optional[List[ExampleCall]] = None,
86
88
  **kwargs,
87
89
  ):
@@ -91,8 +93,8 @@ def mockable(
91
93
  params = {
92
94
  "name": name or func.__name__,
93
95
  "description": description or func.__doc__,
94
- "input_schema": get_input_schema(func),
95
- "output_schema": get_output_schema(func),
96
+ "input_schema": input_schema or get_input_schema(func),
97
+ "output_schema": output_schema or get_output_schema(func),
96
98
  "example_calls": example_calls,
97
99
  **kwargs,
98
100
  }