alita-sdk 0.3.347__tar.gz → 0.3.349__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.347 → alita_sdk-0.3.349}/PKG-INFO +2 -1
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/clients/artifact.py +11 -1
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/clients/client.py +2 -0
- alita_sdk-0.3.349/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +222 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/langraph_agent.py +12 -2
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/artifact.py +46 -3
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/vectorstore.py +1 -1
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/vectorstore_base.py +1 -1
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/base_indexer_toolkit.py +2 -1
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/api_wrapper.py +7 -25
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk.egg-info/PKG-INFO +2 -1
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk.egg-info/requires.txt +1 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/pyproject.toml +2 -2
- alita_sdk-0.3.347/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -136
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/LICENSE +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/README.md +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/browser.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/carrier.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/google_places.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/report_portal.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/salesforce.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/sharepoint.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/sonar.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/sql.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/testio.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/configurations/zephyr_essential.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/graph.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/sandbox.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/setup.cfg +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.347 → alita_sdk-0.3.349}/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.349
|
|
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
|
|
@@ -128,6 +128,7 @@ Requires-Dist: textract-py3==2.1.1; extra == "tools"
|
|
|
128
128
|
Requires-Dist: slack_sdk==3.35.0; extra == "tools"
|
|
129
129
|
Requires-Dist: deltalake==1.0.2; extra == "tools"
|
|
130
130
|
Requires-Dist: google_cloud_bigquery==3.34.0; extra == "tools"
|
|
131
|
+
Requires-Dist: python-calamine==0.5.3; extra == "tools"
|
|
131
132
|
Provides-Extra: community
|
|
132
133
|
Requires-Dist: retry-extended==0.2.3; extra == "community"
|
|
133
134
|
Requires-Dist: pyobjtojson==0.3; extra == "community"
|
|
@@ -42,7 +42,17 @@ class Artifact:
|
|
|
42
42
|
return f"{data['error']}. {data['content'] if data['content'] else ''}"
|
|
43
43
|
detected = chardet.detect(data)
|
|
44
44
|
if detected['encoding'] is not None:
|
|
45
|
-
|
|
45
|
+
try:
|
|
46
|
+
return data.decode(detected['encoding'])
|
|
47
|
+
except Exception:
|
|
48
|
+
logger.error("Error while default encoding")
|
|
49
|
+
return parse_file_content(file_name=artifact_name,
|
|
50
|
+
file_content=data,
|
|
51
|
+
is_capture_image=is_capture_image,
|
|
52
|
+
page_number=page_number,
|
|
53
|
+
sheet_name=sheet_name,
|
|
54
|
+
excel_by_sheets=excel_by_sheets,
|
|
55
|
+
llm=llm)
|
|
46
56
|
else:
|
|
47
57
|
return parse_file_content(file_name=artifact_name,
|
|
48
58
|
file_content=data,
|
|
@@ -69,6 +69,7 @@ class AlitaClient:
|
|
|
69
69
|
self.configurations_url = f'{self.base_url}{self.api_path}/integrations/integrations/default/{self.project_id}?section=configurations&unsecret=true'
|
|
70
70
|
self.ai_section_url = f'{self.base_url}{self.api_path}/integrations/integrations/default/{self.project_id}?section=ai'
|
|
71
71
|
self.configurations: list = configurations or []
|
|
72
|
+
self.model_timeout = kwargs.get('model_timeout', 120)
|
|
72
73
|
|
|
73
74
|
def get_mcp_toolkits(self):
|
|
74
75
|
if user_id := self._get_real_user_id():
|
|
@@ -184,6 +185,7 @@ class AlitaClient:
|
|
|
184
185
|
model=embedding_model,
|
|
185
186
|
api_key=self.auth_token,
|
|
186
187
|
openai_organization=str(self.project_id),
|
|
188
|
+
request_timeout=self.model_timeout
|
|
187
189
|
)
|
|
188
190
|
|
|
189
191
|
def get_llm(self, model_name: str, model_config: dict) -> ChatOpenAI:
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Copyright (c) 2023 Artem Rozumenko
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
import io
|
|
15
|
+
import os
|
|
16
|
+
from typing import Iterator
|
|
17
|
+
import pandas as pd
|
|
18
|
+
from json import loads
|
|
19
|
+
|
|
20
|
+
from openpyxl import load_workbook
|
|
21
|
+
from xlrd import open_workbook
|
|
22
|
+
from langchain_core.documents import Document
|
|
23
|
+
from .AlitaTableLoader import AlitaTableLoader
|
|
24
|
+
|
|
25
|
+
cell_delimiter = " | "
|
|
26
|
+
|
|
27
|
+
class AlitaExcelLoader(AlitaTableLoader):
|
|
28
|
+
excel_by_sheets: bool = False
|
|
29
|
+
sheet_name: str = None
|
|
30
|
+
return_type: str = 'str'
|
|
31
|
+
file_name: str = None
|
|
32
|
+
|
|
33
|
+
def __init__(self, **kwargs):
|
|
34
|
+
if not kwargs.get('file_path'):
|
|
35
|
+
file_content = kwargs.get('file_content')
|
|
36
|
+
if file_content:
|
|
37
|
+
self.file_name = kwargs.get('file_name')
|
|
38
|
+
kwargs['file_path'] = io.BytesIO(file_content)
|
|
39
|
+
else:
|
|
40
|
+
self.file_name = kwargs.get('file_path')
|
|
41
|
+
super().__init__(**kwargs)
|
|
42
|
+
self.excel_by_sheets = kwargs.get('excel_by_sheets')
|
|
43
|
+
self.return_type = kwargs.get('return_type')
|
|
44
|
+
self.sheet_name = kwargs.get('sheet_name')
|
|
45
|
+
|
|
46
|
+
def get_content(self):
|
|
47
|
+
try:
|
|
48
|
+
# Determine file extension
|
|
49
|
+
file_extension = os.path.splitext(self.file_name)[-1].lower()
|
|
50
|
+
|
|
51
|
+
if file_extension == '.xlsx':
|
|
52
|
+
# Use openpyxl for .xlsx files
|
|
53
|
+
return self._read_xlsx()
|
|
54
|
+
elif file_extension == '.xls':
|
|
55
|
+
# Use xlrd for .xls files
|
|
56
|
+
return self._read_xls()
|
|
57
|
+
else:
|
|
58
|
+
raise ValueError(f"Unsupported file format: {file_extension}")
|
|
59
|
+
except Exception as e:
|
|
60
|
+
return f"Error reading Excel file: {e}"
|
|
61
|
+
|
|
62
|
+
def _read_xlsx(self):
|
|
63
|
+
"""
|
|
64
|
+
Reads .xlsx files using openpyxl.
|
|
65
|
+
"""
|
|
66
|
+
workbook = load_workbook(self.file_path, data_only=True) # `data_only=True` ensures we get cell values, not formulas
|
|
67
|
+
|
|
68
|
+
if self.sheet_name:
|
|
69
|
+
# If a specific sheet name is provided, parse only that sheet
|
|
70
|
+
if self.sheet_name in workbook.sheetnames:
|
|
71
|
+
sheet_content = self.parse_sheet(workbook[self.sheet_name])
|
|
72
|
+
return sheet_content
|
|
73
|
+
else:
|
|
74
|
+
raise ValueError(f"Sheet '{self.sheet_name}' does not exist in the workbook.")
|
|
75
|
+
elif self.excel_by_sheets:
|
|
76
|
+
# Parse each sheet individually and return as a dictionary
|
|
77
|
+
result = {}
|
|
78
|
+
for sheet_name in workbook.sheetnames:
|
|
79
|
+
sheet_content = self.parse_sheet(workbook[sheet_name])
|
|
80
|
+
result[sheet_name] = sheet_content
|
|
81
|
+
return result
|
|
82
|
+
else:
|
|
83
|
+
# Combine all sheets into a single string result
|
|
84
|
+
result = []
|
|
85
|
+
for sheet_name in workbook.sheetnames:
|
|
86
|
+
sheet_content = self.parse_sheet(workbook[sheet_name])
|
|
87
|
+
result.append(f"====== Sheet name: {sheet_name} ======\n{sheet_content}")
|
|
88
|
+
return "\n\n".join(result)
|
|
89
|
+
|
|
90
|
+
def _read_xls(self):
|
|
91
|
+
"""
|
|
92
|
+
Reads .xls files using xlrd.
|
|
93
|
+
"""
|
|
94
|
+
workbook = open_workbook(filename=self.file_name, file_contents=self.file_content)
|
|
95
|
+
|
|
96
|
+
if self.sheet_name:
|
|
97
|
+
# If a specific sheet name is provided, parse only that sheet
|
|
98
|
+
if self.sheet_name in workbook.sheet_names():
|
|
99
|
+
sheet = workbook.sheet_by_name(self.sheet_name)
|
|
100
|
+
sheet_content = self.parse_sheet_xls(sheet)
|
|
101
|
+
return sheet_content
|
|
102
|
+
else:
|
|
103
|
+
raise ValueError(f"Sheet '{self.sheet_name}' does not exist in the workbook.")
|
|
104
|
+
elif self.excel_by_sheets:
|
|
105
|
+
# Parse each sheet individually and return as a dictionary
|
|
106
|
+
result = {}
|
|
107
|
+
for sheet_name in workbook.sheet_names():
|
|
108
|
+
sheet = workbook.sheet_by_name(sheet_name)
|
|
109
|
+
sheet_content = self.parse_sheet_xls(sheet)
|
|
110
|
+
result[sheet_name] = sheet_content
|
|
111
|
+
return result
|
|
112
|
+
else:
|
|
113
|
+
# Combine all sheets into a single string result
|
|
114
|
+
result = []
|
|
115
|
+
for sheet_name in workbook.sheet_names():
|
|
116
|
+
sheet = workbook.sheet_by_name(sheet_name)
|
|
117
|
+
sheet_content = self.parse_sheet_xls(sheet)
|
|
118
|
+
result.append(f"====== Sheet name: {sheet_name} ======\n{sheet_content}")
|
|
119
|
+
return "\n\n".join(result)
|
|
120
|
+
|
|
121
|
+
def parse_sheet(self, sheet):
|
|
122
|
+
"""
|
|
123
|
+
Parses a single .xlsx sheet, extracting text and hyperlinks, and formats them.
|
|
124
|
+
"""
|
|
125
|
+
sheet_content = []
|
|
126
|
+
|
|
127
|
+
for row in sheet.iter_rows():
|
|
128
|
+
row_content = []
|
|
129
|
+
for cell in row:
|
|
130
|
+
if cell.hyperlink:
|
|
131
|
+
# If the cell has a hyperlink, format it as Markdown
|
|
132
|
+
hyperlink = cell.hyperlink.target
|
|
133
|
+
cell_value = cell.value or '' # Use cell value or empty string
|
|
134
|
+
row_content.append(f"[{cell_value}]({hyperlink})")
|
|
135
|
+
else:
|
|
136
|
+
# If no hyperlink, use the cell value (computed value if formula)
|
|
137
|
+
row_content.append(str(cell.value) if cell.value is not None else "")
|
|
138
|
+
# Join the row content into a single line using `|` as the delimiter
|
|
139
|
+
sheet_content.append(cell_delimiter.join(row_content))
|
|
140
|
+
|
|
141
|
+
# Format the sheet content based on the return type
|
|
142
|
+
return self._format_sheet_content(sheet_content)
|
|
143
|
+
|
|
144
|
+
def parse_sheet_xls(self, sheet):
|
|
145
|
+
"""
|
|
146
|
+
Parses a single .xls sheet using xlrd, extracting text and hyperlinks, and formats them.
|
|
147
|
+
"""
|
|
148
|
+
sheet_content = []
|
|
149
|
+
|
|
150
|
+
# Extract hyperlink map (if available)
|
|
151
|
+
hyperlink_map = getattr(sheet, 'hyperlink_map', {})
|
|
152
|
+
|
|
153
|
+
for row_idx in range(sheet.nrows):
|
|
154
|
+
row_content = []
|
|
155
|
+
for col_idx in range(sheet.ncols):
|
|
156
|
+
cell = sheet.cell(row_idx, col_idx)
|
|
157
|
+
cell_value = cell.value
|
|
158
|
+
|
|
159
|
+
# Check if the cell has a hyperlink
|
|
160
|
+
cell_address = (row_idx, col_idx)
|
|
161
|
+
if cell_address in hyperlink_map:
|
|
162
|
+
hyperlink = hyperlink_map[cell_address].url_or_path
|
|
163
|
+
if cell_value:
|
|
164
|
+
row_content.append(f"[{cell_value}]({hyperlink})")
|
|
165
|
+
else:
|
|
166
|
+
row_content.append(str(cell_value) if cell_value is not None else "")
|
|
167
|
+
# Join the row content into a single line using `|` as the delimiter
|
|
168
|
+
sheet_content.append(cell_delimiter.join(row_content))
|
|
169
|
+
|
|
170
|
+
# Format the sheet content based on the return type
|
|
171
|
+
return self._format_sheet_content(sheet_content)
|
|
172
|
+
|
|
173
|
+
def _format_sheet_content(self, sheet_content):
|
|
174
|
+
"""
|
|
175
|
+
Formats the sheet content based on the return type.
|
|
176
|
+
"""
|
|
177
|
+
if self.return_type == 'dict':
|
|
178
|
+
# Convert to a list of dictionaries (each row is a dictionary)
|
|
179
|
+
headers = sheet_content[0].split(cell_delimiter) if sheet_content else []
|
|
180
|
+
data_rows = sheet_content[1:] if len(sheet_content) > 1 else []
|
|
181
|
+
return [dict(zip(headers, row.split(cell_delimiter))) for row in data_rows]
|
|
182
|
+
elif self.return_type == 'csv':
|
|
183
|
+
# Return as CSV (newline-separated rows, comma-separated values)
|
|
184
|
+
return "\n".join([",".join(row.split(cell_delimiter)) for row in sheet_content])
|
|
185
|
+
else:
|
|
186
|
+
# Default: Return as plain text (newline-separated rows, pipe-separated values)
|
|
187
|
+
return "\n".join(sheet_content)
|
|
188
|
+
|
|
189
|
+
def load(self) -> list:
|
|
190
|
+
docs = []
|
|
191
|
+
content_per_sheet = self.get_content()
|
|
192
|
+
for sheet_name, content in content_per_sheet.items():
|
|
193
|
+
metadata = {
|
|
194
|
+
"source": f'{self.file_path}:{sheet_name}',
|
|
195
|
+
"sheet_name": sheet_name,
|
|
196
|
+
"file_type": "excel",
|
|
197
|
+
"excel_by_sheets": self.excel_by_sheets,
|
|
198
|
+
"return_type": self.return_type,
|
|
199
|
+
}
|
|
200
|
+
docs.append(Document(page_content=f"Sheet: {sheet_name}\n {str(content)}", metadata=metadata))
|
|
201
|
+
return docs
|
|
202
|
+
|
|
203
|
+
def read(self, lazy: bool = False):
|
|
204
|
+
df = pd.read_excel(self.file_path, sheet_name=None, engine='calamine')
|
|
205
|
+
docs = []
|
|
206
|
+
for key in df.keys():
|
|
207
|
+
if self.raw_content:
|
|
208
|
+
docs.append(df[key].to_string())
|
|
209
|
+
else:
|
|
210
|
+
for record in loads(df[key].to_json(orient='records')):
|
|
211
|
+
docs.append(record)
|
|
212
|
+
return docs
|
|
213
|
+
|
|
214
|
+
def read_lazy(self) -> Iterator[dict]:
|
|
215
|
+
df = pd.read_excel(self.file_path, sheet_name=None, engine='calamine')
|
|
216
|
+
for key in df.keys():
|
|
217
|
+
if self.raw_content:
|
|
218
|
+
yield df[key].to_string()
|
|
219
|
+
else:
|
|
220
|
+
for record in loads(df[key].to_json(orient='records')):
|
|
221
|
+
yield record
|
|
222
|
+
return
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
import re
|
|
2
3
|
from typing import Union, Any, Optional, Annotated, get_type_hints
|
|
3
4
|
from uuid import uuid4
|
|
4
5
|
from typing import Dict
|
|
@@ -274,11 +275,20 @@ class StateModifierNode(Runnable):
|
|
|
274
275
|
logger.warning(f"Failed to decode base64 value: {e}")
|
|
275
276
|
return value
|
|
276
277
|
|
|
278
|
+
def split_by_words(value, chunk_size=100):
|
|
279
|
+
words = value.split()
|
|
280
|
+
return [" ".join(words[i:i + chunk_size]) for i in range(0, len(words), chunk_size)]
|
|
281
|
+
|
|
282
|
+
def split_by_regex(value, pattern):
|
|
283
|
+
"""Splits the provided string using the specified regex pattern."""
|
|
284
|
+
return re.split(pattern, value)
|
|
277
285
|
|
|
278
286
|
env = Environment()
|
|
279
287
|
env.filters['from_json'] = from_json
|
|
280
|
-
env.filters['
|
|
281
|
-
|
|
288
|
+
env.filters['base64_to_string'] = base64_to_string
|
|
289
|
+
env.filters['split_by_words'] = split_by_words
|
|
290
|
+
env.filters['split_by_regex'] = split_by_regex
|
|
291
|
+
|
|
282
292
|
template = env.from_string(self.template)
|
|
283
293
|
rendered_message = template.render(**input_data)
|
|
284
294
|
result = {}
|
|
@@ -3,6 +3,7 @@ import logging
|
|
|
3
3
|
import re
|
|
4
4
|
from typing import Any, Optional, Generator, List
|
|
5
5
|
|
|
6
|
+
from langchain_core.callbacks import dispatch_custom_event
|
|
6
7
|
from langchain_core.documents import Document
|
|
7
8
|
from langchain_core.tools import ToolException
|
|
8
9
|
from pydantic import create_model, Field, model_validator
|
|
@@ -30,7 +31,21 @@ class ArtifactWrapper(NonCodeIndexerToolkit):
|
|
|
30
31
|
return self.artifact.list(bucket_name, return_as_string)
|
|
31
32
|
|
|
32
33
|
def create_file(self, filename: str, filedata: str, bucket_name = None):
|
|
33
|
-
|
|
34
|
+
result = self.artifact.create(filename, filedata, bucket_name)
|
|
35
|
+
|
|
36
|
+
# Dispatch custom event for file creation
|
|
37
|
+
dispatch_custom_event("file_modified", {
|
|
38
|
+
"message": f"File '{filename}' created successfully",
|
|
39
|
+
"filename": filename,
|
|
40
|
+
"tool_name": "createFile",
|
|
41
|
+
"toolkit": "artifact",
|
|
42
|
+
"operation_type": "create",
|
|
43
|
+
"meta": {
|
|
44
|
+
"bucket": bucket_name or self.bucket
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
return result
|
|
34
49
|
|
|
35
50
|
def read_file(self,
|
|
36
51
|
filename: str,
|
|
@@ -51,10 +66,38 @@ class ArtifactWrapper(NonCodeIndexerToolkit):
|
|
|
51
66
|
return self.artifact.delete(filename, bucket_name)
|
|
52
67
|
|
|
53
68
|
def append_data(self, filename: str, filedata: str, bucket_name = None):
|
|
54
|
-
|
|
69
|
+
result = self.artifact.append(filename, filedata, bucket_name)
|
|
70
|
+
|
|
71
|
+
# Dispatch custom event for file append
|
|
72
|
+
dispatch_custom_event("file_modified", {
|
|
73
|
+
"message": f"Data appended to file '{filename}' successfully",
|
|
74
|
+
"filename": filename,
|
|
75
|
+
"tool_name": "appendData",
|
|
76
|
+
"toolkit": "artifact",
|
|
77
|
+
"operation_type": "modify",
|
|
78
|
+
"meta": {
|
|
79
|
+
"bucket": bucket_name or self.bucket
|
|
80
|
+
}
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
return result
|
|
55
84
|
|
|
56
85
|
def overwrite_data(self, filename: str, filedata: str, bucket_name = None):
|
|
57
|
-
|
|
86
|
+
result = self.artifact.overwrite(filename, filedata, bucket_name)
|
|
87
|
+
|
|
88
|
+
# Dispatch custom event for file overwrite
|
|
89
|
+
dispatch_custom_event("file_modified", {
|
|
90
|
+
"message": f"File '{filename}' overwritten successfully",
|
|
91
|
+
"filename": filename,
|
|
92
|
+
"tool_name": "overwriteData",
|
|
93
|
+
"toolkit": "artifact",
|
|
94
|
+
"operation_type": "modify",
|
|
95
|
+
"meta": {
|
|
96
|
+
"bucket": bucket_name or self.bucket
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
return result
|
|
58
101
|
|
|
59
102
|
def create_new_bucket(self, bucket_name: str, expiration_measure = "weeks", expiration_value = 1):
|
|
60
103
|
return self.artifact.client.create_bucket(bucket_name, expiration_measure, expiration_value)
|
|
@@ -137,7 +137,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
137
137
|
embedding_model_params: dict
|
|
138
138
|
vectorstore_type: str
|
|
139
139
|
vectorstore_params: dict
|
|
140
|
-
max_docs_per_add: int =
|
|
140
|
+
max_docs_per_add: int = 20
|
|
141
141
|
dataset: str = None
|
|
142
142
|
embedding: Any = None
|
|
143
143
|
vectorstore: Any = None
|
|
@@ -135,7 +135,7 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
135
135
|
embedding_model: Optional[str] = None
|
|
136
136
|
vectorstore_type: Optional[str] = None
|
|
137
137
|
vectorstore_params: Optional[dict] = None
|
|
138
|
-
max_docs_per_add: int =
|
|
138
|
+
max_docs_per_add: int = 20
|
|
139
139
|
dataset: Optional[str] = None
|
|
140
140
|
vectorstore: Any = None
|
|
141
141
|
pg_helper: Any = None
|
|
@@ -279,7 +279,8 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
279
279
|
"""Cleans the indexed data in the collection."""
|
|
280
280
|
super()._clean_collection(collection_suffix=collection_suffix)
|
|
281
281
|
return (f"Collection '{collection_suffix}' has been removed from the vector store.\n"
|
|
282
|
-
f"Available collections: {self.list_collections()}")
|
|
282
|
+
f"Available collections: {self.list_collections()}") if collection_suffix \
|
|
283
|
+
else "All collections have been removed from the vector store."
|
|
283
284
|
|
|
284
285
|
def _build_collection_filter(self, filter: dict | str, collection_suffix: str = "") -> dict:
|
|
285
286
|
"""Builds a filter for the collection based on the provided suffix."""
|
|
@@ -93,7 +93,7 @@ class PandasWrapper(BaseToolApiWrapper):
|
|
|
93
93
|
if file_extension in ['csv', 'txt']:
|
|
94
94
|
df = pd.read_csv(file_obj)
|
|
95
95
|
elif file_extension in ['xlsx', 'xls']:
|
|
96
|
-
df = pd.read_excel(file_obj)
|
|
96
|
+
df = pd.read_excel(file_obj, engine='calamine')
|
|
97
97
|
elif file_extension == 'parquet':
|
|
98
98
|
df = pd.read_parquet(file_obj)
|
|
99
99
|
elif file_extension == 'json':
|
|
@@ -162,35 +162,17 @@ class PandasWrapper(BaseToolApiWrapper):
|
|
|
162
162
|
"""Analyze and process using query on dataset"""
|
|
163
163
|
df = self._get_dataframe(filename)
|
|
164
164
|
code = self.generate_code_with_retries(df, query)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
data={
|
|
168
|
-
"message": f"Executing generated code... \n\n```python\n{code}\n```",
|
|
169
|
-
"tool_name": "process_query",
|
|
170
|
-
"toolkit": "pandas"
|
|
171
|
-
}
|
|
172
|
-
)
|
|
165
|
+
self._log_tool_event(tool_name="process_query",
|
|
166
|
+
message=f"Executing generated code... \n\n```python\n{code}\n```")
|
|
173
167
|
try:
|
|
174
168
|
result = self.execute_code(df, code)
|
|
175
169
|
except Exception as e:
|
|
176
170
|
logger.error(f"Code execution failed: {format_exc()}")
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
data={
|
|
180
|
-
"message": f"Code execution failed: {format_exc()}",
|
|
181
|
-
"tool_name": "process_query",
|
|
182
|
-
"toolkit": "pandas"
|
|
183
|
-
}
|
|
184
|
-
)
|
|
171
|
+
self._log_tool_event(tool_name="process_query",
|
|
172
|
+
message=f"Executing generated code... \n\n```python\n{code}\n```")
|
|
185
173
|
raise
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
data={
|
|
189
|
-
"message": f"Result of code execution... \n\n```\n{result['result']}\n```",
|
|
190
|
-
"tool_name": "process_query",
|
|
191
|
-
"toolkit": "pandas"
|
|
192
|
-
}
|
|
193
|
-
)
|
|
174
|
+
self._log_tool_event(tool_name="process_query",
|
|
175
|
+
message=f"Executing generated code... \n\n```python\n{code}\n```")
|
|
194
176
|
if result.get("df") is not None:
|
|
195
177
|
df = result.pop("df")
|
|
196
178
|
# Not saving dataframe to artifact repo for now
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.349
|
|
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
|
|
@@ -128,6 +128,7 @@ Requires-Dist: textract-py3==2.1.1; extra == "tools"
|
|
|
128
128
|
Requires-Dist: slack_sdk==3.35.0; extra == "tools"
|
|
129
129
|
Requires-Dist: deltalake==1.0.2; extra == "tools"
|
|
130
130
|
Requires-Dist: google_cloud_bigquery==3.34.0; extra == "tools"
|
|
131
|
+
Requires-Dist: python-calamine==0.5.3; extra == "tools"
|
|
131
132
|
Provides-Extra: community
|
|
132
133
|
Requires-Dist: retry-extended==0.2.3; extra == "community"
|
|
133
134
|
Requires-Dist: pyobjtojson==0.3; extra == "community"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "alita_sdk"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.349"
|
|
8
8
|
description = "SDK for building langchain agents using resources from Alita"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -33,7 +33,7 @@ email = "ad13box@gmail.com"
|
|
|
33
33
|
|
|
34
34
|
[project.optional-dependencies]
|
|
35
35
|
runtime = [ "streamlit>=1.28.0", "langchain_core>=0.3.76,<0.4.0", "langchain>=0.3.22,<0.4.0", "langchain_community>=0.3.7,<0.4.0", "langchain-openai>=0.3.0,<0.4.0", "langchain-anthropic>=0.3.10,<0.4.0", "anthropic>=0.57.0", "langgraph>=0.4.8,<0.5", "langgraph-prebuilt==0.5.2", "langgraph-checkpoint-sqlite~=2.0.0", "langgraph-checkpoint-postgres==2.0.21", "langsmith>=0.3.45", "langchain_chroma>=0.2.2,<0.3.0", "chromadb==0.5.20", "pgvector==0.2.5", "langchain-unstructured~=0.1.6", "langchain-postgres~=0.0.13", "unstructured[local-inference]==0.16.23", "unstructured_pytesseract==0.3.13", "unstructured_inference==0.8.7", "python-pptx==1.0.2", "python-docx==1.1.2", "openpyxl==3.1.2", "pypdf==4.3.1", "pdfminer.six==20240706", "pdf2image==1.16.3", "pikepdf==8.7.1", "docx2txt==0.8", "mammoth==1.9.0", "reportlab==4.2.5", "svglib==1.5.1", "cairocffi==1.7.1", "rlpycairo==0.3.0", "keybert==0.8.3", "sentence-transformers==2.7.0", "gensim==4.3.3", "scipy==1.13.1", "opencv-python==4.11.0.86", "pytesseract==0.3.13", "markdown==3.5.1", "beautifulsoup4==4.12.2", "charset_normalizer==3.3.2", "opentelemetry-exporter-otlp-proto-grpc==1.25.0", "opentelemetry_api==1.25.0", "opentelemetry_instrumentation==0.46b0", "grpcio_status==1.63.0rc1", "protobuf==4.25.7", "langchain-sandbox>=0.0.6",]
|
|
36
|
-
tools = [ "dulwich==0.21.6", "paramiko==3.3.1", "pygithub==2.3.0", "python-gitlab==4.5.0", "gitpython==3.1.43", "atlassian-python-api~=4.0.7", "jira==3.8.0", "qtest-swagger-client==0.0.3", "testrail-api==1.13.4", "azure-devops==7.1.0b4", "msrest==0.7.1", "python-graphql-client~=0.4.3", "zephyr-python-api==0.1.0", "pyral==1.6.0", "boto3>=1.37.23", "azure-core==1.30.2", "azure-identity==1.16.0", "azure-keyvault-keys==4.9.0", "azure-keyvault-secrets==4.8.0", "azure-mgmt-core==1.4.0", "azure-mgmt-resource==23.0.1", "azure-mgmt-storage==21.1.0", "azure-storage-blob==12.23.1", "azure-search-documents==11.5.2", "PyMySQL==1.1.1", "psycopg2-binary==2.9.10", "Office365-REST-Python-Client==2.5.14", "pypdf2~=3.0.1", "FigmaPy==2018.1.0", "pandas==2.2.3", "factor_analyzer==0.5.1", "statsmodels==0.14.4", "tabulate==0.9.0", "tree_sitter==0.20.2", "tree-sitter-languages==1.10.2", "astor~=0.8.1", "markdownify~=1.1.0", "requests_openapi==1.0.5", "duckduckgo_search==5.3.0", "playwright>=1.52.0", "google-api-python-client==2.154.0", "wikipedia==1.4.0", "lxml==5.2.2", "pymupdf==1.24.9", "googlemaps==4.10.0", "yagmail==0.15.293", "pysnc==1.1.10", "shortuuid==1.0.13", "yarl==1.17.1", "langmem==0.0.27", "textract-py3==2.1.1", "slack_sdk==3.35.0", "deltalake==1.0.2", "google_cloud_bigquery==3.34.0",]
|
|
36
|
+
tools = [ "dulwich==0.21.6", "paramiko==3.3.1", "pygithub==2.3.0", "python-gitlab==4.5.0", "gitpython==3.1.43", "atlassian-python-api~=4.0.7", "jira==3.8.0", "qtest-swagger-client==0.0.3", "testrail-api==1.13.4", "azure-devops==7.1.0b4", "msrest==0.7.1", "python-graphql-client~=0.4.3", "zephyr-python-api==0.1.0", "pyral==1.6.0", "boto3>=1.37.23", "azure-core==1.30.2", "azure-identity==1.16.0", "azure-keyvault-keys==4.9.0", "azure-keyvault-secrets==4.8.0", "azure-mgmt-core==1.4.0", "azure-mgmt-resource==23.0.1", "azure-mgmt-storage==21.1.0", "azure-storage-blob==12.23.1", "azure-search-documents==11.5.2", "PyMySQL==1.1.1", "psycopg2-binary==2.9.10", "Office365-REST-Python-Client==2.5.14", "pypdf2~=3.0.1", "FigmaPy==2018.1.0", "pandas==2.2.3", "factor_analyzer==0.5.1", "statsmodels==0.14.4", "tabulate==0.9.0", "tree_sitter==0.20.2", "tree-sitter-languages==1.10.2", "astor~=0.8.1", "markdownify~=1.1.0", "requests_openapi==1.0.5", "duckduckgo_search==5.3.0", "playwright>=1.52.0", "google-api-python-client==2.154.0", "wikipedia==1.4.0", "lxml==5.2.2", "pymupdf==1.24.9", "googlemaps==4.10.0", "yagmail==0.15.293", "pysnc==1.1.10", "shortuuid==1.0.13", "yarl==1.17.1", "langmem==0.0.27", "textract-py3==2.1.1", "slack_sdk==3.35.0", "deltalake==1.0.2", "google_cloud_bigquery==3.34.0", "python-calamine==0.5.3",]
|
|
37
37
|
community = [ "retry-extended==0.2.3", "pyobjtojson==0.3", "elitea-analyse==0.1.2",]
|
|
38
38
|
all = [ "alita-sdk[runtime]", "alita-sdk[tools]", "alita-sdk[community]",]
|
|
39
39
|
dev = [ "pytest", "pytest-cov", "black", "flake8", "mypy",]
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2023 Artem Rozumenko
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
import io
|
|
15
|
-
from typing import Iterator
|
|
16
|
-
import pandas as pd
|
|
17
|
-
from json import loads
|
|
18
|
-
|
|
19
|
-
from openpyxl import load_workbook
|
|
20
|
-
from langchain_core.documents import Document
|
|
21
|
-
from .AlitaTableLoader import AlitaTableLoader
|
|
22
|
-
|
|
23
|
-
cell_delimeter = " | "
|
|
24
|
-
|
|
25
|
-
class AlitaExcelLoader(AlitaTableLoader):
|
|
26
|
-
|
|
27
|
-
excel_by_sheets: bool = False
|
|
28
|
-
sheet_name: str = None
|
|
29
|
-
return_type: str = 'str'
|
|
30
|
-
|
|
31
|
-
def __init__(self, **kwargs):
|
|
32
|
-
if not kwargs.get('file_path'):
|
|
33
|
-
file_content = kwargs.get('file_content')
|
|
34
|
-
if file_content:
|
|
35
|
-
kwargs['file_path'] = io.BytesIO(file_content)
|
|
36
|
-
super().__init__(**kwargs)
|
|
37
|
-
self.excel_by_sheets = kwargs.get('excel_by_sheets')
|
|
38
|
-
self.return_type = kwargs.get('return_type')
|
|
39
|
-
self.sheet_name = kwargs.get('sheet_name')
|
|
40
|
-
|
|
41
|
-
def get_content(self):
|
|
42
|
-
try:
|
|
43
|
-
# Load the workbook
|
|
44
|
-
workbook = load_workbook(self.file_path, data_only=True) # `data_only=True` ensures we get cell values, not formulas
|
|
45
|
-
|
|
46
|
-
if self.sheet_name:
|
|
47
|
-
# If a specific sheet name is provided, parse only that sheet
|
|
48
|
-
if self.sheet_name in workbook.sheetnames:
|
|
49
|
-
sheet_content = self.parse_sheet(workbook[self.sheet_name])
|
|
50
|
-
return sheet_content
|
|
51
|
-
else:
|
|
52
|
-
raise ValueError(f"Sheet '{self.sheet_name}' does not exist in the workbook.")
|
|
53
|
-
elif self.excel_by_sheets:
|
|
54
|
-
# Parse each sheet individually and return as a dictionary
|
|
55
|
-
result = {}
|
|
56
|
-
for sheet_name in workbook.sheetnames:
|
|
57
|
-
sheet_content = self.parse_sheet(workbook[sheet_name])
|
|
58
|
-
result[sheet_name] = sheet_content
|
|
59
|
-
return result
|
|
60
|
-
else:
|
|
61
|
-
# Combine all sheets into a single string result
|
|
62
|
-
result = []
|
|
63
|
-
for sheet_name in workbook.sheetnames:
|
|
64
|
-
sheet_content = self.parse_sheet(workbook[sheet_name])
|
|
65
|
-
result.append(f"====== Sheet name: {sheet_name} ======\n{sheet_content}")
|
|
66
|
-
return "\n\n".join(result)
|
|
67
|
-
except Exception as e:
|
|
68
|
-
return f"Error reading Excel file: {e}"
|
|
69
|
-
|
|
70
|
-
def parse_sheet(self, sheet):
|
|
71
|
-
"""
|
|
72
|
-
Parses a single sheet, extracting text and hyperlinks, and formats them.
|
|
73
|
-
"""
|
|
74
|
-
sheet_content = []
|
|
75
|
-
|
|
76
|
-
for row in sheet.iter_rows():
|
|
77
|
-
row_content = []
|
|
78
|
-
for cell in row:
|
|
79
|
-
if cell.hyperlink:
|
|
80
|
-
# If the cell has a hyperlink, format it as Markdown
|
|
81
|
-
hyperlink = cell.hyperlink.target
|
|
82
|
-
cell_value = cell.value or '' # Use cell value or empty string
|
|
83
|
-
row_content.append(f"[{cell_value}]({hyperlink})")
|
|
84
|
-
else:
|
|
85
|
-
# If no hyperlink, use the cell value (computed value if formula)
|
|
86
|
-
row_content.append(str(cell.value) if cell.value is not None else "")
|
|
87
|
-
# Join the row content into a single line using `|` as the delimiter
|
|
88
|
-
sheet_content.append(cell_delimeter.join(row_content))
|
|
89
|
-
|
|
90
|
-
# Format the sheet content based on the return type
|
|
91
|
-
if self.return_type == 'dict':
|
|
92
|
-
# Convert to a list of dictionaries (each row is a dictionary)
|
|
93
|
-
headers = sheet_content[0].split(cell_delimeter) if sheet_content else []
|
|
94
|
-
data_rows = sheet_content[1:] if len(sheet_content) > 1 else []
|
|
95
|
-
return [dict(zip(headers, row.split(cell_delimeter))) for row in data_rows]
|
|
96
|
-
elif self.return_type == 'csv':
|
|
97
|
-
# Return as CSV (newline-separated rows, comma-separated values)
|
|
98
|
-
return "\n".join([",".join(row.split(cell_delimeter)) for row in sheet_content])
|
|
99
|
-
else:
|
|
100
|
-
# Default: Return as plain text (newline-separated rows, pipe-separated values)
|
|
101
|
-
return "\n".join(sheet_content)
|
|
102
|
-
|
|
103
|
-
def load(self) -> list:
|
|
104
|
-
docs = []
|
|
105
|
-
content_per_sheet = self.get_content()
|
|
106
|
-
for sheet_name, content in content_per_sheet.items():
|
|
107
|
-
metadata = {
|
|
108
|
-
"source": f'{self.file_path}:{sheet_name}',
|
|
109
|
-
"sheet_name": sheet_name,
|
|
110
|
-
"file_type": "excel",
|
|
111
|
-
"excel_by_sheets": self.excel_by_sheets,
|
|
112
|
-
"return_type": self.return_type,
|
|
113
|
-
}
|
|
114
|
-
docs.append(Document(page_content=f"Sheet: {sheet_name}\n {str(content)}", metadata=metadata))
|
|
115
|
-
return docs
|
|
116
|
-
|
|
117
|
-
def read(self, lazy: bool = False):
|
|
118
|
-
df = pd.read_excel(self.file_path, sheet_name=None)
|
|
119
|
-
docs = []
|
|
120
|
-
for key in df.keys():
|
|
121
|
-
if self.raw_content:
|
|
122
|
-
docs.append(df[key].to_string())
|
|
123
|
-
else:
|
|
124
|
-
for record in loads(df[key].to_json(orient='records')):
|
|
125
|
-
docs.append(record)
|
|
126
|
-
return docs
|
|
127
|
-
|
|
128
|
-
def read_lazy(self) -> Iterator[dict]:
|
|
129
|
-
df = pd.read_excel(self.file_path, sheet_name=None)
|
|
130
|
-
for key in df.keys():
|
|
131
|
-
if self.raw_content:
|
|
132
|
-
yield df[key].to_string()
|
|
133
|
-
else:
|
|
134
|
-
for record in loads(df[key].to_json(orient='records')):
|
|
135
|
-
yield record
|
|
136
|
-
return
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|