uipath 2.1.32__tar.gz → 2.1.34__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.32 → uipath-2.1.34}/PKG-INFO +1 -1
- {uipath-2.1.32 → uipath-2.1.34}/pyproject.toml +1 -1
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/__init__.py +4 -2
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_components/_details.py +76 -35
- uipath-2.1.34/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +23 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_components/_new.py +3 -1
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_components/_resume.py +6 -2
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +1 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +9 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_project_files.py +6 -5
- uipath-2.1.34/src/uipath/_cli/cli_dev.py +44 -0
- {uipath-2.1.32 → uipath-2.1.34}/uv.lock +1 -1
- uipath-2.1.32/src/uipath/_cli/cli_dev.py +0 -44
- {uipath-2.1.32 → uipath-2.1.34}/.cursorrules +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.editorconfig +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.gitattributes +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/cd.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/ci.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/commitlint.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/lint.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/publish-dev.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/publish-docs.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/slack.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.github/workflows/test.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.gitignore +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.pre-commit-config.yaml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.python-version +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.vscode/extensions.json +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.vscode/launch.json +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/.vscode/settings.json +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/CONTRIBUTING.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/LICENSE +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/README.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/CONTRIBUTING.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/FAQ.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/assets/env-preparation-failed-dark.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/assets/env-preparation-failed-light.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/assets/favicon.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/assets/logo-dark.svg +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/assets/logo-light.svg +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/cli/index.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/actions.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/assets/cloud_env_var_dark.gif +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/assets/cloud_env_var_light.gif +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/assets/copy_path_dark.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/assets/copy_path_light.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/assets.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/attachments.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/buckets.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/connections.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/context_grounding.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/environment_variables.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/getting_started.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/jobs.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/llm_gateway.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/processes.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/queues.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/core/traced.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/hooks.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/index.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/javascripts/extra.js +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/overrides/main.html +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/overrides/partials/actions.html +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/overrides/partials/logo.html +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/release_policy.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/docs/stylesheets/extra.css +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/justfile +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/mkdocs.yml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/py.typed +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/event-trigger/.python-version +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/event-trigger/README.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/event-trigger/main.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/event-trigger/pyproject.toml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/google-ADK-agent/.env.example +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/google-ADK-agent/README.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/google-ADK-agent/input.json +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/google-ADK-agent/pyproject.toml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/samples/google-ADK-agent/uv.lock +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/scripts/debug_test.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/scripts/lint_httpx_client.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/README.md +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/_auth_server.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/_models.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/_portal_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/_url_utils.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/_utils.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/auth_config.json +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/index.html +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/localhost.crt +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_auth/localhost.key +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_traces/_exporter.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_dev/_terminal/_traces/_logger.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/_deterministic_evaluator_base.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/_evaluator_base.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/_evaluator_factory.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/_exact_match_evaluator.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/_json_similarity_evaluator.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/_llm_as_judge_evaluator.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_evaluators/_trajectory_evaluator.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_models/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/_models/_evaluators.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/evaluation_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_evals/progress_reporter.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_runtime/_contracts.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_runtime/_escalation.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_runtime/_hitl.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_runtime/_logging.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_runtime/_runtime.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_templates/.rels.template +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_templates/main.py.template +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_common.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_console.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_constants.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_debug.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_folders.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_input_args.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_processes.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_studio_project.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_tracing.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_auth.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_deploy.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_eval.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_init.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_invoke.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_new.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_pack.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_publish.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_pull.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_push.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/cli_run.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/middlewares.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_cli/spinner.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_config.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_execution_context.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_folder_context.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/_base_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/actions_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/api_client.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/assets_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/attachments_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/buckets_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/connections_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/context_grounding_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/folder_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/jobs_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/llm_gateway_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/processes_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_services/queues_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_uipath.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_endpoint.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_infer_bindings.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_logs.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_read_overwrites.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_request_override.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_request_spec.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_ssl_context.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_url.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/_user_agent.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/_utils/constants.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/action_schema.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/actions.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/assets.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/attachment.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/buckets.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/connections.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/context_grounding.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/context_grounding_index.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/errors.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/exceptions.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/interrupt_models.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/job.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/llm_gateway.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/processes.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/models/queues.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/py.typed +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/telemetry/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/telemetry/_constants.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/telemetry/_track.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/tracing/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/tracing/_otel_exporters.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/tracing/_traced.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/tracing/_utils.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/utils/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/src/uipath/utils/_endpoints_manager.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/__init__.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/conftest.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/mocks/bindings_script.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/mocks/pyproject.toml +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/mocks/simple_script.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/mocks/uipath-mock.json +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_auth.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_hitl.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_init.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_input_args.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_invoke.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_new.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_pack.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_portal_service_refresh_token.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_publish.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_pull.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_push.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_run.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/test_utils.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/utils/common.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/utils/project_details.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/cli/utils/uipath_json.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/conftest.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/conftest.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_actions_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_api_client.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_assets_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_attachments_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_base_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_buckets_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_connections_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_context_grounding_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_folder_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_jobs_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_llm_integration.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_llm_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_processes_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_queues_service.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/test_bindings_inference.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/test_config.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/sdk/test_overwrites.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/tracing/test_otel_exporters.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/tracing/test_span_utils.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/tests/tracing/test_traced.py +0 -0
- {uipath-2.1.32 → uipath-2.1.34}/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.34
|
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.34"
|
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"
|
@@ -123,8 +123,9 @@ class UiPathDevTerminal(App[Any]):
|
|
123
123
|
input = json.loads(input_data)
|
124
124
|
except json.JSONDecodeError:
|
125
125
|
return
|
126
|
-
details_panel.current_run.
|
126
|
+
details_panel.current_run.resume_data = input
|
127
127
|
asyncio.create_task(self._execute_runtime(details_panel.current_run))
|
128
|
+
details_panel.switch_tab("run-tab")
|
128
129
|
|
129
130
|
async def action_execute_run(self) -> None:
|
130
131
|
"""Execute a new run with UiPath runtime."""
|
@@ -161,7 +162,6 @@ class UiPathDevTerminal(App[Any]):
|
|
161
162
|
try:
|
162
163
|
context: UiPathRuntimeContext = self.runtime_factory.new_context(
|
163
164
|
entrypoint=run.entrypoint,
|
164
|
-
input_json=run.input_data,
|
165
165
|
trace_id=str(uuid4()),
|
166
166
|
execution_id=run.id,
|
167
167
|
logs_min_level=env.get("LOG_LEVEL", "INFO"),
|
@@ -172,8 +172,10 @@ class UiPathDevTerminal(App[Any]):
|
|
172
172
|
|
173
173
|
if run.status == "suspended":
|
174
174
|
context.resume = True
|
175
|
+
context.input_json = run.resume_data
|
175
176
|
self._add_info_log(run, f"Resuming execution: {run.entrypoint}")
|
176
177
|
else:
|
178
|
+
context.input_json = run.input_data
|
177
179
|
self._add_info_log(run, f"Starting execution: {run.entrypoint}")
|
178
180
|
|
179
181
|
run.status = "running"
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import json
|
2
1
|
from typing import Dict, List, Optional
|
3
2
|
|
4
3
|
from textual.app import ComposeResult
|
@@ -29,14 +28,7 @@ class SpanDetailsDisplay(Container):
|
|
29
28
|
details_log = self.query_one("#span-details", RichLog)
|
30
29
|
details_log.clear()
|
31
30
|
|
32
|
-
# Format span details
|
33
31
|
details_log.write(f"[bold cyan]Span: {trace_msg.span_name}[/bold cyan]")
|
34
|
-
details_log.write(f"[dim]Trace ID: {trace_msg.trace_id}[/dim]")
|
35
|
-
details_log.write(f"[dim]Span ID: {trace_msg.span_id}[/dim]")
|
36
|
-
details_log.write(f"[dim]Run ID: {trace_msg.run_id}[/dim]")
|
37
|
-
|
38
|
-
if trace_msg.parent_span_id:
|
39
|
-
details_log.write(f"[dim]Parent Span: {trace_msg.parent_span_id}[/dim]")
|
40
32
|
|
41
33
|
details_log.write("") # Empty line
|
42
34
|
|
@@ -68,6 +60,16 @@ class SpanDetailsDisplay(Container):
|
|
68
60
|
for key, value in trace_msg.attributes.items():
|
69
61
|
details_log.write(f" {key}: {value}")
|
70
62
|
|
63
|
+
details_log.write("") # Empty line
|
64
|
+
|
65
|
+
# Format span details
|
66
|
+
details_log.write(f"[dim]Trace ID: {trace_msg.trace_id}[/dim]")
|
67
|
+
details_log.write(f"[dim]Span ID: {trace_msg.span_id}[/dim]")
|
68
|
+
details_log.write(f"[dim]Run ID: {trace_msg.run_id}[/dim]")
|
69
|
+
|
70
|
+
if trace_msg.parent_span_id:
|
71
|
+
details_log.write(f"[dim]Parent Span: {trace_msg.parent_span_id}[/dim]")
|
72
|
+
|
71
73
|
|
72
74
|
class RunDetailsPanel(Container):
|
73
75
|
"""Panel showing traces and logs for selected run with tabbed interface."""
|
@@ -144,10 +146,68 @@ class RunDetailsPanel(Container):
|
|
144
146
|
# Clear and rebuild traces tree using TraceMessage objects
|
145
147
|
self._rebuild_spans_tree()
|
146
148
|
|
149
|
+
def switch_tab(self, tab_id: str) -> None:
|
150
|
+
"""Switch to a specific tab by id (e.g. 'run-tab', 'traces-tab')."""
|
151
|
+
tabbed = self.query_one(TabbedContent)
|
152
|
+
tabbed.active = tab_id
|
153
|
+
|
147
154
|
def _update_resume_tab(self, run: ExecutionRun) -> None:
|
148
155
|
resume_panel = self.query_one("#resume-panel", ResumePanel)
|
149
156
|
resume_panel.display = run.status == "suspended"
|
150
157
|
|
158
|
+
def _flatten_values(self, value: object, prefix: str = "") -> list[str]:
|
159
|
+
"""Flatten nested dict/list structures into dot-notation paths."""
|
160
|
+
lines: list[str] = []
|
161
|
+
|
162
|
+
if value is None:
|
163
|
+
lines.append(f"{prefix}: [dim]—[/dim]" if prefix else "[dim]—[/dim]")
|
164
|
+
|
165
|
+
elif isinstance(value, dict):
|
166
|
+
if not value:
|
167
|
+
lines.append(f"{prefix}: {{}}" if prefix else "{}")
|
168
|
+
else:
|
169
|
+
for k, v in value.items():
|
170
|
+
new_prefix = f"{prefix}.{k}" if prefix else k
|
171
|
+
lines.extend(self._flatten_values(v, new_prefix))
|
172
|
+
|
173
|
+
elif isinstance(value, list):
|
174
|
+
if not value:
|
175
|
+
lines.append(f"{prefix}: []" if prefix else "[]")
|
176
|
+
else:
|
177
|
+
for i, item in enumerate(value):
|
178
|
+
new_prefix = f"{prefix}[{i}]"
|
179
|
+
lines.extend(self._flatten_values(item, new_prefix))
|
180
|
+
|
181
|
+
elif isinstance(value, str):
|
182
|
+
if prefix:
|
183
|
+
split_lines = value.splitlines()
|
184
|
+
if split_lines:
|
185
|
+
lines.append(f"{prefix}: {split_lines[0]}")
|
186
|
+
for line in split_lines[1:]:
|
187
|
+
lines.append(f"{' ' * 2}{line}")
|
188
|
+
else:
|
189
|
+
lines.extend(value.splitlines())
|
190
|
+
|
191
|
+
else:
|
192
|
+
if prefix:
|
193
|
+
lines.append(f"{prefix}: {value}")
|
194
|
+
else:
|
195
|
+
lines.append(str(value))
|
196
|
+
|
197
|
+
return lines
|
198
|
+
|
199
|
+
def _write_block(
|
200
|
+
self, log: RichLog, title: str, data: object, style: str = "white"
|
201
|
+
) -> None:
|
202
|
+
"""Pretty-print a block with flattened dot-notation paths."""
|
203
|
+
log.write(f"[bold {style}]{title.upper()}:[/bold {style}]")
|
204
|
+
log.write("[dim]" + "=" * 50 + "[/dim]")
|
205
|
+
|
206
|
+
for line in self._flatten_values(data):
|
207
|
+
log.write(line)
|
208
|
+
|
209
|
+
log.write("")
|
210
|
+
|
151
211
|
def _show_run_details(self, run: ExecutionRun):
|
152
212
|
"""Display detailed information about the run in the Details tab."""
|
153
213
|
self._update_resume_tab(run)
|
@@ -202,35 +262,16 @@ class RunDetailsPanel(Container):
|
|
202
262
|
|
203
263
|
run_details_log.write("")
|
204
264
|
|
205
|
-
|
206
|
-
|
207
|
-
run_details_log.write("[bold green]INPUT:[/bold green]")
|
208
|
-
run_details_log.write("[dim]" + "=" * 50 + "[/dim]")
|
209
|
-
|
210
|
-
# Handle different input types
|
211
|
-
if isinstance(run.input_data, str):
|
212
|
-
run_details_log.write(run.input_data)
|
213
|
-
elif isinstance(run.input_data, dict):
|
214
|
-
run_details_log.write(json.dumps(run.input_data, indent=2))
|
215
|
-
else:
|
216
|
-
run_details_log.write(str(run.input_data))
|
217
|
-
|
218
|
-
run_details_log.write("")
|
265
|
+
if hasattr(run, "input_data"):
|
266
|
+
self._write_block(run_details_log, "Input", run.input_data, style="green")
|
219
267
|
|
220
|
-
|
221
|
-
|
222
|
-
run_details_log.write("[bold magenta]OUTPUT:[/bold magenta]")
|
223
|
-
run_details_log.write("[dim]" + "=" * 50 + "[/dim]")
|
224
|
-
|
225
|
-
# Handle different output types
|
226
|
-
if isinstance(run.output_data, str):
|
227
|
-
run_details_log.write(run.output_data)
|
228
|
-
elif isinstance(run.output_data, dict):
|
229
|
-
run_details_log.write(json.dumps(run.output_data, indent=2))
|
230
|
-
else:
|
231
|
-
run_details_log.write(str(run.output_data))
|
268
|
+
if hasattr(run, "resume_data") and run.resume_data:
|
269
|
+
self._write_block(run_details_log, "Resume", run.resume_data, style="green")
|
232
270
|
|
233
|
-
|
271
|
+
if hasattr(run, "output_data"):
|
272
|
+
self._write_block(
|
273
|
+
run_details_log, "Output", run.output_data, style="magenta"
|
274
|
+
)
|
234
275
|
|
235
276
|
# Error section (if applicable)
|
236
277
|
if hasattr(run, "error") and run.error:
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import json
|
2
|
+
|
3
|
+
from textual.widgets import TextArea
|
4
|
+
|
5
|
+
|
6
|
+
class JsonInput(TextArea):
|
7
|
+
"""TextArea that validates JSON on change."""
|
8
|
+
|
9
|
+
def validate_json(self) -> bool:
|
10
|
+
text = self.text.strip()
|
11
|
+
if not text:
|
12
|
+
self.remove_class("invalid")
|
13
|
+
return True
|
14
|
+
try:
|
15
|
+
json.loads(text)
|
16
|
+
self.remove_class("invalid")
|
17
|
+
return True
|
18
|
+
except json.JSONDecodeError:
|
19
|
+
self.add_class("invalid")
|
20
|
+
return False
|
21
|
+
|
22
|
+
def on_text_area_changed(self, event: TextArea.Changed) -> None:
|
23
|
+
self.validate_json()
|
@@ -7,6 +7,8 @@ from textual.containers import Container, Horizontal, Vertical
|
|
7
7
|
from textual.reactive import reactive
|
8
8
|
from textual.widgets import Button, Select, TabbedContent, TabPane, TextArea
|
9
9
|
|
10
|
+
from ._json_input import JsonInput
|
11
|
+
|
10
12
|
|
11
13
|
def mock_json_from_schema(schema: Dict[str, Any]) -> Dict[str, Any]:
|
12
14
|
props = schema.get("properties", {})
|
@@ -74,7 +76,7 @@ class NewRunPanel(Container):
|
|
74
76
|
allow_blank=False,
|
75
77
|
)
|
76
78
|
|
77
|
-
yield
|
79
|
+
yield JsonInput(
|
78
80
|
text=self.initial_input,
|
79
81
|
language="json",
|
80
82
|
id="json-input",
|
@@ -1,7 +1,11 @@
|
|
1
|
+
import json
|
2
|
+
|
1
3
|
from textual.app import ComposeResult
|
2
4
|
from textual.containers import Container, Horizontal, Vertical
|
3
5
|
from textual.widgets import Button, TextArea
|
4
6
|
|
7
|
+
from ._json_input import JsonInput
|
8
|
+
|
5
9
|
|
6
10
|
class ResumePanel(Container):
|
7
11
|
"""Panel for resuming a suspended run."""
|
@@ -11,8 +15,8 @@ class ResumePanel(Container):
|
|
11
15
|
|
12
16
|
def compose(self) -> ComposeResult:
|
13
17
|
with Vertical():
|
14
|
-
yield
|
15
|
-
text="
|
18
|
+
yield JsonInput(
|
19
|
+
text=json.dumps({"value": ""}, indent=2),
|
16
20
|
language="json",
|
17
21
|
id="resume-json-input",
|
18
22
|
classes="input-field json-input",
|
@@ -16,6 +16,7 @@ class ExecutionRun:
|
|
16
16
|
self.id = str(uuid4())[:8]
|
17
17
|
self.entrypoint = entrypoint
|
18
18
|
self.input_data = input_data
|
19
|
+
self.resume_data: Optional[Dict[str, Any]] = None
|
19
20
|
self.output_data: Optional[Dict[str, Any]] = None
|
20
21
|
self.start_time = datetime.now()
|
21
22
|
self.end_time: Optional[datetime] = None
|
@@ -22,6 +22,11 @@ Screen {
|
|
22
22
|
color: #ffaa00;
|
23
23
|
}
|
24
24
|
|
25
|
+
.run-suspended {
|
26
|
+
border-left: solid #00FFFF;
|
27
|
+
color: #e0e0e0;
|
28
|
+
}
|
29
|
+
|
25
30
|
.run-completed {
|
26
31
|
border-left: solid #00ff88;
|
27
32
|
color: #e0e0e0;
|
@@ -213,3 +218,7 @@ SpanDetailsDisplay {
|
|
213
218
|
text-style: bold;
|
214
219
|
border: none;
|
215
220
|
}
|
221
|
+
|
222
|
+
TextArea.invalid {
|
223
|
+
border: tall red;
|
224
|
+
}
|
@@ -68,7 +68,7 @@ def get_project_config(directory: str) -> dict[str, str]:
|
|
68
68
|
"version": toml_data["version"],
|
69
69
|
"authors": toml_data["authors"],
|
70
70
|
"dependencies": toml_data.get("dependencies", {}),
|
71
|
-
"requires-python": toml_data.get("requires-python",
|
71
|
+
"requires-python": toml_data.get("requires-python", None),
|
72
72
|
}
|
73
73
|
|
74
74
|
|
@@ -104,14 +104,15 @@ def validate_config(config: dict[str, str]) -> None:
|
|
104
104
|
)
|
105
105
|
|
106
106
|
invalid_chars = ["&", "<", ">", '"', "'", ";"]
|
107
|
-
for char in invalid_chars:
|
108
|
-
if char in config["project_name"]:
|
109
|
-
console.error(f"Project name contains invalid character: '{char}'")
|
110
|
-
|
111
107
|
for char in invalid_chars:
|
112
108
|
if char in config["description"]:
|
113
109
|
console.error(f"Project description contains invalid character: '{char}'")
|
114
110
|
|
111
|
+
invalid_chars += [" "]
|
112
|
+
for char in invalid_chars:
|
113
|
+
if char in config["project_name"]:
|
114
|
+
console.error(f"Project name contains invalid character: '{char}'")
|
115
|
+
|
115
116
|
|
116
117
|
def validate_config_structure(config_data: dict[str, Any]) -> None:
|
117
118
|
"""Validate the structure of uipath.json configuration.
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import asyncio
|
2
|
+
from typing import Optional
|
3
|
+
|
4
|
+
import click
|
5
|
+
|
6
|
+
from ..telemetry import track
|
7
|
+
from ._dev._terminal import UiPathDevTerminal
|
8
|
+
from ._runtime._contracts import UiPathRuntimeContext, UiPathRuntimeFactory
|
9
|
+
from ._runtime._runtime import UiPathRuntime
|
10
|
+
from ._utils._console import ConsoleLogger
|
11
|
+
from .middlewares import Middlewares
|
12
|
+
|
13
|
+
console = ConsoleLogger()
|
14
|
+
|
15
|
+
|
16
|
+
@click.command()
|
17
|
+
@click.argument("interface", default="terminal")
|
18
|
+
@track
|
19
|
+
def dev(interface: Optional[str]) -> None:
|
20
|
+
"""Launch interactive debugging interface."""
|
21
|
+
with console.spinner("Launching UiPath debugging terminal ..."):
|
22
|
+
result = Middlewares.next(
|
23
|
+
"dev",
|
24
|
+
interface,
|
25
|
+
)
|
26
|
+
|
27
|
+
if result.should_continue is False:
|
28
|
+
return
|
29
|
+
|
30
|
+
try:
|
31
|
+
if interface == "terminal":
|
32
|
+
runtime_factory = UiPathRuntimeFactory(
|
33
|
+
UiPathRuntime, UiPathRuntimeContext
|
34
|
+
)
|
35
|
+
app = UiPathDevTerminal(runtime_factory)
|
36
|
+
asyncio.run(app.run_async())
|
37
|
+
else:
|
38
|
+
console.error(f"Unknown interface: {interface}")
|
39
|
+
except KeyboardInterrupt:
|
40
|
+
console.info("Debug session interrupted by user")
|
41
|
+
except Exception as e:
|
42
|
+
console.error(
|
43
|
+
f"Error running debug interface: {str(e)}", include_traceback=True
|
44
|
+
)
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import asyncio
|
2
|
-
from typing import Optional
|
3
|
-
|
4
|
-
import click
|
5
|
-
|
6
|
-
from ..telemetry import track
|
7
|
-
from ._dev._terminal import UiPathDevTerminal
|
8
|
-
from ._runtime._contracts import UiPathRuntimeContext, UiPathRuntimeFactory
|
9
|
-
from ._runtime._runtime import UiPathRuntime
|
10
|
-
from ._utils._console import ConsoleLogger
|
11
|
-
from .middlewares import Middlewares
|
12
|
-
|
13
|
-
console = ConsoleLogger()
|
14
|
-
|
15
|
-
|
16
|
-
@click.command()
|
17
|
-
@click.argument("interface", default="terminal")
|
18
|
-
@track
|
19
|
-
def dev(interface: Optional[str]) -> None:
|
20
|
-
"""Launch interactive debugging interface."""
|
21
|
-
console.info("🚀 Starting UiPath Dev Terminal...")
|
22
|
-
console.info("Use 'q' to quit, 'n' for new run, 'r' to execute")
|
23
|
-
|
24
|
-
result = Middlewares.next(
|
25
|
-
"dev",
|
26
|
-
interface,
|
27
|
-
)
|
28
|
-
|
29
|
-
if result.should_continue is False:
|
30
|
-
return
|
31
|
-
|
32
|
-
try:
|
33
|
-
if interface == "terminal":
|
34
|
-
runtime_factory = UiPathRuntimeFactory(UiPathRuntime, UiPathRuntimeContext)
|
35
|
-
app = UiPathDevTerminal(runtime_factory)
|
36
|
-
asyncio.run(app.run_async())
|
37
|
-
else:
|
38
|
-
console.error(f"Unknown interface: {interface}")
|
39
|
-
except KeyboardInterrupt:
|
40
|
-
console.info("Debug session interrupted by user")
|
41
|
-
except Exception as e:
|
42
|
-
console.error(
|
43
|
-
f"Error running debug interface: {str(e)}", include_traceback=True
|
44
|
-
)
|
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
|