uipath 2.1.70__tar.gz → 2.1.72__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.
- uipath-2.1.72/.github/labeler.yml +7 -0
- uipath-2.1.72/.github/workflows/auto-label.yml +19 -0
- uipath-2.1.72/.github/workflows/test-uipath-langchain.yml +184 -0
- uipath-2.1.72/.github/workflows/test-uipath-llamaindex.yml +153 -0
- {uipath-2.1.70 → uipath-2.1.72}/PKG-INFO +1 -1
- {uipath-2.1.70 → uipath-2.1.72}/pyproject.toml +4 -2
- uipath-2.1.72/samples/calculator/evals/eval-sets/default.json +29 -0
- uipath-2.1.72/samples/calculator/evals/evaluators/equality.json +13 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/calculator/main.py +1 -1
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_history.py +25 -5
- uipath-2.1.72/src/uipath/_cli/_evals/_evaluator_factory.py +106 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_evaluation_set.py +25 -15
- uipath-2.1.72/src/uipath/_cli/_evals/_models/_evaluator.py +106 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_contracts.py +1 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_logging.py +112 -31
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_pull.py +1 -1
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/context_grounding_service.py +304 -22
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/constants.py +12 -0
- uipath-2.1.72/src/uipath/agent/_utils.py +103 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/models/agent.py +10 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/agent/models/test_agent.py +152 -0
- uipath-2.1.72/tests/sdk/services/test_context_grounding_service.py +875 -0
- {uipath-2.1.70 → uipath-2.1.72}/uv.lock +1 -1
- uipath-2.1.70/src/uipath/_cli/_evals/_evaluator_factory.py +0 -144
- uipath-2.1.70/src/uipath/agent/_utils.py +0 -55
- uipath-2.1.70/tests/sdk/services/test_context_grounding_service.py +0 -334
- {uipath-2.1.70 → uipath-2.1.72}/.cursorrules +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.editorconfig +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.gitattributes +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/cd.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/ci.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/commitlint.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/integration_tests.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/lint.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/publish-dev.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/publish-docs.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/slack.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/test.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.gitignore +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.pre-commit-config.yaml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.python-version +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.vscode/extensions.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.vscode/launch.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/.vscode/settings.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/CONTRIBUTING.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/LICENSE +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/README.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/CONTRIBUTING.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/FAQ.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/assets/env-preparation-failed-dark.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/assets/env-preparation-failed-light.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/assets/favicon.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/assets/logo-dark.svg +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/assets/logo-light.svg +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/cli/index.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/actions.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_dark.gif +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_light.gif +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/copy_path_dark.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/copy_path_light.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/attachments.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/buckets.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/connections.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/context_grounding.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/documents.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/documents_models.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/environment_variables.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/getting_started.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/jobs.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/llm_gateway.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/processes.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/queues.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/core/traced.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/hooks.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/index.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/javascripts/extra.js +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/overrides/main.html +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/overrides/partials/actions.html +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/overrides/partials/logo.html +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/release_policy.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/docs/stylesheets/extra.css +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/justfile +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/mkdocs.yml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/py.typed +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/calculator/README.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/calculator/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/.python-version +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/README.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/main.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/.env.example +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/README.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/input.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/uv.lock +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/scripts/debug_test.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/scripts/lint_httpx_client.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/README.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_auth_server.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_auth_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_models.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_portal_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_url_utils.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_utils.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/auth_config.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/index.html +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/localhost.crt +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/localhost.key +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_output.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_trajectory_span.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_runtime.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_escalation.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_hitl.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_runtime.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/.rels.template +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/main.py.template +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_common.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_console.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_constants.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_debug.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_eval_set.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_folders.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_input_args.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_processes.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_project_files.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_studio_project.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_tracing.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_auth.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_deploy.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_dev.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_eval.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_init.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_invoke.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_new.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_pack.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_publish.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_push.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_run.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/middlewares.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/spinner.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_config.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_events/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_events/_event_bus.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_events/_events.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_execution_context.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_folder_context.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_resources/AGENTS.md +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/_base_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/actions_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/api_client.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/assets_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/attachments_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/buckets_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/connections_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/documents_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/entities_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/folder_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/jobs_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/llm_gateway_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/processes_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/queues_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_uipath.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_endpoint.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_infer_bindings.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_logs.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_read_overwrites.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_request_override.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_request_spec.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_ssl_context.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_url.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_user_agent.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/async_stream.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/citation.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/content.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/conversation.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/event.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/exchange.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/message.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/meta.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/tool.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/_helpers/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/_helpers/helpers.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/models/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/models/models.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/action_schema.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/actions.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/assets.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/attachment.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/buckets.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/connections.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/context_grounding.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/context_grounding_index.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/documents.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/entities.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/errors.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/exceptions.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/interrupt_models.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/job.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/llm_gateway.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/processes.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/queues.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/py.typed +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/telemetry/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/telemetry/_constants.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/telemetry/_track.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/_otel_exporters.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/_traced.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/_utils.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/utils/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/src/uipath/utils/_endpoints_manager.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/main.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/run.sh +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/src/assert.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/main.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/run.sh +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/src/assert.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/common/validate_output.sh +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/agent.mermaid +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/langgraph.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/run.sh +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/src/assert.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/src/main.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/agent.mermaid +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/llama_index.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/run.sh +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/src/assert.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/src/main.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/__init__.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/conftest.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/bindings_script.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/pyproject.toml +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/simple_script.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/uipath-mock.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_auth.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_hitl.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_init.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_init_agents_md.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_input_args.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_invoke.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_new.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_pack.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_portal_service_refresh_token.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_publish.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_pull.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_push.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_run.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_utils.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/utils/common.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/utils/project_details.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/cli/utils/uipath_json.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/conftest.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/conftest.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_actions_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_api_client.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_assets_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_attachments_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_base_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_buckets_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_connections_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_documents_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_entities_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_folder_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_jobs_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_llm_integration.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_llm_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_processes_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_queues_service.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/test_bindings_inference.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/test_config.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/test_overwrites.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/tracing/test_otel_exporters.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/tracing/test_span_utils.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/tracing/test_traced.py +0 -0
- {uipath-2.1.70 → uipath-2.1.72}/tests/tracing/test_tracing_manager.py +0 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
name: Auto Label PRs
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
types: [opened, synchronize, reopened]
|
6
|
+
|
7
|
+
permissions:
|
8
|
+
contents: read
|
9
|
+
pull-requests: write
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
label:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
steps:
|
15
|
+
- name: Label PR
|
16
|
+
uses: actions/labeler@v5
|
17
|
+
with:
|
18
|
+
configuration-path: '.github/labeler.yml'
|
19
|
+
sync-labels: true
|
@@ -0,0 +1,184 @@
|
|
1
|
+
name: Test UiPath Langchain
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
types: [ opened, synchronize, reopened, labeled ]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test-uipath-langchain:
|
9
|
+
runs-on: ${{ matrix.os }}
|
10
|
+
strategy:
|
11
|
+
matrix:
|
12
|
+
python-version: [ "3.10", "3.11", "3.12", "3.13" ]
|
13
|
+
os: [ ubuntu-latest, windows-latest ]
|
14
|
+
|
15
|
+
permissions:
|
16
|
+
contents: read
|
17
|
+
|
18
|
+
# Only run if PR has the test:uipath-langchain label
|
19
|
+
if: contains(github.event.pull_request.labels.*.name, 'test:uipath-langchain')
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- name: Checkout uipath-python
|
23
|
+
uses: actions/checkout@v4
|
24
|
+
with:
|
25
|
+
path: 'uipath-python'
|
26
|
+
|
27
|
+
- name: Setup uv
|
28
|
+
uses: astral-sh/setup-uv@v5
|
29
|
+
|
30
|
+
- name: Setup Python
|
31
|
+
uses: actions/setup-python@v5
|
32
|
+
with:
|
33
|
+
python-version: ${{ matrix.python-version }}
|
34
|
+
|
35
|
+
- name: Build uipath-python package
|
36
|
+
run: |
|
37
|
+
cd uipath-python
|
38
|
+
uv build
|
39
|
+
|
40
|
+
- name: Checkout uipath-langchain-python
|
41
|
+
uses: actions/checkout@v4
|
42
|
+
with:
|
43
|
+
repository: 'UiPath/uipath-langchain-python'
|
44
|
+
path: 'uipath-langchain-python'
|
45
|
+
|
46
|
+
- name: Update uipath-python version
|
47
|
+
shell: bash
|
48
|
+
run: |
|
49
|
+
cd uipath-langchain-python
|
50
|
+
uv add ../uipath-python/dist/*.whl --dev
|
51
|
+
|
52
|
+
- name: Run uipath-langchain tests
|
53
|
+
run: |
|
54
|
+
cd uipath-langchain-python
|
55
|
+
uv sync
|
56
|
+
uv run pytest
|
57
|
+
|
58
|
+
discover-testcases:
|
59
|
+
runs-on: ubuntu-latest
|
60
|
+
permissions:
|
61
|
+
contents: read
|
62
|
+
needs: [test-uipath-langchain]
|
63
|
+
outputs:
|
64
|
+
testcases: ${{ steps.discover.outputs.testcases }}
|
65
|
+
steps:
|
66
|
+
- name: Checkout uipath-langchain-python
|
67
|
+
uses: actions/checkout@v4
|
68
|
+
with:
|
69
|
+
repository: 'UiPath/uipath-langchain-python'
|
70
|
+
path: 'uipath-langchain-python'
|
71
|
+
|
72
|
+
- name: Discover testcases
|
73
|
+
id: discover
|
74
|
+
run: |
|
75
|
+
cd uipath-langchain-python
|
76
|
+
|
77
|
+
# Find all testcase folders (excluding common folders like README, etc.)
|
78
|
+
testcase_dirs=$(find testcases -maxdepth 1 -type d -name "*-*" | sed 's|testcases/||' | sort)
|
79
|
+
|
80
|
+
echo "Found testcase directories:"
|
81
|
+
echo "$testcase_dirs"
|
82
|
+
|
83
|
+
# Convert to JSON array for matrix
|
84
|
+
testcases_json=$(echo "$testcase_dirs" | jq -R -s -c 'split("\n")[:-1]')
|
85
|
+
echo "testcases=$testcases_json" >> $GITHUB_OUTPUT
|
86
|
+
|
87
|
+
run-uipath-langchain-integration-tests:
|
88
|
+
runs-on: ubuntu-latest
|
89
|
+
needs: [discover-testcases]
|
90
|
+
permissions:
|
91
|
+
contents: read
|
92
|
+
strategy:
|
93
|
+
matrix:
|
94
|
+
testcase: ${{ fromJson(needs.discover-testcases.outputs.testcases) }}
|
95
|
+
environment: [alpha, cloud]
|
96
|
+
use_azure_chat: [true, false]
|
97
|
+
steps:
|
98
|
+
|
99
|
+
- name: Checkout uipath-python
|
100
|
+
uses: actions/checkout@v4
|
101
|
+
with:
|
102
|
+
path: 'uipath-python'
|
103
|
+
|
104
|
+
- name: Setup uv
|
105
|
+
uses: astral-sh/setup-uv@v5
|
106
|
+
|
107
|
+
- name: Build uipath-python package
|
108
|
+
run: |
|
109
|
+
cd uipath-python
|
110
|
+
uv build
|
111
|
+
|
112
|
+
- name: Checkout uipath-langchain-python
|
113
|
+
uses: actions/checkout@v4
|
114
|
+
with:
|
115
|
+
repository: 'UiPath/uipath-langchain-python'
|
116
|
+
path: 'uipath-langchain-python'
|
117
|
+
|
118
|
+
- name: Copy wheel to uipath-langchain
|
119
|
+
run: |
|
120
|
+
mkdir -p uipath-langchain-python/wheels
|
121
|
+
cp uipath-python/dist/*.whl uipath-langchain-python/wheels/
|
122
|
+
|
123
|
+
- name: Update uipath-python version
|
124
|
+
shell: bash
|
125
|
+
run: |
|
126
|
+
cd uipath-langchain-python
|
127
|
+
WHL=$(ls wheels/*.whl | head -n1)
|
128
|
+
WHL_NAME=$(basename "$WHL")
|
129
|
+
echo "Using wheel: $WHL_NAME"
|
130
|
+
sed -i "s|uipath>=.*|uipath @ file:///app/wheels/$WHL_NAME\",|" pyproject.toml
|
131
|
+
|
132
|
+
if ! grep -q '\[tool.hatch.metadata\]' pyproject.toml; then
|
133
|
+
echo -e '\n[tool.hatch.metadata]\nallow-direct-references = true' >> pyproject.toml
|
134
|
+
fi
|
135
|
+
|
136
|
+
- name: Set up Docker Buildx
|
137
|
+
uses: docker/setup-buildx-action@v3
|
138
|
+
|
139
|
+
- name: Build Docker image
|
140
|
+
run: |
|
141
|
+
cd uipath-langchain-python
|
142
|
+
echo "Building Docker image at $(date)"
|
143
|
+
docker build -f testcases/Dockerfile \
|
144
|
+
-t uipath-langchain-testbase:latest .
|
145
|
+
echo "Docker image built at $(date)"
|
146
|
+
|
147
|
+
- name: Run integration test
|
148
|
+
env:
|
149
|
+
ALPHA_TEST_CLIENT_ID: ${{ secrets.ALPHA_TEST_CLIENT_ID }}
|
150
|
+
ALPHA_TEST_CLIENT_SECRET: ${{ secrets.ALPHA_TEST_CLIENT_SECRET }}
|
151
|
+
ALPHA_BASE_URL: ${{ secrets.ALPHA_BASE_URL }}
|
152
|
+
CLOUD_TEST_CLIENT_ID: ${{ secrets.CLOUD_TEST_CLIENT_ID }}
|
153
|
+
CLOUD_TEST_CLIENT_SECRET: ${{ secrets.CLOUD_TEST_CLIENT_SECRET }}
|
154
|
+
CLOUD_BASE_URL: ${{ secrets.CLOUD_BASE_URL }}
|
155
|
+
run: |
|
156
|
+
cd uipath-langchain-python
|
157
|
+
|
158
|
+
testcase="${{ matrix.testcase }}"
|
159
|
+
environment="${{ matrix.environment }}"
|
160
|
+
use_azure_chat="${{ matrix.use_azure_chat }}"
|
161
|
+
|
162
|
+
echo "Running testcase: $testcase"
|
163
|
+
echo "Environment: $environment"
|
164
|
+
echo "LLM: $( [ $use_azure_chat == "true" ] && echo "UiPathAzureChatOpenAI" || echo "UiPathChat" )"
|
165
|
+
echo "USE_AZURE_CHAT: $use_azure_chat"
|
166
|
+
|
167
|
+
if [ "$environment" == "alpha" ]; then
|
168
|
+
CLIENT_ID=$ALPHA_TEST_CLIENT_ID
|
169
|
+
CLIENT_SECRET=$ALPHA_TEST_CLIENT_SECRET
|
170
|
+
BASE_URL=$ALPHA_BASE_URL
|
171
|
+
else
|
172
|
+
CLIENT_ID=$CLOUD_TEST_CLIENT_ID
|
173
|
+
CLIENT_SECRET=$CLOUD_TEST_CLIENT_SECRET
|
174
|
+
BASE_URL=$CLOUD_BASE_URL
|
175
|
+
fi
|
176
|
+
|
177
|
+
docker run --rm \
|
178
|
+
-e CLIENT_ID="$CLIENT_ID" \
|
179
|
+
-e CLIENT_SECRET="$CLIENT_SECRET" \
|
180
|
+
-e BASE_URL="$BASE_URL" \
|
181
|
+
-e USE_AZURE_CHAT="$use_azure_chat" \
|
182
|
+
uipath-langchain-testbase:latest \
|
183
|
+
bash "/app/testcases/$testcase/run.sh"
|
184
|
+
|
@@ -0,0 +1,153 @@
|
|
1
|
+
name: Test UiPath LlamaIndex
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
types: [ opened, synchronize, reopened, labeled ]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test-uipath-llamaindex:
|
9
|
+
runs-on: ${{ matrix.os }}
|
10
|
+
strategy:
|
11
|
+
matrix:
|
12
|
+
python-version: [ "3.10", "3.11", "3.12", "3.13" ]
|
13
|
+
os: [ ubuntu-latest, windows-latest ]
|
14
|
+
|
15
|
+
permissions:
|
16
|
+
contents: read
|
17
|
+
|
18
|
+
# Only run if PR has the test:uipath-llamaindex label
|
19
|
+
if: contains(github.event.pull_request.labels.*.name, 'test:uipath-llamaindex')
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- name: Checkout uipath-python
|
23
|
+
uses: actions/checkout@v4
|
24
|
+
with:
|
25
|
+
path: 'uipath-python'
|
26
|
+
|
27
|
+
- name: Setup uv
|
28
|
+
uses: astral-sh/setup-uv@v5
|
29
|
+
|
30
|
+
- name: Setup Python
|
31
|
+
uses: actions/setup-python@v5
|
32
|
+
with:
|
33
|
+
python-version: ${{ matrix.python-version }}
|
34
|
+
|
35
|
+
- name: Build uipath-python package
|
36
|
+
run: |
|
37
|
+
cd uipath-python
|
38
|
+
uv build
|
39
|
+
|
40
|
+
- name: Checkout uipath-llamaindex-python
|
41
|
+
uses: actions/checkout@v4
|
42
|
+
with:
|
43
|
+
repository: 'UiPath/uipath-llamaindex-python'
|
44
|
+
path: 'uipath-llamaindex-python'
|
45
|
+
|
46
|
+
- name: Update uipath-python version
|
47
|
+
shell: bash
|
48
|
+
run: |
|
49
|
+
cd uipath-llamaindex-python
|
50
|
+
uv add ../uipath-python/dist/*.whl --dev
|
51
|
+
|
52
|
+
- name: Run uipath-llamaindex tests
|
53
|
+
run: |
|
54
|
+
cd uipath-llamaindex-python
|
55
|
+
uv sync
|
56
|
+
uv run pytest
|
57
|
+
|
58
|
+
discover-testcases:
|
59
|
+
runs-on: ubuntu-latest
|
60
|
+
permissions:
|
61
|
+
contents: read
|
62
|
+
needs: test-uipath-llamaindex
|
63
|
+
outputs:
|
64
|
+
testcases: ${{ steps.discover.outputs.testcases }}
|
65
|
+
steps:
|
66
|
+
- name: Checkout uipath-llamaindex-python
|
67
|
+
uses: actions/checkout@v4
|
68
|
+
with:
|
69
|
+
repository: 'UiPath/uipath-llamaindex-python'
|
70
|
+
path: 'uipath-llamaindex-python'
|
71
|
+
|
72
|
+
- name: Discover testcases
|
73
|
+
id: discover
|
74
|
+
run: |
|
75
|
+
cd uipath-llamaindex-python
|
76
|
+
|
77
|
+
# Find all testcase folders (excluding common folders like README, etc.)
|
78
|
+
testcase_dirs=$(find testcases -maxdepth 1 -type d -name "*-*" | sed 's|testcases/||' | sort)
|
79
|
+
|
80
|
+
echo "Found testcase directories:"
|
81
|
+
echo "$testcase_dirs"
|
82
|
+
|
83
|
+
# Convert to JSON array for matrix
|
84
|
+
testcases_json=$(echo "$testcase_dirs" | jq -R -s -c 'split("\n")[:-1]')
|
85
|
+
echo "testcases=$testcases_json" >> $GITHUB_OUTPUT
|
86
|
+
|
87
|
+
run-uipath-llamaindex-integration-tests:
|
88
|
+
runs-on: ubuntu-latest
|
89
|
+
needs: [discover-testcases]
|
90
|
+
permissions:
|
91
|
+
contents: read
|
92
|
+
strategy:
|
93
|
+
matrix:
|
94
|
+
testcase: ${{ fromJson(needs.discover-testcases.outputs.testcases) }}
|
95
|
+
steps:
|
96
|
+
|
97
|
+
- name: Checkout uipath-python
|
98
|
+
uses: actions/checkout@v4
|
99
|
+
with:
|
100
|
+
path: 'uipath-python'
|
101
|
+
|
102
|
+
- name: Setup uv
|
103
|
+
uses: astral-sh/setup-uv@v5
|
104
|
+
|
105
|
+
- name: Build uipath-python package
|
106
|
+
run: |
|
107
|
+
cd uipath-python
|
108
|
+
uv build
|
109
|
+
|
110
|
+
- name: Checkout uipath-llamaindex-python
|
111
|
+
uses: actions/checkout@v4
|
112
|
+
with:
|
113
|
+
repository: 'UiPath/uipath-llamaindex-python'
|
114
|
+
path: 'uipath-llamaindex-python'
|
115
|
+
|
116
|
+
- name: Copy wheel file to uipath-llamaindex-python
|
117
|
+
run: |
|
118
|
+
mkdir -p uipath-llamaindex-python/wheels
|
119
|
+
cp uipath-python/dist/*.whl uipath-llamaindex-python/wheels/
|
120
|
+
|
121
|
+
- name: Update uipath-python version
|
122
|
+
shell: bash
|
123
|
+
run: |
|
124
|
+
cd uipath-llamaindex-python
|
125
|
+
WHL=$(ls wheels/*.whl | head -n1)
|
126
|
+
WHL_NAME=$(basename "$WHL")
|
127
|
+
echo "Using wheel: $WHL_NAME"
|
128
|
+
sed -i "s|uipath>=.*|uipath @ file:///app/wheels/$WHL_NAME\",|" pyproject.toml
|
129
|
+
|
130
|
+
if ! grep -q '\[tool.hatch.metadata\]' pyproject.toml; then
|
131
|
+
echo -e '\n[tool.hatch.metadata]\nallow-direct-references = true' >> pyproject.toml
|
132
|
+
fi
|
133
|
+
|
134
|
+
- name: Set up Docker Buildx
|
135
|
+
uses: docker/setup-buildx-action@v3
|
136
|
+
|
137
|
+
- name: Build Docker image and run integration test
|
138
|
+
env:
|
139
|
+
ALPHA_TEST_CLIENT_ID: ${{ secrets.ALPHA_TEST_CLIENT_ID }}
|
140
|
+
ALPHA_TEST_CLIENT_SECRET: ${{ secrets.ALPHA_TEST_CLIENT_SECRET }}
|
141
|
+
ALPHA_BASE_URL: ${{ secrets.ALPHA_BASE_URL }}
|
142
|
+
run: |
|
143
|
+
cd uipath-llamaindex-python
|
144
|
+
|
145
|
+
testcase="${{ matrix.testcase }}"
|
146
|
+
echo "Running testcase: $testcase"
|
147
|
+
|
148
|
+
docker build -f testcases/$testcase/Dockerfile \
|
149
|
+
-t $testcase:test \
|
150
|
+
--build-arg CLIENT_ID="$ALPHA_TEST_CLIENT_ID" \
|
151
|
+
--build-arg CLIENT_SECRET="$ALPHA_TEST_CLIENT_SECRET" \
|
152
|
+
--build-arg BASE_URL="$ALPHA_BASE_URL" \
|
153
|
+
.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: uipath
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.72
|
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.
|
3
|
+
version = "2.1.72"
|
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"
|
@@ -72,7 +72,9 @@ dev = [
|
|
72
72
|
|
73
73
|
[tool.hatch.build.targets.wheel]
|
74
74
|
packages = ["src/uipath"]
|
75
|
-
include = [
|
75
|
+
include = [
|
76
|
+
"src/uipath/_resources"
|
77
|
+
]
|
76
78
|
|
77
79
|
[tool.ruff]
|
78
80
|
line-length = 88
|
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"fileName": "default.json",
|
3
|
+
"id": "default-eval-set-id",
|
4
|
+
"name": "Basic Calculator Evaluation Set",
|
5
|
+
"batchSize": 10,
|
6
|
+
"evaluatorRefs": [
|
7
|
+
"equality"
|
8
|
+
],
|
9
|
+
"evaluations": [
|
10
|
+
{
|
11
|
+
"id": "test",
|
12
|
+
"name": "Test Addition",
|
13
|
+
"inputs": {"a": 1, "b": 1, "operator": "+"},
|
14
|
+
"expectedOutput": {"result": 2},
|
15
|
+
"simulationInstructions": "",
|
16
|
+
"expectedAgentBehavior": "",
|
17
|
+
"simulateInput": false,
|
18
|
+
"inputGenerationInstructions": "",
|
19
|
+
"simulateTools": false,
|
20
|
+
"toolsToSimulate": [],
|
21
|
+
"evalSetId": "default-eval-set-id",
|
22
|
+
"createdAt": "2025-09-04T18:54:58.378Z",
|
23
|
+
"updatedAt": "2025-09-04T18:55:55.416Z"
|
24
|
+
}
|
25
|
+
],
|
26
|
+
"modelSettings": [],
|
27
|
+
"createdAt": "2025-09-04T18:54:58.379Z",
|
28
|
+
"updatedAt": "2025-09-04T18:55:55.416Z"
|
29
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"fileName": "equality.json",
|
3
|
+
"id": "equality",
|
4
|
+
"name": "Equality Evaluator",
|
5
|
+
"description": "An evaluator that judges the agent based on expected output.",
|
6
|
+
"category": 0,
|
7
|
+
"type": 1,
|
8
|
+
"prompt": "",
|
9
|
+
"model": "same-as-agent",
|
10
|
+
"targetOutputKey": "*",
|
11
|
+
"createdAt": "2025-06-26T17:45:39.651Z",
|
12
|
+
"updatedAt": "2025-06-26T17:45:39.651Z"
|
13
|
+
}
|
@@ -25,7 +25,7 @@ class CalculatorOutput:
|
|
25
25
|
# use InputTriggerEventArgs when called by UiPath EventTriggers
|
26
26
|
@traced()
|
27
27
|
def main(input: CalculatorInput) -> CalculatorOutput:
|
28
|
-
result = 0
|
28
|
+
result = 0.0
|
29
29
|
match input.operator:
|
30
30
|
case Operator.ADD: result = input.a + input.b
|
31
31
|
case Operator.SUBTRACT: result = input.a - input.b
|
@@ -73,13 +73,33 @@ class RunHistoryPanel(Container):
|
|
73
73
|
self.refresh_list()
|
74
74
|
|
75
75
|
def _refresh_running_items(self) -> None:
|
76
|
+
"""Refresh display names for running items only."""
|
76
77
|
if not any(run.status == "running" for run in self.runs):
|
77
|
-
return None
|
78
|
+
return None
|
78
79
|
|
79
|
-
|
80
|
+
try:
|
81
|
+
run_list = self.query_one("#run-list", ListView)
|
82
|
+
except Exception:
|
83
|
+
return None
|
84
|
+
|
85
|
+
# Take a snapshot of items to avoid mid-iteration changes
|
86
|
+
items_snapshot = list(run_list.children)
|
87
|
+
|
88
|
+
for item in items_snapshot:
|
89
|
+
if not hasattr(item, "run_id"):
|
90
|
+
continue
|
91
|
+
|
92
|
+
run = self.get_run_by_id(item.run_id)
|
93
|
+
if not run or run.status != "running":
|
94
|
+
continue
|
95
|
+
|
96
|
+
# Check if item still exists in the list (wasn't removed)
|
97
|
+
if item not in run_list.children:
|
98
|
+
continue
|
80
99
|
|
81
|
-
|
82
|
-
run = self.get_run_by_id(item.run_id) # type: ignore[attr-defined]
|
83
|
-
if run and run.status == "running":
|
100
|
+
try:
|
84
101
|
static = item.query_one(Static)
|
85
102
|
static.update(run.display_name)
|
103
|
+
except Exception:
|
104
|
+
# Item structure changed or was removed
|
105
|
+
continue
|
@@ -0,0 +1,106 @@
|
|
1
|
+
from typing import Any, Dict
|
2
|
+
|
3
|
+
from pydantic import TypeAdapter
|
4
|
+
|
5
|
+
from uipath._cli._evals._models._evaluator import (
|
6
|
+
EqualsEvaluatorParams,
|
7
|
+
Evaluator,
|
8
|
+
JsonSimilarityEvaluatorParams,
|
9
|
+
LLMEvaluatorParams,
|
10
|
+
TrajectoryEvaluatorParams,
|
11
|
+
)
|
12
|
+
from uipath._cli._evals._models._evaluator_base_params import EvaluatorBaseParams
|
13
|
+
from uipath.eval.evaluators import (
|
14
|
+
BaseEvaluator,
|
15
|
+
ExactMatchEvaluator,
|
16
|
+
JsonSimilarityEvaluator,
|
17
|
+
LlmAsAJudgeEvaluator,
|
18
|
+
TrajectoryEvaluator,
|
19
|
+
)
|
20
|
+
|
21
|
+
|
22
|
+
class EvaluatorFactory:
|
23
|
+
"""Factory class for creating evaluator instances based on configuration."""
|
24
|
+
|
25
|
+
@classmethod
|
26
|
+
def create_evaluator(cls, data: Dict[str, Any]) -> BaseEvaluator[Any]:
|
27
|
+
"""Create an evaluator instance from configuration data.
|
28
|
+
|
29
|
+
Args:
|
30
|
+
data: Dictionary containing evaluator configuration from JSON file
|
31
|
+
|
32
|
+
Returns:
|
33
|
+
Appropriate evaluator instance based on category
|
34
|
+
|
35
|
+
Raises:
|
36
|
+
ValueError: If category is unknown or required fields are missing
|
37
|
+
"""
|
38
|
+
# Extract common fields
|
39
|
+
name = data.get("name", "")
|
40
|
+
if not name:
|
41
|
+
raise ValueError("Evaluator configuration must include 'name' field")
|
42
|
+
id = data.get("id", "")
|
43
|
+
if not id:
|
44
|
+
raise ValueError("Evaluator configuration must include 'id' field")
|
45
|
+
|
46
|
+
params: EvaluatorBaseParams = TypeAdapter(Evaluator).validate_python(data)
|
47
|
+
|
48
|
+
match params:
|
49
|
+
case EqualsEvaluatorParams():
|
50
|
+
return EvaluatorFactory._create_exact_match_evaluator(params)
|
51
|
+
case JsonSimilarityEvaluatorParams():
|
52
|
+
return EvaluatorFactory._create_json_similarity_evaluator(params)
|
53
|
+
case LLMEvaluatorParams():
|
54
|
+
return EvaluatorFactory._create_llm_as_judge_evaluator(params)
|
55
|
+
case TrajectoryEvaluatorParams():
|
56
|
+
return EvaluatorFactory._create_trajectory_evaluator(params)
|
57
|
+
case _:
|
58
|
+
raise ValueError(f"Unknown evaluator category: {params}")
|
59
|
+
|
60
|
+
@staticmethod
|
61
|
+
def _create_exact_match_evaluator(
|
62
|
+
params: EqualsEvaluatorParams,
|
63
|
+
) -> ExactMatchEvaluator:
|
64
|
+
"""Create a deterministic evaluator."""
|
65
|
+
return ExactMatchEvaluator(**params.model_dump())
|
66
|
+
|
67
|
+
@staticmethod
|
68
|
+
def _create_json_similarity_evaluator(
|
69
|
+
params: JsonSimilarityEvaluatorParams,
|
70
|
+
) -> JsonSimilarityEvaluator:
|
71
|
+
"""Create a deterministic evaluator."""
|
72
|
+
return JsonSimilarityEvaluator(**params.model_dump())
|
73
|
+
|
74
|
+
@staticmethod
|
75
|
+
def _create_llm_as_judge_evaluator(
|
76
|
+
params: LLMEvaluatorParams,
|
77
|
+
) -> LlmAsAJudgeEvaluator:
|
78
|
+
"""Create an LLM-as-a-judge evaluator."""
|
79
|
+
if not params.prompt:
|
80
|
+
raise ValueError("LLM evaluator must include 'prompt' field")
|
81
|
+
|
82
|
+
if not params.model:
|
83
|
+
raise ValueError("LLM evaluator must include 'model' field")
|
84
|
+
if params.model == "same-as-agent":
|
85
|
+
raise ValueError(
|
86
|
+
"'same-as-agent' model option is not supported by coded agents evaluations. Please select a specific model for the evaluator."
|
87
|
+
)
|
88
|
+
|
89
|
+
return LlmAsAJudgeEvaluator(**params.model_dump())
|
90
|
+
|
91
|
+
@staticmethod
|
92
|
+
def _create_trajectory_evaluator(
|
93
|
+
params: TrajectoryEvaluatorParams,
|
94
|
+
) -> TrajectoryEvaluator:
|
95
|
+
"""Create a trajectory evaluator."""
|
96
|
+
if not params.prompt:
|
97
|
+
raise ValueError("Trajectory evaluator must include 'prompt' field")
|
98
|
+
|
99
|
+
if not params.model:
|
100
|
+
raise ValueError("LLM evaluator must include 'model' field")
|
101
|
+
if params.model == "same-as-agent":
|
102
|
+
raise ValueError(
|
103
|
+
"'same-as-agent' model option is not supported by coded agents evaluations. Please select a specific model for the evaluator."
|
104
|
+
)
|
105
|
+
|
106
|
+
return TrajectoryEvaluator(**params.model_dump())
|
@@ -5,6 +5,10 @@ from pydantic import BaseModel, ConfigDict, Field
|
|
5
5
|
from pydantic.alias_generators import to_camel
|
6
6
|
|
7
7
|
|
8
|
+
class EvaluationSimulationTool(BaseModel):
|
9
|
+
name: str = Field(..., alias="name")
|
10
|
+
|
11
|
+
|
8
12
|
class EvaluationItem(BaseModel):
|
9
13
|
"""Individual evaluation item within an evaluation set."""
|
10
14
|
|
@@ -14,15 +18,19 @@ class EvaluationItem(BaseModel):
|
|
14
18
|
name: str
|
15
19
|
inputs: Dict[str, Any]
|
16
20
|
expected_output: Dict[str, Any]
|
17
|
-
expected_agent_behavior: str = ""
|
18
|
-
simulation_instructions: str = ""
|
19
|
-
simulate_input: bool = False
|
20
|
-
input_generation_instructions: str =
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
expected_agent_behavior: str = Field(default="", alias="expectedAgentBehavior")
|
22
|
+
simulation_instructions: str = Field(default="", alias="simulationInstructions")
|
23
|
+
simulate_input: bool = Field(default=False, alias="simulateInput")
|
24
|
+
input_generation_instructions: str = Field(
|
25
|
+
default="", alias="inputGenerationInstructions"
|
26
|
+
)
|
27
|
+
simulate_tools: bool = Field(default=False, alias="simulateTools")
|
28
|
+
tools_to_simulate: List[EvaluationSimulationTool] = Field(
|
29
|
+
default_factory=list, alias="toolsToSimulate"
|
30
|
+
)
|
31
|
+
eval_set_id: str = Field(alias="evalSetId")
|
32
|
+
created_at: str = Field(alias="createdAt")
|
33
|
+
updated_at: str = Field(alias="updatedAt")
|
26
34
|
|
27
35
|
|
28
36
|
class EvaluationSet(BaseModel):
|
@@ -31,15 +39,17 @@ class EvaluationSet(BaseModel):
|
|
31
39
|
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
|
32
40
|
|
33
41
|
id: str
|
34
|
-
file_name: str
|
42
|
+
file_name: str = Field(..., alias="fileName")
|
35
43
|
evaluator_refs: List[str] = Field(default_factory=list)
|
36
44
|
evaluations: List[EvaluationItem] = Field(default_factory=list)
|
37
45
|
name: str
|
38
|
-
batch_size: int = 10
|
39
|
-
timeout_minutes: int = 20
|
40
|
-
model_settings: List[Dict[str, Any]] = Field(
|
41
|
-
|
42
|
-
|
46
|
+
batch_size: int = Field(10, alias="batchSize")
|
47
|
+
timeout_minutes: int = Field(default=20, alias="timeoutMinutes")
|
48
|
+
model_settings: List[Dict[str, Any]] = Field(
|
49
|
+
default_factory=list, alias="modelSettings"
|
50
|
+
)
|
51
|
+
created_at: str = Field(alias="createdAt")
|
52
|
+
updated_at: str = Field(alias="updatedAt")
|
43
53
|
|
44
54
|
def extract_selected_evals(self, eval_ids) -> None:
|
45
55
|
selected_evals: list[EvaluationItem] = []
|