uipath-langchain 0.0.142__tar.gz → 0.0.143__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of uipath-langchain might be problematic. Click here for more details.
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/PKG-INFO +2 -2
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/pyproject.toml +2 -2
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/cli_debug.py +5 -2
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/cli_eval.py +5 -3
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/cli_run.py +15 -3
- uipath_langchain-0.0.143/src/uipath_langchain/_tracing/__init__.py +5 -0
- uipath_langchain-0.0.143/testcases/common/trace_assert.py +130 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/common/validate_output.sh +13 -9
- uipath_langchain-0.0.143/testcases/company-research-agent/expected_raw.json +861 -0
- uipath_langchain-0.0.143/testcases/company-research-agent/expected_traces.json +41 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/company-research-agent/run.sh +1 -1
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/company-research-agent/src/assert.py +4 -1
- uipath_langchain-0.0.143/testcases/init-flow/expected_traces.json +32 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/init-flow/run.sh +1 -1
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/init-flow/src/assert.py +5 -1
- uipath_langchain-0.0.143/testcases/simple-local-mcp/expected_traces.json +42 -0
- uipath_langchain-0.0.143/testcases/simple-local-mcp/input.json +12 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/run.sh +1 -1
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/src/assert.py +5 -1
- uipath_langchain-0.0.143/testcases/ticket-classification/expected_traces.json +32 -0
- uipath_langchain-0.0.143/testcases/ticket-classification/raw_traces.jsonl +462 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/ticket-classification/run.sh +2 -2
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/ticket-classification/src/assert.py +4 -1
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/uv.lock +131 -133
- uipath_langchain-0.0.142/src/uipath_langchain/_tracing/__init__.py +0 -4
- uipath_langchain-0.0.142/src/uipath_langchain/_tracing/_oteladapter.py +0 -234
- uipath_langchain-0.0.142/testcases/simple-local-mcp/input.json +0 -1
- uipath_langchain-0.0.142/tests/tracing/test_oteladapter.py +0 -260
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.cursorrules +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.editorconfig +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.gitattributes +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/cd.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/ci.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/commitlint.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/integration_tests.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/lint-custom-version.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/lint.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/publish-dev.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/publish-docs.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/publish-prior-stable-version.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/slack.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/test-custom-version.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.github/workflows/test.yml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.gitignore +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.pre-commit-config.yaml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.python-version +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.vscode/extensions.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/.vscode/settings.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/CONTRIBUTING.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/LICENSE +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/chat_models.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/context_grounding.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/human_in_the_loop.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/quick_start.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/quick_start_images/cloud_env_var_dark.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/quick_start_images/cloud_env_var_light.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/quick_start_images/invoke_output_dark.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/quick_start_images/invoke_output_light.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/click-storage-bucket.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/create-index-1.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/create-index-2.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/create-process.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/create-quiz-generator.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/create-storage-bucket-1.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/create-storage-bucket-2.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/folder-path.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/job-info.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/output.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/process-page.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/researcher-1.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/researcher-2.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/run-process-1.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/run-process-2.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/RAG/storage-bucket-content.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/multi-agent-distributed/coder-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/multi-agent-distributed/coder-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/multi-agent-distributed/planner-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/multi-agent-distributed/planner-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/multi-agent-distributed/researcher-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/multi-agent-distributed/researcher-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/activate-apps.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/activate-deployment.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/copy-folder-path.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/deploy-solution-package-wizard.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/deploy-solution-package.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/monitor-agent.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/navigate-to-solution-folder.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/resume-condition.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/run-agent.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/solution-destination-folder.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/start-job.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/docs/sample_images/ticket-classification/upload-solution-package.png +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/input.example/quiz-generator-debug-input.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/input.example/researcher-debug-input.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/quiz-generator-RAG-agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/researcher-RAG-agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/src/agents/quiz-generator-RAG-agent.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/src/agents/researcher-RAG-agent.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/RAG-quiz-generator/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/calculator-agent/graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/calculator-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/calculator-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/calculator-agent/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/calculator-agent/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/chat-agent/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/chat-agent/agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/chat-agent/graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/chat-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/chat-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/chat-agent/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/chat-agent/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/company-research-agent/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/company-research-agent/agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/company-research-agent/graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/company-research-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/company-research-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/company-research-agent/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/company-research-agent/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/.env.template +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/.python-version +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/.vscode/launch.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/input.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/src/email_organizer/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/src/email_organizer/main.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/src/email_organizer/outlook_client.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/email-organizer-agent/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/hitl-inbox-server/database.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/hitl-inbox-server/main.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/hitl-inbox-server/models.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/hitl-inbox-server/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/hitl-inbox-server/schemas.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/hitl-inbox-server/templates/index.html +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/hitl-inbox-server/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/coder.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/planner.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/researcher.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/coder.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/planner.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/researcher.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-planner-researcher-coder-distributed/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/oauth-external-apps-agent/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/oauth-external-apps-agent/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/oauth-external-apps-agent/input.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/oauth-external-apps-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/oauth-external-apps-agent/main.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/oauth-external-apps-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/oauth-external-apps-agent/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/retrieval-chain/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/retrieval-chain/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/retrieval-chain/main.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/retrieval-chain/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/retrieval-chain/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/retrieval-chain/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-local-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/main.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/simple-remote-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/.env.example +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/README.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/agent.mermaid +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/main.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/samples/ticket-classification/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_runtime/_context.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_runtime/_conversation.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_runtime/_exception.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_runtime/_graph_resolver.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_runtime/_input.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_runtime/_output.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_runtime/_runtime.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_templates/langgraph.json.template +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_templates/main.py.template +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/_utils/_graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/cli_dev.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/cli_init.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/cli_new.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_resources/AGENTS.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_resources/REQUIRED_STRUCTURE.md +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_tracing/_instrument_traceable.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_tracing/_utils.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_utils/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_utils/_request_mixin.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_utils/_settings.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_utils/_sleep_policy.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/chat/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/chat/models.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/embeddings/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/embeddings/embeddings.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/middlewares.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/py.typed +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/retrievers/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/retrievers/context_grounding_retriever.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/tools/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/tools/preconfigured.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/vectorstores/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/vectorstores/context_grounding_vectorstore.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/company-research-agent/input.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/company-research-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/company-research-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/company-research-agent/src/graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/company-research-agent/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/init-flow/input.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/init-flow/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/simple-local-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/ticket-classification/input.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/ticket-classification/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/ticket-classification/pyproject.toml +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/ticket-classification/src/main.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/testcases/ticket-classification/uv.lock +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/cli/conftest.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/cli/mocks/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/cli/mocks/simple_agent.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/cli/mocks/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/cli/test_init.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/cli/test_run.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/conftest.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/mocks/action_trigger_hitl.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/mocks/api_trigger_hitl.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/mocks/job_trigger_hitl.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/mocks/langgraph.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/mocks/uipath-default-escalation.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/mocks/uipath.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/test_action_trigger.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/test_hitl_api_trigger.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/test_hitl_default_escalation.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/hitl/test_hitl_job_trigger.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/test_dummy.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/tools/__init__.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/tools/conftest.py +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/tools/mocks/agent_definition.json +0 -0
- {uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/tests/tools/test_preconfigured.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: uipath-langchain
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.143
|
|
4
4
|
Summary: UiPath Langchain
|
|
5
5
|
Project-URL: Homepage, https://uipath.com
|
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/uipath-langchain-python
|
|
@@ -26,7 +26,7 @@ Requires-Dist: openai>=1.65.5
|
|
|
26
26
|
Requires-Dist: openinference-instrumentation-langchain>=0.1.50
|
|
27
27
|
Requires-Dist: pydantic-settings>=2.6.0
|
|
28
28
|
Requires-Dist: python-dotenv>=1.0.1
|
|
29
|
-
Requires-Dist: uipath<2.2.0,>=2.1.
|
|
29
|
+
Requires-Dist: uipath<2.2.0,>=2.1.103
|
|
30
30
|
Provides-Extra: langchain
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "uipath-langchain"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.143"
|
|
4
4
|
description = "UiPath Langchain"
|
|
5
5
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
dependencies = [
|
|
8
|
-
"uipath>=2.1.
|
|
8
|
+
"uipath>=2.1.103, <2.2.0",
|
|
9
9
|
"langgraph>=0.5.0, <0.7.0",
|
|
10
10
|
"langchain-core>=0.3.34",
|
|
11
11
|
"langgraph-checkpoint-sqlite>=2.0.3",
|
{uipath_langchain-0.0.142 → uipath_langchain-0.0.143}/src/uipath_langchain/_cli/cli_debug.py
RENAMED
|
@@ -12,8 +12,9 @@ from uipath._cli._runtime._contracts import (
|
|
|
12
12
|
UiPathRuntimeFactory,
|
|
13
13
|
)
|
|
14
14
|
from uipath._cli.middlewares import MiddlewareResult
|
|
15
|
+
from uipath.tracing import LlmOpsHttpExporter
|
|
15
16
|
|
|
16
|
-
from .._tracing import
|
|
17
|
+
from .._tracing import _instrument_traceable_attributes
|
|
17
18
|
from ._runtime._exception import LangGraphRuntimeError
|
|
18
19
|
from ._runtime._runtime import ( # type: ignore[attr-defined]
|
|
19
20
|
LangGraphRuntimeContext,
|
|
@@ -61,7 +62,9 @@ def langgraph_debug_middleware(
|
|
|
61
62
|
)
|
|
62
63
|
|
|
63
64
|
if context.job_id:
|
|
64
|
-
runtime_factory.add_span_exporter(
|
|
65
|
+
runtime_factory.add_span_exporter(
|
|
66
|
+
LlmOpsHttpExporter(extra_process_spans=True)
|
|
67
|
+
)
|
|
65
68
|
|
|
66
69
|
runtime_factory.add_instrumentor(LangChainInstrumentor, get_current_span)
|
|
67
70
|
|
|
@@ -15,12 +15,12 @@ from uipath._cli._utils._eval_set import EvalHelpers
|
|
|
15
15
|
from uipath._cli.middlewares import MiddlewareResult
|
|
16
16
|
from uipath._events._event_bus import EventBus
|
|
17
17
|
from uipath.eval._helpers import auto_discover_entrypoint
|
|
18
|
+
from uipath.tracing import LlmOpsHttpExporter
|
|
18
19
|
|
|
19
20
|
from uipath_langchain._cli._runtime._context import LangGraphRuntimeContext
|
|
20
21
|
from uipath_langchain._cli._runtime._runtime import LangGraphScriptRuntime
|
|
21
22
|
from uipath_langchain._cli._utils._graph import LangGraphConfig
|
|
22
23
|
from uipath_langchain._tracing import (
|
|
23
|
-
LangChainExporter,
|
|
24
24
|
_instrument_traceable_attributes,
|
|
25
25
|
)
|
|
26
26
|
|
|
@@ -41,7 +41,7 @@ def langgraph_eval_middleware(
|
|
|
41
41
|
|
|
42
42
|
if kwargs.get("register_progress_reporter", False):
|
|
43
43
|
progress_reporter = StudioWebProgressReporter(
|
|
44
|
-
spans_exporter=
|
|
44
|
+
spans_exporter=LlmOpsHttpExporter(extra_process_spans=True)
|
|
45
45
|
)
|
|
46
46
|
asyncio.run(progress_reporter.subscribe_to_eval_runtime_events(event_bus))
|
|
47
47
|
console_reporter = ConsoleProgressReporter()
|
|
@@ -76,7 +76,9 @@ def langgraph_eval_middleware(
|
|
|
76
76
|
)
|
|
77
77
|
|
|
78
78
|
if eval_context.job_id:
|
|
79
|
-
runtime_factory.add_span_exporter(
|
|
79
|
+
runtime_factory.add_span_exporter(
|
|
80
|
+
LlmOpsHttpExporter(extra_process_spans=True)
|
|
81
|
+
)
|
|
80
82
|
|
|
81
83
|
runtime_factory.add_instrumentor(LangChainInstrumentor, get_current_span)
|
|
82
84
|
|
|
@@ -13,8 +13,11 @@ from uipath._cli._runtime._contracts import (
|
|
|
13
13
|
)
|
|
14
14
|
from uipath._cli.middlewares import MiddlewareResult
|
|
15
15
|
from uipath._events._events import UiPathAgentStateEvent
|
|
16
|
+
from uipath.tracing import JsonLinesFileExporter, LlmOpsHttpExporter
|
|
16
17
|
|
|
17
|
-
from .._tracing import
|
|
18
|
+
from .._tracing import (
|
|
19
|
+
_instrument_traceable_attributes,
|
|
20
|
+
)
|
|
18
21
|
from ._runtime._exception import LangGraphRuntimeError
|
|
19
22
|
from ._runtime._runtime import ( # type: ignore[attr-defined]
|
|
20
23
|
LangGraphRuntimeContext,
|
|
@@ -24,7 +27,11 @@ from ._utils._graph import LangGraphConfig
|
|
|
24
27
|
|
|
25
28
|
|
|
26
29
|
def langgraph_run_middleware(
|
|
27
|
-
entrypoint: Optional[str],
|
|
30
|
+
entrypoint: Optional[str],
|
|
31
|
+
input: Optional[str],
|
|
32
|
+
resume: bool,
|
|
33
|
+
trace_file: Optional[str] = None,
|
|
34
|
+
**kwargs,
|
|
28
35
|
) -> MiddlewareResult:
|
|
29
36
|
"""Middleware to handle LangGraph execution"""
|
|
30
37
|
config = LangGraphConfig()
|
|
@@ -61,8 +68,13 @@ def langgraph_run_middleware(
|
|
|
61
68
|
|
|
62
69
|
runtime_factory.add_instrumentor(LangChainInstrumentor, get_current_span)
|
|
63
70
|
|
|
71
|
+
if trace_file:
|
|
72
|
+
runtime_factory.add_span_exporter(JsonLinesFileExporter(trace_file))
|
|
73
|
+
|
|
64
74
|
if context.job_id:
|
|
65
|
-
runtime_factory.add_span_exporter(
|
|
75
|
+
runtime_factory.add_span_exporter(
|
|
76
|
+
LlmOpsHttpExporter(extra_process_spans=True)
|
|
77
|
+
)
|
|
66
78
|
await runtime_factory.execute(context)
|
|
67
79
|
else:
|
|
68
80
|
debug_bridge: UiPathDebugBridge = ConsoleDebugBridge()
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Simple trace assertion - just check that expected spans exist with required attributes.
|
|
3
|
+
Much simpler than the tree-based approach.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import json
|
|
7
|
+
from typing import List, Dict, Any
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def load_traces(traces_file: str) -> List[Dict[str, Any]]:
|
|
11
|
+
"""Load traces from a JSONL file."""
|
|
12
|
+
traces = []
|
|
13
|
+
with open(traces_file, 'r', encoding='utf-8') as f:
|
|
14
|
+
for line in f:
|
|
15
|
+
if line.strip():
|
|
16
|
+
traces.append(json.loads(line))
|
|
17
|
+
return traces
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def load_expected_traces(expected_file: str) -> List[Dict[str, Any]]:
|
|
21
|
+
"""Load expected trace definitions from a JSON file."""
|
|
22
|
+
with open(expected_file, 'r', encoding='utf-8') as f:
|
|
23
|
+
data = json.load(f)
|
|
24
|
+
return data.get('required_spans', [])
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_attributes(span: Dict[str, Any]) -> Dict[str, Any]:
|
|
28
|
+
"""Parse attributes from a span."""
|
|
29
|
+
attributes_str = span.get('Attributes', '{}')
|
|
30
|
+
try:
|
|
31
|
+
return json.loads(attributes_str)
|
|
32
|
+
except json.JSONDecodeError:
|
|
33
|
+
return {}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def matches_value(expected_value: Any, actual_value: Any) -> bool:
|
|
37
|
+
"""
|
|
38
|
+
Check if an actual value matches the expected value.
|
|
39
|
+
|
|
40
|
+
Supports:
|
|
41
|
+
- List of possible values: ["value1", "value2"]
|
|
42
|
+
- Wildcard: "*" (any value accepted)
|
|
43
|
+
- Exact match: "value"
|
|
44
|
+
"""
|
|
45
|
+
# Wildcard - accept any value
|
|
46
|
+
if expected_value == "*":
|
|
47
|
+
return True
|
|
48
|
+
|
|
49
|
+
# List of possible values
|
|
50
|
+
if isinstance(expected_value, list):
|
|
51
|
+
return actual_value in expected_value
|
|
52
|
+
|
|
53
|
+
# Exact match
|
|
54
|
+
return expected_value == actual_value
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def matches_expected(span: Dict[str, Any], expected: Dict[str, Any]) -> bool:
|
|
58
|
+
"""Check if a span matches the expected definition."""
|
|
59
|
+
# Check name - can be a string or list of possible names
|
|
60
|
+
expected_name = expected.get('name')
|
|
61
|
+
actual_name = span.get('Name')
|
|
62
|
+
|
|
63
|
+
if isinstance(expected_name, list):
|
|
64
|
+
if actual_name not in expected_name:
|
|
65
|
+
return False
|
|
66
|
+
elif expected_name != actual_name:
|
|
67
|
+
return False
|
|
68
|
+
|
|
69
|
+
# Check span type if specified
|
|
70
|
+
if 'span_type' in expected:
|
|
71
|
+
if span.get('SpanType') != expected['span_type']:
|
|
72
|
+
return False
|
|
73
|
+
|
|
74
|
+
# Check attributes if specified
|
|
75
|
+
if 'attributes' in expected:
|
|
76
|
+
actual_attrs = get_attributes(span)
|
|
77
|
+
for key, expected_value in expected['attributes'].items():
|
|
78
|
+
if key not in actual_attrs:
|
|
79
|
+
return False
|
|
80
|
+
# Use flexible value matching
|
|
81
|
+
if not matches_value(expected_value, actual_attrs[key]):
|
|
82
|
+
return False
|
|
83
|
+
|
|
84
|
+
return True
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def assert_traces(traces_file: str, expected_file: str) -> None:
|
|
88
|
+
"""
|
|
89
|
+
Assert that all expected traces exist in the traces file.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
traces_file: Path to the traces.jsonl file
|
|
93
|
+
expected_file: Path to the expected_traces.json file
|
|
94
|
+
|
|
95
|
+
Raises:
|
|
96
|
+
AssertionError: If any expected trace is not found
|
|
97
|
+
"""
|
|
98
|
+
traces = load_traces(traces_file)
|
|
99
|
+
expected_spans = load_expected_traces(expected_file)
|
|
100
|
+
|
|
101
|
+
print(f"Loaded {len(traces)} traces from {traces_file}")
|
|
102
|
+
print(f"Checking {len(expected_spans)} expected spans...")
|
|
103
|
+
|
|
104
|
+
missing_spans = []
|
|
105
|
+
|
|
106
|
+
for expected in expected_spans:
|
|
107
|
+
# Find a matching span
|
|
108
|
+
found = False
|
|
109
|
+
for span in traces:
|
|
110
|
+
if matches_expected(span, expected):
|
|
111
|
+
found = True
|
|
112
|
+
print(f"✓ Found span: {expected['name']}")
|
|
113
|
+
break
|
|
114
|
+
|
|
115
|
+
if not found:
|
|
116
|
+
missing_spans.append(expected['name'])
|
|
117
|
+
print(f"✗ Missing span: {expected['name']}")
|
|
118
|
+
|
|
119
|
+
if missing_spans:
|
|
120
|
+
raise AssertionError(
|
|
121
|
+
f"Missing expected spans: {', '.join(missing_spans)}\n"
|
|
122
|
+
f"Expected {len(expected_spans)} spans, found {len(expected_spans) - len(missing_spans)}"
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
print(f"\n✓ All {len(expected_spans)} expected spans found!")
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
if __name__ == "__main__":
|
|
129
|
+
# Example usage
|
|
130
|
+
assert_traces(".uipath/traces.jsonl", "expected_traces.json")
|
|
@@ -22,14 +22,18 @@ debug_print_uipath_output() {
|
|
|
22
22
|
fi
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
# Run assertions from the testcase's src directory
|
|
26
|
+
run_assertions() {
|
|
27
|
+
echo "Running assertions..."
|
|
28
|
+
if [ -f "src/assert.py" ]; then
|
|
29
|
+
# Use the Python from the virtual environment
|
|
30
|
+
# Prepend the common directory to the python path so it can be resolved
|
|
31
|
+
PYTHONPATH="../common:$PYTHONPATH" python src/assert.py
|
|
32
|
+
else
|
|
33
|
+
echo "assert.py not found in src directory!"
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
debug_print_uipath_output
|
|
39
|
+
run_assertions
|