uipath 2.1.20__tar.gz → 2.1.21__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.20 → uipath-2.1.21}/PKG-INFO +1 -1
- {uipath-2.1.20 → uipath-2.1.21}/pyproject.toml +1 -1
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_evaluator_factory.py +4 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_models/_evaluation_set.py +10 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/evaluation_service.py +24 -25
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_eval.py +30 -5
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_invoke.py +0 -1
- {uipath-2.1.20 → uipath-2.1.21}/uv.lock +1 -1
- {uipath-2.1.20 → uipath-2.1.21}/.cursorrules +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.editorconfig +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.gitattributes +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/cd.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/ci.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/commitlint.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/lint.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/publish-dev.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/publish-docs.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/slack.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.github/workflows/test.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.gitignore +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.pre-commit-config.yaml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.python-version +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.vscode/extensions.json +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.vscode/launch.json +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/.vscode/settings.json +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/CONTRIBUTING.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/LICENSE +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/README.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/CONTRIBUTING.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/FAQ.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/assets/env-preparation-failed-dark.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/assets/env-preparation-failed-light.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/assets/favicon.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/assets/logo-dark.svg +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/assets/logo-light.svg +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/cli/index.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/actions.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/assets/cloud_env_var_dark.gif +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/assets/cloud_env_var_light.gif +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/assets/copy_path_dark.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/assets/copy_path_light.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/assets.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/attachments.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/buckets.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/connections.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/context_grounding.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/environment_variables.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/getting_started.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/jobs.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/llm_gateway.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/processes.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/queues.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/core/traced.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/hooks.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/index.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/javascripts/extra.js +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/overrides/main.html +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/overrides/partials/actions.html +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/overrides/partials/logo.html +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/release_policy.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/docs/stylesheets/extra.css +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/justfile +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/mkdocs.yml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/py.typed +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/event-trigger/.python-version +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/event-trigger/README.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/event-trigger/main.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/event-trigger/pyproject.toml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/google-ADK-agent/.env.example +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/google-ADK-agent/README.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/google-ADK-agent/input.json +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/google-ADK-agent/pyproject.toml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/samples/google-ADK-agent/uv.lock +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/scripts/debug_test.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/scripts/lint_httpx_client.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/README.md +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/_auth_server.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/_models.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/_portal_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/_utils.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/auth_config.json +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/index.html +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/localhost.crt +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_auth/localhost.key +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_deterministic_evaluator_base.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_evaluator_base.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_exact_match_evaluator.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_json_similarity_evaluator.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_llm_as_judge_evaluator.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_trajectory_evaluator.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_models/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_models/_evaluators.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/progress_reporter.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_runtime/_contracts.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_runtime/_escalation.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_runtime/_hitl.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_runtime/_logging.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_runtime/_runtime.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_templates/.rels.template +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_templates/main.py.template +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_common.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_console.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_constants.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_debug.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_folders.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_input_args.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_processes.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_project_files.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_studio_project.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_tracing.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_auth.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_deploy.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_init.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_new.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_pack.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_publish.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_pull.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_push.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/cli_run.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/middlewares.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/spinner.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_config.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_execution_context.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_folder_context.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/_base_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/actions_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/api_client.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/assets_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/attachments_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/buckets_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/connections_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/context_grounding_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/folder_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/jobs_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/llm_gateway_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/processes_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_services/queues_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_uipath.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_endpoint.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_infer_bindings.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_logs.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_read_overwrites.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_request_override.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_request_spec.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_ssl_context.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_url.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/_user_agent.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/_utils/constants.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/action_schema.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/actions.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/assets.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/attachment.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/buckets.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/connections.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/context_grounding.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/context_grounding_index.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/errors.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/exceptions.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/interrupt_models.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/job.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/llm_gateway.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/processes.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/models/queues.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/py.typed +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/telemetry/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/telemetry/_constants.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/telemetry/_track.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/tracing/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/tracing/_otel_exporters.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/tracing/_traced.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/tracing/_utils.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/utils/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/src/uipath/utils/_endpoints_manager.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/__init__.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/conftest.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/mocks/bindings_script.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/mocks/pyproject.toml +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/mocks/simple_script.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/mocks/uipath-mock.json +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_hitl.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_init.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_input_args.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_invoke.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_new.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_pack.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_publish.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_pull.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_push.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_run.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/test_utils.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/utils/common.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/utils/project_details.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/cli/utils/uipath_json.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/conftest.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/conftest.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_actions_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_api_client.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_assets_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_attachments_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_base_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_buckets_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_connections_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_context_grounding_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_folder_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_jobs_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_llm_integration.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_llm_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_processes_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_queues_service.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/test_bindings_inference.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/test_config.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/sdk/test_overwrites.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/tracing/test_otel_exporters.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/tracing/test_span_utils.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/tests/tracing/test_traced.py +0 -0
- {uipath-2.1.20 → uipath-2.1.21}/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.
|
3
|
+
Version: 2.1.21
|
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.21"
|
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"
|
@@ -107,6 +107,10 @@ class EvaluatorFactory:
|
|
107
107
|
model = data.get("model", "")
|
108
108
|
if not model:
|
109
109
|
raise ValueError("LLM evaluator must include 'model' field")
|
110
|
+
if model == "same-as-agent":
|
111
|
+
raise ValueError(
|
112
|
+
"'same-as-agent' model option is not supported by coded agents evaluations. Please select a specific model for the evaluator."
|
113
|
+
)
|
110
114
|
|
111
115
|
return LlmAsAJudgeEvaluator.from_params(
|
112
116
|
base_params,
|
@@ -36,6 +36,16 @@ class EvaluationSet(BaseModel):
|
|
36
36
|
createdAt: str
|
37
37
|
updatedAt: str
|
38
38
|
|
39
|
+
def extract_selected_evals(self, eval_ids) -> None:
|
40
|
+
selected_evals: list[EvaluationItem] = []
|
41
|
+
for evaluation in self.evaluations:
|
42
|
+
if evaluation.id in eval_ids:
|
43
|
+
selected_evals.append(evaluation)
|
44
|
+
eval_ids.remove(evaluation.id)
|
45
|
+
if len(eval_ids) > 0:
|
46
|
+
raise ValueError("Unknown evaluation ids: {}".format(eval_ids))
|
47
|
+
self.evaluations = selected_evals
|
48
|
+
|
39
49
|
|
40
50
|
class EvaluationStatus(IntEnum):
|
41
51
|
PENDING = 0
|
@@ -33,6 +33,7 @@ class EvaluationService:
|
|
33
33
|
self,
|
34
34
|
entrypoint: Optional[str] = None,
|
35
35
|
eval_set_path: Optional[str | Path] = None,
|
36
|
+
eval_ids: Optional[List[str]] = None,
|
36
37
|
workers: int = 8,
|
37
38
|
report_progress: bool = True,
|
38
39
|
):
|
@@ -47,10 +48,10 @@ class EvaluationService:
|
|
47
48
|
self.entrypoint, self.eval_set_path = self._resolve_paths(
|
48
49
|
entrypoint, eval_set_path
|
49
50
|
)
|
50
|
-
self.
|
51
|
+
self._eval_set = self._load_eval_set(eval_ids)
|
51
52
|
self._evaluators = self._load_evaluators()
|
52
|
-
self.
|
53
|
-
self.
|
53
|
+
self._num_workers = workers
|
54
|
+
self._results_lock = asyncio.Lock()
|
54
55
|
self._progress_manager: Optional[EvaluationProgressManager] = None
|
55
56
|
self._report_progress = report_progress
|
56
57
|
self._progress_reporter: Optional[ProgressReporter] = None
|
@@ -169,9 +170,9 @@ class EvaluationService:
|
|
169
170
|
if self._report_progress:
|
170
171
|
agent_snapshot = self._extract_agent_snapshot()
|
171
172
|
self._progress_reporter = ProgressReporter(
|
172
|
-
eval_set_id=self.
|
173
|
+
eval_set_id=self._eval_set.id,
|
173
174
|
agent_snapshot=agent_snapshot,
|
174
|
-
no_of_evals=len(self.
|
175
|
+
no_of_evals=len(self._eval_set.evaluations),
|
175
176
|
evaluators=self._evaluators,
|
176
177
|
)
|
177
178
|
|
@@ -215,12 +216,12 @@ class EvaluationService:
|
|
215
216
|
|
216
217
|
# Create results file
|
217
218
|
timestamp = datetime.now(timezone.utc).strftime("%M-%H-%d-%m-%Y")
|
218
|
-
eval_set_name = self.
|
219
|
+
eval_set_name = self._eval_set.name
|
219
220
|
self.result_file = results_dir / f"eval-{eval_set_name}-{timestamp}.json"
|
220
221
|
|
221
222
|
initial_results = EvaluationSetResult(
|
222
|
-
eval_set_id=self.
|
223
|
-
eval_set_name=self.
|
223
|
+
eval_set_id=self._eval_set.id,
|
224
|
+
eval_set_name=self._eval_set.name,
|
224
225
|
results=[],
|
225
226
|
average_score=0.0,
|
226
227
|
)
|
@@ -228,7 +229,7 @@ class EvaluationService:
|
|
228
229
|
with open(self.result_file, "w", encoding="utf-8") as f:
|
229
230
|
f.write(initial_results.model_dump_json(indent=2))
|
230
231
|
|
231
|
-
def _load_eval_set(self) -> EvaluationSet:
|
232
|
+
def _load_eval_set(self, eval_ids: Optional[List[str]] = None) -> EvaluationSet:
|
232
233
|
"""Load the evaluation set from file.
|
233
234
|
|
234
235
|
Returns:
|
@@ -236,13 +237,16 @@ class EvaluationService:
|
|
236
237
|
"""
|
237
238
|
with open(self.eval_set_path, "r", encoding="utf-8") as f:
|
238
239
|
data = json.load(f)
|
239
|
-
|
240
|
+
eval_set = EvaluationSet(**data)
|
241
|
+
if eval_ids:
|
242
|
+
eval_set.extract_selected_evals(eval_ids)
|
243
|
+
return eval_set
|
240
244
|
|
241
245
|
def _load_evaluators(self) -> List[EvaluatorBase]:
|
242
246
|
"""Load evaluators referenced by the evaluation set."""
|
243
247
|
evaluators = []
|
244
248
|
evaluators_dir = self.eval_set_path.parent.parent / "evaluators"
|
245
|
-
evaluator_refs = set(self.
|
249
|
+
evaluator_refs = set(self._eval_set.evaluatorRefs)
|
246
250
|
found_evaluator_ids = set()
|
247
251
|
|
248
252
|
# Load evaluators from JSON files
|
@@ -252,14 +256,9 @@ class EvaluationService:
|
|
252
256
|
evaluator_id = data.get("id")
|
253
257
|
|
254
258
|
if evaluator_id in evaluator_refs:
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
found_evaluator_ids.add(evaluator_id)
|
259
|
-
except Exception as e:
|
260
|
-
console.warning(
|
261
|
-
f"Failed to create evaluator {evaluator_id}: {str(e)}"
|
262
|
-
)
|
259
|
+
evaluator = EvaluatorFactory.create_evaluator(data)
|
260
|
+
evaluators.append(evaluator)
|
261
|
+
found_evaluator_ids.add(evaluator_id)
|
263
262
|
|
264
263
|
# Check if all referenced evaluators were found
|
265
264
|
missing_evaluators = evaluator_refs - found_evaluator_ids
|
@@ -276,7 +275,7 @@ class EvaluationService:
|
|
276
275
|
Args:
|
277
276
|
results: List of evaluation results to write
|
278
277
|
"""
|
279
|
-
async with self.
|
278
|
+
async with self._results_lock:
|
280
279
|
# Read current results
|
281
280
|
with open(self.result_file, "r", encoding="utf-8") as f:
|
282
281
|
current_results = EvaluationSetResult.model_validate_json(f.read())
|
@@ -473,11 +472,11 @@ class EvaluationService:
|
|
473
472
|
Args:
|
474
473
|
task_queue: The asyncio queue to add tasks to
|
475
474
|
"""
|
476
|
-
for eval_item in self.
|
475
|
+
for eval_item in self._eval_set.evaluations:
|
477
476
|
await task_queue.put(eval_item.model_dump())
|
478
477
|
|
479
478
|
# Add sentinel values to signal workers to stop
|
480
|
-
for _ in range(self.
|
479
|
+
for _ in range(self._num_workers):
|
481
480
|
await task_queue.put(None)
|
482
481
|
|
483
482
|
async def _consumer_task(
|
@@ -517,7 +516,7 @@ class EvaluationService:
|
|
517
516
|
async def run_evaluation(self) -> None:
|
518
517
|
"""Run the evaluation set using multiple worker tasks."""
|
519
518
|
console.info(
|
520
|
-
f"Starting evaluating {click.style(self.
|
519
|
+
f"Starting evaluating {click.style(self._eval_set.name, fg='cyan')} evaluation set..."
|
521
520
|
)
|
522
521
|
|
523
522
|
if self._report_progress and self._progress_reporter:
|
@@ -526,7 +525,7 @@ class EvaluationService:
|
|
526
525
|
# Prepare items for progress tracker
|
527
526
|
progress_items = [
|
528
527
|
{"id": eval_item.id, "name": eval_item.name}
|
529
|
-
for eval_item in self.
|
528
|
+
for eval_item in self._eval_set.evaluations
|
530
529
|
]
|
531
530
|
|
532
531
|
with console.evaluation_progress(progress_items) as progress_manager:
|
@@ -539,7 +538,7 @@ class EvaluationService:
|
|
539
538
|
producer = asyncio.create_task(self._producer_task(task_queue))
|
540
539
|
|
541
540
|
consumers = []
|
542
|
-
for worker_id in range(self.
|
541
|
+
for worker_id in range(self._num_workers):
|
543
542
|
consumer = asyncio.create_task(
|
544
543
|
self._consumer_task(
|
545
544
|
task_queue, worker_id, results_queue, sw_progress_reporter_queue
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# type: ignore
|
2
|
+
import ast
|
2
3
|
import asyncio
|
3
4
|
import os
|
4
|
-
from typing import Optional, Tuple
|
5
|
+
from typing import List, Optional, Tuple
|
5
6
|
|
6
7
|
import click
|
7
8
|
from dotenv import load_dotenv
|
@@ -15,9 +16,18 @@ console = ConsoleLogger()
|
|
15
16
|
load_dotenv(override=True)
|
16
17
|
|
17
18
|
|
19
|
+
class LiteralOption(click.Option):
|
20
|
+
def type_cast_value(self, ctx, value):
|
21
|
+
try:
|
22
|
+
return ast.literal_eval(value)
|
23
|
+
except Exception as e:
|
24
|
+
raise click.BadParameter(value) from e
|
25
|
+
|
26
|
+
|
18
27
|
def eval_agent(
|
19
28
|
entrypoint: Optional[str] = None,
|
20
29
|
eval_set: Optional[str] = None,
|
30
|
+
eval_ids: Optional[List[str]] = None,
|
21
31
|
workers: int = 8,
|
22
32
|
no_report: bool = False,
|
23
33
|
**kwargs,
|
@@ -27,6 +37,7 @@ def eval_agent(
|
|
27
37
|
Args:
|
28
38
|
entrypoint: Path to the agent script to evaluate (optional, will auto-discover if not provided)
|
29
39
|
eval_set: Path to the evaluation set JSON file (optional, will auto-discover if not provided)
|
40
|
+
eval_ids: Optional list of evaluation IDs
|
30
41
|
workers: Number of parallel workers for running evaluations
|
31
42
|
no_report: Do not report the evaluation results
|
32
43
|
**kwargs: Additional arguments for future extensibility
|
@@ -41,8 +52,13 @@ def eval_agent(
|
|
41
52
|
if workers < 1:
|
42
53
|
return False, "Number of workers must be at least 1", None
|
43
54
|
|
55
|
+
print("EVAL SET")
|
56
|
+
print(eval_set)
|
57
|
+
if eval_set is not None and len(eval_set) == 0:
|
58
|
+
return False, "Evaluation set must not be empty", None
|
59
|
+
|
44
60
|
service = EvaluationService(
|
45
|
-
entrypoint, eval_set, workers, report_progress=not no_report
|
61
|
+
entrypoint, eval_set, eval_ids, workers, report_progress=not no_report
|
46
62
|
)
|
47
63
|
asyncio.run(service.run_evaluation())
|
48
64
|
|
@@ -55,6 +71,7 @@ def eval_agent(
|
|
55
71
|
@click.command()
|
56
72
|
@click.argument("entrypoint", required=False)
|
57
73
|
@click.argument("eval_set", required=False)
|
74
|
+
@click.option("--eval-ids", cls=LiteralOption, default="[]")
|
58
75
|
@click.option(
|
59
76
|
"--no-report",
|
60
77
|
is_flag=True,
|
@@ -69,20 +86,28 @@ def eval_agent(
|
|
69
86
|
)
|
70
87
|
@track(when=lambda *_a, **_kw: os.getenv(ENV_JOB_ID) is None)
|
71
88
|
def eval(
|
72
|
-
entrypoint: Optional[str],
|
89
|
+
entrypoint: Optional[str],
|
90
|
+
eval_set: Optional[str],
|
91
|
+
eval_ids: List[str],
|
92
|
+
no_report: bool,
|
93
|
+
workers: int,
|
73
94
|
) -> None:
|
74
95
|
"""Run an evaluation set against the agent.
|
75
96
|
|
76
97
|
Args:
|
77
98
|
entrypoint: Path to the agent script to evaluate (optional, will auto-discover if not specified)
|
78
99
|
eval_set: Path to the evaluation set JSON file (optional, will auto-discover if not specified)
|
100
|
+
eval_ids: Optional list of evaluation IDs
|
79
101
|
workers: Number of parallel workers for running evaluations
|
80
102
|
no_report: Do not report the evaluation results
|
81
103
|
"""
|
82
104
|
success, error_message, info_message = eval_agent(
|
83
|
-
entrypoint=entrypoint,
|
105
|
+
entrypoint=entrypoint,
|
106
|
+
eval_set=eval_set,
|
107
|
+
eval_ids=eval_ids,
|
108
|
+
workers=workers,
|
109
|
+
no_report=no_report,
|
84
110
|
)
|
85
|
-
|
86
111
|
if error_message:
|
87
112
|
console.error(error_message)
|
88
113
|
click.get_current_context().exit(1)
|
@@ -70,7 +70,6 @@ def invoke(
|
|
70
70
|
url = f"{base_url}/orchestrator_/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs"
|
71
71
|
_, personal_workspace_folder_id = get_personal_workspace_info(base_url, token)
|
72
72
|
project_name, project_version = _read_project_details()
|
73
|
-
|
74
73
|
if not personal_workspace_folder_id:
|
75
74
|
console.error(
|
76
75
|
"No personal workspace found for user. Please try reauthenticating."
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_deterministic_evaluator_base.py
RENAMED
File without changes
|
File without changes
|
{uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_exact_match_evaluator.py
RENAMED
File without changes
|
{uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_json_similarity_evaluator.py
RENAMED
File without changes
|
{uipath-2.1.20 → uipath-2.1.21}/src/uipath/_cli/_evals/_evaluators/_llm_as_judge_evaluator.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|