alita-sdk 0.3.345__tar.gz → 0.3.347__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 alita-sdk might be problematic. Click here for more details.
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/PKG-INFO +1 -1
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/clients/client.py +6 -1
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +9 -8
- alita_sdk-0.3.347/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +30 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/artifact.py +41 -5
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/figma/api_wrapper.py +1 -1
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/github/github_client.py +1 -1
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/testrail/api_wrapper.py +138 -55
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/pyproject.toml +1 -1
- alita_sdk-0.3.345/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -17
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/LICENSE +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/README.md +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/browser.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/carrier.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/google_places.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/report_portal.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/salesforce.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/sharepoint.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/sonar.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/sql.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/testio.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/configurations/zephyr_essential.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/graph.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/sandbox.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/tools/vectorstore_base.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/base_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/setup.cfg +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.345 → alita_sdk-0.3.347}/tests/test_jira_analysis.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.347
|
|
4
4
|
Summary: SDK for building langchain agents using resources from Alita
|
|
5
5
|
Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -85,7 +85,12 @@ class AlitaClient:
|
|
|
85
85
|
# This loop iterates over each key-value pair in the arguments dictionary,
|
|
86
86
|
# and if a value is a Pydantic object, it replaces it with its dictionary representation using .dict().
|
|
87
87
|
for arg_name, arg_value in params.get('params', {}).get('arguments', {}).items():
|
|
88
|
-
if
|
|
88
|
+
if isinstance(arg_value, list):
|
|
89
|
+
params['params']['arguments'][arg_name] = [
|
|
90
|
+
item.dict() if hasattr(item, "dict") and callable(item.dict) else item
|
|
91
|
+
for item in arg_value
|
|
92
|
+
]
|
|
93
|
+
elif hasattr(arg_value, "dict") and callable(arg_value.dict):
|
|
89
94
|
params['params']['arguments'][arg_name] = arg_value.dict()
|
|
90
95
|
#
|
|
91
96
|
response = requests.post(url, headers=self.headers, json=params, verify=False)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pymupdf
|
|
2
2
|
import fitz
|
|
3
|
-
from langchain_community.document_loaders import
|
|
3
|
+
from langchain_community.document_loaders import PyPDFium2Loader
|
|
4
4
|
|
|
5
5
|
from .ImageParser import ImageParser
|
|
6
6
|
from .utils import perform_llm_prediction_for_image_bytes, create_temp_file
|
|
@@ -23,6 +23,7 @@ class AlitaPDFLoader:
|
|
|
23
23
|
self.headers = kwargs.get('headers', None)
|
|
24
24
|
self.extraction_mode = kwargs.get('extraction_mode', "plain")
|
|
25
25
|
self.extraction_kwargs = kwargs.get('extraction_kwargs', None)
|
|
26
|
+
self.images_parser=ImageParser(llm=self.llm, prompt=self.prompt)
|
|
26
27
|
|
|
27
28
|
def get_content(self):
|
|
28
29
|
if hasattr(self, 'file_path'):
|
|
@@ -119,13 +120,13 @@ class AlitaPDFLoader:
|
|
|
119
120
|
return self._load_docs()
|
|
120
121
|
|
|
121
122
|
def _load_docs(self):
|
|
122
|
-
docs =
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
123
|
+
docs = PyPDFium2Loader(
|
|
124
|
+
file_path = self.file_path,
|
|
125
|
+
password=self.password,
|
|
126
|
+
headers=self.headers,
|
|
127
|
+
extract_images = self.extract_images,
|
|
128
|
+
images_parser = ImageParser(llm=self.llm, prompt=self.prompt),
|
|
129
|
+
).load()
|
|
129
130
|
for doc in docs:
|
|
130
131
|
doc.metadata['chunk_id'] = doc.metadata['page']
|
|
131
132
|
return docs
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from typing import Iterator
|
|
2
|
+
|
|
3
|
+
from langchain_community.document_loaders.parsers.images import BaseImageBlobParser
|
|
4
|
+
from langchain_core.documents import Document
|
|
5
|
+
from langchain_core.documents.base import Blob
|
|
6
|
+
|
|
7
|
+
from alita_sdk.runtime.langchain.document_loaders.AlitaImageLoader import AlitaImageLoader
|
|
8
|
+
|
|
9
|
+
class ImageParser(BaseImageBlobParser):
|
|
10
|
+
|
|
11
|
+
def __init__(self, **kwargs):
|
|
12
|
+
self.llm = kwargs.get('llm')
|
|
13
|
+
self.prompt = kwargs.get('prompt')
|
|
14
|
+
|
|
15
|
+
def lazy_parse(self, blob: Blob) -> Iterator[Document]:
|
|
16
|
+
try:
|
|
17
|
+
yield from super().lazy_parse(blob)
|
|
18
|
+
except Exception:
|
|
19
|
+
yield Document(page_content="[Image: Unknown]")
|
|
20
|
+
|
|
21
|
+
def _analyze_image(self, img) -> str:
|
|
22
|
+
from io import BytesIO
|
|
23
|
+
|
|
24
|
+
byte_stream = BytesIO()
|
|
25
|
+
img.save(byte_stream, format='PNG')
|
|
26
|
+
image_bytes = byte_stream.getvalue()
|
|
27
|
+
try:
|
|
28
|
+
return AlitaImageLoader(file_content=image_bytes, file_name="image.png", prompt=self.prompt, llm=self.llm).get_content()
|
|
29
|
+
except Exception:
|
|
30
|
+
return "Image: unknown"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import hashlib
|
|
2
|
-
import json
|
|
3
2
|
import logging
|
|
4
|
-
|
|
3
|
+
import re
|
|
4
|
+
from typing import Any, Optional, Generator, List
|
|
5
5
|
|
|
6
6
|
from langchain_core.documents import Document
|
|
7
7
|
from langchain_core.tools import ToolException
|
|
@@ -59,18 +59,54 @@ class ArtifactWrapper(NonCodeIndexerToolkit):
|
|
|
59
59
|
def create_new_bucket(self, bucket_name: str, expiration_measure = "weeks", expiration_value = 1):
|
|
60
60
|
return self.artifact.client.create_bucket(bucket_name, expiration_measure, expiration_value)
|
|
61
61
|
|
|
62
|
+
def _index_tool_params(self):
|
|
63
|
+
return {
|
|
64
|
+
'include_extensions': (Optional[List[str]], Field(
|
|
65
|
+
description="List of file extensions to include when processing: i.e. ['*.png', '*.jpg']. "
|
|
66
|
+
"If empty, all files will be processed (except skip_extensions).",
|
|
67
|
+
default=[])),
|
|
68
|
+
'skip_extensions': (Optional[List[str]], Field(
|
|
69
|
+
description="List of file extensions to skip when processing: i.e. ['*.png', '*.jpg']",
|
|
70
|
+
default=[])),
|
|
71
|
+
}
|
|
72
|
+
|
|
62
73
|
def _base_loader(self, **kwargs) -> Generator[Document, None, None]:
|
|
74
|
+
self._log_tool_event(message=f"Loading the files from artifact's bucket. {kwargs=}", tool_name="loader")
|
|
63
75
|
try:
|
|
64
|
-
all_files = self.list_files(self.bucket, False)
|
|
76
|
+
all_files = self.list_files(self.bucket, False)['rows']
|
|
65
77
|
except Exception as e:
|
|
66
78
|
raise ToolException(f"Unable to extract files: {e}")
|
|
67
79
|
|
|
68
|
-
|
|
80
|
+
include_extensions = kwargs.get('include_extensions', [])
|
|
81
|
+
skip_extensions = kwargs.get('skip_extensions', [])
|
|
82
|
+
self._log_tool_event(message=f"Files filtering started. Include extensions: {include_extensions}. "
|
|
83
|
+
f"Skip extensions: {skip_extensions}", tool_name="loader")
|
|
84
|
+
# show the progress of filtering
|
|
85
|
+
total_files = len(all_files) if isinstance(all_files, list) else 0
|
|
86
|
+
filtered_files_count = 0
|
|
87
|
+
for file in all_files:
|
|
88
|
+
filtered_files_count += 1
|
|
89
|
+
if filtered_files_count % 10 == 0 or filtered_files_count == total_files:
|
|
90
|
+
self._log_tool_event(message=f"Files filtering progress: {filtered_files_count}/{total_files}",
|
|
91
|
+
tool_name="loader")
|
|
92
|
+
file_name = file['name']
|
|
93
|
+
|
|
94
|
+
# Check if file should be skipped based on skip_extensions
|
|
95
|
+
if any(re.match(pattern.replace('*', '.*') + '$', file_name, re.IGNORECASE)
|
|
96
|
+
for pattern in skip_extensions):
|
|
97
|
+
continue
|
|
98
|
+
|
|
99
|
+
# Check if file should be included based on include_extensions
|
|
100
|
+
# If include_extensions is empty, process all files (that weren't skipped)
|
|
101
|
+
if include_extensions and not (any(re.match(pattern.replace('*', '.*') + '$', file_name, re.IGNORECASE)
|
|
102
|
+
for pattern in include_extensions)):
|
|
103
|
+
continue
|
|
104
|
+
|
|
69
105
|
metadata = {
|
|
70
106
|
("updated_on" if k == "modified" else k): str(v)
|
|
71
107
|
for k, v in file.items()
|
|
72
108
|
}
|
|
73
|
-
metadata['id'] = self.get_hash_from_bucket_and_file_name(self.bucket,
|
|
109
|
+
metadata['id'] = self.get_hash_from_bucket_and_file_name(self.bucket, file_name)
|
|
74
110
|
yield Document(page_content="", metadata=metadata)
|
|
75
111
|
|
|
76
112
|
def get_hash_from_bucket_and_file_name(self, bucket, file_name):
|
|
@@ -22,7 +22,7 @@ GLOBAL_REMOVE = []
|
|
|
22
22
|
GLOBAL_DEPTH_START = 4
|
|
23
23
|
GLOBAL_DEPTH_END = 6
|
|
24
24
|
EXTRA_PARAMS = (
|
|
25
|
-
Optional[Dict[str, Union[str, int, None]]],
|
|
25
|
+
Optional[Dict[str, Union[str, int, List, None]]],
|
|
26
26
|
Field(
|
|
27
27
|
description=(
|
|
28
28
|
"Additional parameters for customizing response processing:\n"
|
|
@@ -105,7 +105,7 @@ class GitHubClient(BaseModel):
|
|
|
105
105
|
self._github_repo_instance = None
|
|
106
106
|
except Exception as e:
|
|
107
107
|
# Only raise when accessed, not during initialization
|
|
108
|
-
|
|
108
|
+
raise ToolException(e)
|
|
109
109
|
return self._github_repo_instance
|
|
110
110
|
|
|
111
111
|
@model_validator(mode='before')
|
|
@@ -298,6 +298,18 @@ updateCase = create_model(
|
|
|
298
298
|
),
|
|
299
299
|
)
|
|
300
300
|
|
|
301
|
+
getSuites = create_model(
|
|
302
|
+
"getSuites",
|
|
303
|
+
project_id=(str, Field(description="Project id")),
|
|
304
|
+
output_format=(
|
|
305
|
+
str,
|
|
306
|
+
Field(
|
|
307
|
+
default="json",
|
|
308
|
+
description="Desired output format. Supported values: 'json', 'csv', 'markdown'. Defaults to 'json'.",
|
|
309
|
+
),
|
|
310
|
+
),
|
|
311
|
+
)
|
|
312
|
+
|
|
301
313
|
SUPPORTED_KEYS = {
|
|
302
314
|
"id", "title", "section_id", "template_id", "type_id", "priority_id", "milestone_id",
|
|
303
315
|
"refs", "created_by", "created_on", "updated_by", "updated_on", "estimate",
|
|
@@ -330,29 +342,74 @@ class TestrailAPIWrapper(NonCodeIndexerToolkit):
|
|
|
330
342
|
cls._client = TestRailAPI(url, email, password)
|
|
331
343
|
return super().validate_toolkit(values)
|
|
332
344
|
|
|
333
|
-
def
|
|
345
|
+
def _is_suite_id_required(self, project_id: str) -> bool:
|
|
334
346
|
"""
|
|
335
|
-
|
|
336
|
-
|
|
347
|
+
Returns True if project requires suite_id (multiple suite or baselines mode), otherwise False.
|
|
337
348
|
Args:
|
|
338
349
|
project_id: The TestRail project ID to check
|
|
339
|
-
suite_id: The suite ID if provided (optional)
|
|
340
|
-
custom_error_msg: Custom error message to use (optional)
|
|
341
|
-
|
|
342
|
-
Raises:
|
|
343
|
-
ToolException: If project is in multiple suite mode and no suite_id is provided
|
|
344
350
|
"""
|
|
345
|
-
if suite_id:
|
|
346
|
-
return # No validation needed if suite_id is already provided
|
|
347
|
-
|
|
348
351
|
try:
|
|
349
352
|
project = self._client.projects.get_project(project_id=project_id)
|
|
350
353
|
# 1 for single suite mode, 2 for single suite + baselines, 3 for multiple suites
|
|
351
354
|
suite_mode = project.get('suite_mode', 1)
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
355
|
+
return suite_mode == 2 or suite_mode == 3
|
|
356
|
+
except StatusCodeError:
|
|
357
|
+
return False
|
|
358
|
+
|
|
359
|
+
def _fetch_cases_with_suite_handling(
|
|
360
|
+
self,
|
|
361
|
+
project_id: str,
|
|
362
|
+
suite_id: Optional[str] = None,
|
|
363
|
+
**api_params
|
|
364
|
+
) -> List[Dict]:
|
|
365
|
+
"""
|
|
366
|
+
Unified method to fetch test cases with proper TestRail suite mode handling.
|
|
367
|
+
|
|
368
|
+
Args:
|
|
369
|
+
project_id: The TestRail project ID
|
|
370
|
+
suite_id: Optional suite ID to filter by
|
|
371
|
+
**api_params: Additional parameters to pass to the get_cases API call
|
|
372
|
+
|
|
373
|
+
Returns:
|
|
374
|
+
List of test case dictionaries
|
|
375
|
+
"""
|
|
376
|
+
def _extract_cases_from_response(response):
|
|
377
|
+
"""Extract cases from API response, supporting both old and new testrail_api versions."""
|
|
378
|
+
return response.get('cases', []) if isinstance(response, dict) else response
|
|
379
|
+
|
|
380
|
+
suite_required = self._is_suite_id_required(project_id=project_id)
|
|
381
|
+
all_cases = []
|
|
382
|
+
|
|
383
|
+
if suite_required:
|
|
384
|
+
# Suite modes 2 & 3: Require suite_id parameter
|
|
385
|
+
if suite_id:
|
|
386
|
+
response = self._client.cases.get_cases(
|
|
387
|
+
project_id=project_id, suite_id=int(suite_id), **api_params
|
|
388
|
+
)
|
|
389
|
+
cases_from_suite = _extract_cases_from_response(response)
|
|
390
|
+
all_cases.extend(cases_from_suite)
|
|
391
|
+
else:
|
|
392
|
+
suites = self._get_raw_suites(project_id)
|
|
393
|
+
suite_ids = [suite['id'] for suite in suites if 'id' in suite]
|
|
394
|
+
for current_suite_id in suite_ids:
|
|
395
|
+
try:
|
|
396
|
+
response = self._client.cases.get_cases(
|
|
397
|
+
project_id=project_id, suite_id=int(current_suite_id), **api_params
|
|
398
|
+
)
|
|
399
|
+
cases_from_suite = _extract_cases_from_response(response)
|
|
400
|
+
all_cases.extend(cases_from_suite)
|
|
401
|
+
except StatusCodeError:
|
|
402
|
+
continue
|
|
403
|
+
else:
|
|
404
|
+
# Suite mode 1: Can fetch all cases directly without suite_id
|
|
405
|
+
try:
|
|
406
|
+
response = self._client.cases.get_cases(project_id=project_id, **api_params)
|
|
407
|
+
cases_from_project = _extract_cases_from_response(response)
|
|
408
|
+
all_cases.extend(cases_from_project)
|
|
409
|
+
except StatusCodeError as e:
|
|
410
|
+
logger.warning(f"Unable to fetch cases at project level: {e}")
|
|
411
|
+
|
|
412
|
+
return all_cases
|
|
356
413
|
|
|
357
414
|
def add_cases(self, add_test_cases_data: str):
|
|
358
415
|
"""Adds new test cases into Testrail per defined parameters.
|
|
@@ -442,17 +499,10 @@ class TestrailAPIWrapper(NonCodeIndexerToolkit):
|
|
|
442
499
|
invalid_keys = [key for key in keys if key not in SUPPORTED_KEYS]
|
|
443
500
|
|
|
444
501
|
try:
|
|
445
|
-
#
|
|
446
|
-
self.
|
|
447
|
-
project_id=project_id,
|
|
448
|
-
suite_id=suite_id
|
|
449
|
-
)
|
|
450
|
-
|
|
451
|
-
extracted_cases = self._client.cases.get_cases(project_id=project_id, suite_id=suite_id)
|
|
452
|
-
# support old versions of testrail_api
|
|
453
|
-
cases = extracted_cases.get("cases") if isinstance(extracted_cases, dict) else extracted_cases
|
|
502
|
+
# Use unified suite handling method
|
|
503
|
+
cases = self._fetch_cases_with_suite_handling(project_id=project_id, suite_id=suite_id)
|
|
454
504
|
|
|
455
|
-
if cases
|
|
505
|
+
if not cases:
|
|
456
506
|
return ToolException("No test cases found in the extracted data.")
|
|
457
507
|
|
|
458
508
|
extracted_cases_data = [
|
|
@@ -506,31 +556,35 @@ class TestrailAPIWrapper(NonCodeIndexerToolkit):
|
|
|
506
556
|
)
|
|
507
557
|
self._log_tool_event(message=f"Extract test cases per filter {params}", tool_name='get_cases_by_filter')
|
|
508
558
|
|
|
509
|
-
#
|
|
510
|
-
suite_id_in_params = params.
|
|
511
|
-
|
|
512
|
-
project_id=project_id,
|
|
513
|
-
suite_id=str(suite_id_in_params) if suite_id_in_params else None
|
|
514
|
-
)
|
|
559
|
+
# Extract suite_id from params for unified handling
|
|
560
|
+
suite_id_in_params = params.pop('suite_id', None)
|
|
561
|
+
suite_id = str(suite_id_in_params) if suite_id_in_params else None
|
|
515
562
|
|
|
516
|
-
|
|
517
|
-
|
|
563
|
+
# Use unified suite handling method with remaining filter parameters
|
|
564
|
+
cases = self._fetch_cases_with_suite_handling(
|
|
565
|
+
project_id=project_id,
|
|
566
|
+
suite_id=suite_id,
|
|
567
|
+
**params
|
|
518
568
|
)
|
|
569
|
+
|
|
519
570
|
self._log_tool_event(message="Test cases were extracted", tool_name='get_cases_by_filter')
|
|
520
|
-
# support old versions of testrail_api
|
|
521
|
-
cases = extracted_cases.get("cases") if isinstance(extracted_cases, dict) else extracted_cases
|
|
522
571
|
|
|
523
|
-
if cases
|
|
572
|
+
if not cases:
|
|
524
573
|
return ToolException("No test cases found in the extracted data.")
|
|
525
574
|
|
|
526
575
|
if keys is None:
|
|
527
576
|
return self._to_markup(cases, output_format)
|
|
528
577
|
|
|
529
|
-
extracted_cases_data = [
|
|
530
|
-
|
|
531
|
-
|
|
578
|
+
extracted_cases_data = []
|
|
579
|
+
for case in cases:
|
|
580
|
+
case_dict = {}
|
|
581
|
+
for key in keys:
|
|
582
|
+
if key in case:
|
|
583
|
+
case_dict[key] = case[key]
|
|
584
|
+
if case_dict:
|
|
585
|
+
extracted_cases_data.append(case_dict)
|
|
532
586
|
|
|
533
|
-
if extracted_cases_data
|
|
587
|
+
if not extracted_cases_data:
|
|
534
588
|
return ToolException("No valid test case data found to format.")
|
|
535
589
|
|
|
536
590
|
result = self._to_markup(extracted_cases_data, output_format)
|
|
@@ -578,6 +632,40 @@ class TestrailAPIWrapper(NonCodeIndexerToolkit):
|
|
|
578
632
|
return (
|
|
579
633
|
f"Test case #{case_id} has been updated at '{updated_case['updated_on']}')"
|
|
580
634
|
)
|
|
635
|
+
|
|
636
|
+
def _get_raw_suites(self, project_id: str) -> List[Dict]:
|
|
637
|
+
"""
|
|
638
|
+
Internal helper to get raw suite data from TestRail API.
|
|
639
|
+
Handles both old and new testrail_api response formats.
|
|
640
|
+
"""
|
|
641
|
+
suites_response = self._client.suites.get_suites(project_id=project_id)
|
|
642
|
+
if isinstance(suites_response, dict) and 'suites' in suites_response:
|
|
643
|
+
return suites_response['suites']
|
|
644
|
+
else:
|
|
645
|
+
return suites_response if isinstance(suites_response, list) else []
|
|
646
|
+
|
|
647
|
+
def get_suites(self, project_id: str, output_format: str = "json",) -> Union[str, ToolException]:
|
|
648
|
+
"""Extracts a list of test suites for a given project from Testrail"""
|
|
649
|
+
try:
|
|
650
|
+
suites = self._get_raw_suites(project_id)
|
|
651
|
+
|
|
652
|
+
if not suites:
|
|
653
|
+
return ToolException("No test suites found for the specified project.")
|
|
654
|
+
|
|
655
|
+
suite_dicts = []
|
|
656
|
+
for suite in suites:
|
|
657
|
+
if isinstance(suite, dict):
|
|
658
|
+
suite_dict = {}
|
|
659
|
+
for field in ["id", "name", "description", "project_id", "is_baseline",
|
|
660
|
+
"completed_on", "url", "is_master", "is_completed"]:
|
|
661
|
+
if field in suite:
|
|
662
|
+
suite_dict[field] = suite[field]
|
|
663
|
+
suite_dicts.append(suite_dict)
|
|
664
|
+
else:
|
|
665
|
+
suite_dicts.append({"suite": str(suite)})
|
|
666
|
+
return self._to_markup(suite_dicts, output_format)
|
|
667
|
+
except StatusCodeError as e:
|
|
668
|
+
return ToolException(f"Unable to extract test suites: {e}")
|
|
581
669
|
|
|
582
670
|
def _base_loader(self, project_id: str,
|
|
583
671
|
suite_id: Optional[str] = None,
|
|
@@ -589,24 +677,13 @@ class TestrailAPIWrapper(NonCodeIndexerToolkit):
|
|
|
589
677
|
self._include_attachments = kwargs.get('include_attachments', False)
|
|
590
678
|
self._skip_attachment_extensions = kwargs.get('skip_attachment_extensions', [])
|
|
591
679
|
|
|
592
|
-
def _extract_cases_from_response(response):
|
|
593
|
-
"""Extract cases from API response, supporting both old and new testrail_api versions."""
|
|
594
|
-
return response.get('cases', []) if isinstance(response, dict) else response
|
|
595
|
-
|
|
596
680
|
try:
|
|
597
|
-
#
|
|
598
|
-
self.
|
|
599
|
-
|
|
600
|
-
if suite_id:
|
|
601
|
-
resp = self._client.cases.get_cases(project_id=project_id, suite_id=int(suite_id))
|
|
602
|
-
else:
|
|
603
|
-
resp = self._client.cases.get_cases(project_id=project_id)
|
|
604
|
-
|
|
605
|
-
cases = _extract_cases_from_response(resp)
|
|
606
|
-
|
|
681
|
+
# Use unified suite handling method
|
|
682
|
+
cases = self._fetch_cases_with_suite_handling(project_id=project_id, suite_id=suite_id)
|
|
607
683
|
except StatusCodeError as e:
|
|
608
684
|
raise ToolException(f"Unable to extract test cases: {e}")
|
|
609
|
-
|
|
685
|
+
|
|
686
|
+
# Apply filters
|
|
610
687
|
if section_id is not None:
|
|
611
688
|
cases = [case for case in cases if case.get('section_id') == section_id]
|
|
612
689
|
if title_keyword is not None:
|
|
@@ -810,6 +887,12 @@ class TestrailAPIWrapper(NonCodeIndexerToolkit):
|
|
|
810
887
|
"ref": self.update_case,
|
|
811
888
|
"description": self.update_case.__doc__,
|
|
812
889
|
"args_schema": updateCase,
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
"name": "get_suites",
|
|
893
|
+
"ref": self.get_suites,
|
|
894
|
+
"description": self.get_suites.__doc__,
|
|
895
|
+
"args_schema": getSuites,
|
|
813
896
|
}
|
|
814
897
|
]
|
|
815
898
|
return tools
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.347
|
|
4
4
|
Summary: SDK for building langchain agents using resources from Alita
|
|
5
5
|
Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
from langchain_community.document_loaders.parsers.images import BaseImageBlobParser
|
|
2
|
-
|
|
3
|
-
from alita_sdk.runtime.langchain.document_loaders.AlitaImageLoader import AlitaImageLoader
|
|
4
|
-
|
|
5
|
-
class ImageParser(BaseImageBlobParser):
|
|
6
|
-
|
|
7
|
-
def __init__(self, **kwargs):
|
|
8
|
-
self.llm = kwargs.get('llm')
|
|
9
|
-
self.prompt = kwargs.get('prompt')
|
|
10
|
-
|
|
11
|
-
def _analyze_image(self, img) -> str:
|
|
12
|
-
from io import BytesIO
|
|
13
|
-
|
|
14
|
-
byte_stream = BytesIO()
|
|
15
|
-
img.save(byte_stream, format='PNG')
|
|
16
|
-
image_bytes = byte_stream.getvalue()
|
|
17
|
-
return AlitaImageLoader(file_content=image_bytes, file_name="image.png", prompt=self.prompt, llm=self.llm).get_content()
|
|
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
|
{alita_sdk-0.3.345 → alita_sdk-0.3.347}/alita_sdk/runtime/langchain/chat_message_template.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
|