quantalogic 0.50.2__tar.gz → 0.50.5__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.
Files changed (147) hide show
  1. {quantalogic-0.50.2 → quantalogic-0.50.5}/PKG-INFO +1 -1
  2. {quantalogic-0.50.2 → quantalogic-0.50.5}/pyproject.toml +9 -2
  3. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/__init__.py +1 -1
  4. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/composio/composio.py +48 -3
  5. {quantalogic-0.50.2 → quantalogic-0.50.5}/LICENSE +0 -0
  6. {quantalogic-0.50.2 → quantalogic-0.50.5}/README.md +0 -0
  7. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/__init__.py +0 -0
  8. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/agent.py +0 -0
  9. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/agent_config.py +0 -0
  10. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/agent_factory.py +0 -0
  11. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/coding_agent.py +0 -0
  12. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/config.py +0 -0
  13. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/console_print_events.py +0 -0
  14. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/console_print_token.py +0 -0
  15. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/docs_cli.py +0 -0
  16. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/event_emitter.py +0 -0
  17. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/flow/__init__.py +0 -0
  18. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/flow/flow.py +0 -0
  19. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/flow/flow_extractor.py +0 -0
  20. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/flow/flow_generator.py +0 -0
  21. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/flow/flow_manager.py +0 -0
  22. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/flow/flow_manager_schema.py +0 -0
  23. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/flow/flow_yaml.md +0 -0
  24. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/generative_model.py +0 -0
  25. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/get_model_info.py +0 -0
  26. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/interactive_text_editor.py +0 -0
  27. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/main.py +0 -0
  28. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/memory.py +0 -0
  29. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/model_info.py +0 -0
  30. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/model_info_list.py +0 -0
  31. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/model_info_litellm.py +0 -0
  32. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/model_names.py +0 -0
  33. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/prompts.py +0 -0
  34. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/quantlitellm.py +0 -0
  35. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/search_agent.py +0 -0
  36. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/__init__.py +0 -0
  37. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/agent_server.py +0 -0
  38. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/models.py +0 -0
  39. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/routes.py +0 -0
  40. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/state.py +0 -0
  41. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/static/js/event_visualizer.js +0 -0
  42. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/static/js/quantalogic.js +0 -0
  43. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/server/templates/index.html +0 -0
  44. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/task_file_reader.py +0 -0
  45. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/task_runner.py +0 -0
  46. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tool_manager.py +0 -0
  47. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/agent_tool.py +0 -0
  48. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/database/generate_database_report_tool.py +0 -0
  49. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/database/sql_query_tool_advanced.py +0 -0
  50. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/document_tools/markdown_to_docx_tool.py +0 -0
  51. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/document_tools/markdown_to_epub_tool.py +0 -0
  52. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/document_tools/markdown_to_html_tool.py +0 -0
  53. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/document_tools/markdown_to_ipynb_tool.py +0 -0
  54. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/document_tools/markdown_to_latex_tool.py +0 -0
  55. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/document_tools/markdown_to_pdf_tool.py +0 -0
  56. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/document_tools/markdown_to_pptx_tool.py +0 -0
  57. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/download_http_file_tool.py +0 -0
  58. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/duckduckgo_search_tool.py +0 -0
  59. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/edit_whole_content_tool.py +0 -0
  60. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/elixir_tool.py +0 -0
  61. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/execute_bash_command_tool.py +0 -0
  62. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/alpha_vantage_tool.py +0 -0
  63. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/ccxt_tool.py +0 -0
  64. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/finance_llm_tool.py +0 -0
  65. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/google_finance.py +0 -0
  66. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/market_intelligence_tool.py +0 -0
  67. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/technical_analysis_tool.py +0 -0
  68. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/tradingview_tool.py +0 -0
  69. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/finance/yahoo_finance.py +0 -0
  70. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/git/bitbucket_clone_repo_tool.py +0 -0
  71. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/git/bitbucket_operations_tool.py +0 -0
  72. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/git/clone_repo_tool.py +0 -0
  73. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/git/git_operations_tool.py +0 -0
  74. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/google_packages/google_news_tool.py +0 -0
  75. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/grep_app_tool.py +0 -0
  76. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/image_generation/dalle_e.py +0 -0
  77. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/input_question_tool.py +0 -0
  78. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/jinja_tool.py +0 -0
  79. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/__init__.py +0 -0
  80. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/c_handler.py +0 -0
  81. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/cpp_handler.py +0 -0
  82. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/go_handler.py +0 -0
  83. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/java_handler.py +0 -0
  84. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/javascript_handler.py +0 -0
  85. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/python_handler.py +0 -0
  86. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/rust_handler.py +0 -0
  87. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/scala_handler.py +0 -0
  88. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/language_handlers/typescript_handler.py +0 -0
  89. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/list_directory_tool.py +0 -0
  90. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/llm_tool.py +0 -0
  91. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/llm_vision_tool.py +0 -0
  92. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/markitdown_tool.py +0 -0
  93. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/nasa_packages/models.py +0 -0
  94. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/nasa_packages/nasa_apod_tool.py +0 -0
  95. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/nasa_packages/nasa_neows_tool.py +0 -0
  96. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/nasa_packages/services.py +0 -0
  97. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/nodejs_tool.py +0 -0
  98. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/presentation_tools/presentation_llm_tool.py +0 -0
  99. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/product_hunt/product_hunt_tool.py +0 -0
  100. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/product_hunt/services.py +0 -0
  101. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/python_tool.py +0 -0
  102. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/rag_tool/__init__.py +0 -0
  103. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/rag_tool/document_metadata.py +0 -0
  104. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/rag_tool/query_response.py +0 -0
  105. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/rag_tool/rag_tool.py +0 -0
  106. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/rag_tool/rag_tool_beta.py +0 -0
  107. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/read_file_block_tool.py +0 -0
  108. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/read_file_tool.py +0 -0
  109. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/read_html_tool.py +0 -0
  110. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/replace_in_file_tool.py +0 -0
  111. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/ripgrep_tool.py +0 -0
  112. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/safe_python_interpreter_tool.py +0 -0
  113. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/search_definition_names.py +0 -0
  114. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/sequence_tool.py +0 -0
  115. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/serpapi_search_tool.py +0 -0
  116. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/sql_query_tool.py +0 -0
  117. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/task_complete_tool.py +0 -0
  118. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/tool.py +0 -0
  119. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/unified_diff_tool.py +0 -0
  120. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/utilities/csv_processor_tool.py +0 -0
  121. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/utilities/download_file_tool.py +0 -0
  122. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/utilities/mermaid_validator_tool.py +0 -0
  123. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/utils/__init__.py +0 -0
  124. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/utils/create_sample_database.py +0 -0
  125. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/utils/generate_database_report.py +0 -0
  126. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/wikipedia_search_tool.py +0 -0
  127. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/tools/write_file_tool.py +0 -0
  128. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/__init__.py +0 -0
  129. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/ask_user_validation.py +0 -0
  130. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/async_utils.py +0 -0
  131. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/check_version.py +0 -0
  132. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/download_http_file.py +0 -0
  133. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/get_all_models.py +0 -0
  134. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/get_coding_environment.py +0 -0
  135. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/get_environment.py +0 -0
  136. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/get_quantalogic_rules_content.py +0 -0
  137. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/git_ls.py +0 -0
  138. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/lm_studio_model_info.py +0 -0
  139. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/python_interpreter.py +0 -0
  140. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/read_file.py +0 -0
  141. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/read_http_text_content.py +0 -0
  142. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/utils/xml_utility.py +0 -0
  143. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/version.py +0 -0
  144. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/version_check.py +0 -0
  145. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/welcome_message.py +0 -0
  146. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/xml_parser.py +0 -0
  147. {quantalogic-0.50.2 → quantalogic-0.50.5}/quantalogic/xml_tool_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: quantalogic
3
- Version: 0.50.2
3
+ Version: 0.50.5
4
4
  Summary: QuantaLogic ReAct Agents
5
5
  Author: Raphaël MANSUY
6
6
  Author-email: raphael.mansuy@gmail.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "quantalogic"
3
- version = "0.50.2"
3
+ version = "0.50.5"
4
4
  description = "QuantaLogic ReAct Agents"
5
5
  authors = ["Raphaël MANSUY <raphael.mansuy@gmail.com>"]
6
6
  readme = "README.md"
@@ -125,6 +125,13 @@ mkdocstrings-python = "^1.7.0"
125
125
  pymdown-extensions = "^10.3.1"
126
126
  mkdocs = "^1.6.0"
127
127
 
128
+ # Optional group for Composio integration
129
+ [tool.poetry.group.composio-tools]
130
+ optional = true
131
+
132
+ [tool.poetry.group.composio-tools.dependencies]
133
+ composio = "^0.1.1"
134
+
128
135
  # Optional group for additional utilities
129
136
  [tool.poetry.group.utilities]
130
137
  optional = true
@@ -139,7 +146,7 @@ faker = "^33.3.1"
139
146
  fuzzywuzzy = "^0.18.0"
140
147
  python-levenshtein = "^0.26.1"
141
148
  gnews = "^0.4.0"
142
- composio = "^0.1.1"
149
+
143
150
  bibtexparser = "^1.4.3"
144
151
  nbformat = "^5.10.4"
145
152
  ta = "^0.11.0"
@@ -32,7 +32,7 @@ class LazyLoader:
32
32
  # Map of tool names to their import paths and optional status
33
33
  _TOOL_IMPORTS = {
34
34
  "AgentTool": (".agent_tool", False),
35
- "ComposioTool": (".composio.composio", False),
35
+ "ComposioTool": (".composio.composio", True),
36
36
  "GenerateDatabaseReportTool": (".database.generate_database_report_tool", False),
37
37
  "SQLQueryToolAdvanced": (".database.sql_query_tool_advanced", False),
38
38
  "MarkdownToDocxTool": (".document_tools.markdown_to_docx_tool", True),
@@ -1,17 +1,32 @@
1
1
  """Tool for interacting with Composio API services."""
2
2
 
3
+ import importlib
4
+ import importlib.util
3
5
  import json
4
6
  import os
5
7
  import traceback
6
8
  from datetime import datetime
7
- from typing import Any, Dict, Optional
9
+ from typing import Any, Dict, Optional, Union, TYPE_CHECKING
10
+
11
+ # Type checking imports - these are only used for type hints and not at runtime
12
+ if TYPE_CHECKING:
13
+ from composio import ComposioToolSet
8
14
 
9
- from composio import Action, ComposioToolSet
10
15
  from loguru import logger
11
16
  from pydantic import BaseModel, ConfigDict, Field
12
17
 
13
18
  from quantalogic.tools.tool import Tool, ToolArgument
14
19
 
20
+ # Flag to check if composio is available
21
+ COMPOSIO_AVAILABLE = False
22
+
23
+ # Try to check if composio is importable without actually importing it
24
+ try:
25
+ spec = importlib.util.find_spec("composio")
26
+ COMPOSIO_AVAILABLE = spec is not None
27
+ except ImportError:
28
+ pass
29
+
15
30
 
16
31
  def setup_logger():
17
32
  """Configure Loguru logger with custom format and levels."""
@@ -72,7 +87,7 @@ class ComposioTool(Tool):
72
87
  )
73
88
  action: str = Field(default="") # Single action per tool instance
74
89
  action_schema: Optional[ActionSchema] = None
75
- toolset: Optional[ComposioToolSet] = None
90
+ toolset: Optional['ComposioToolSet'] = None
76
91
 
77
92
  # Performance tracking
78
93
  _last_execution_time: Optional[datetime] = None
@@ -96,6 +111,20 @@ class ComposioTool(Tool):
96
111
  need_validation: Whether this specific instance needs validation
97
112
  **data: Additional data for tool initialization
98
113
  """
114
+ # Check if composio is available
115
+ if not COMPOSIO_AVAILABLE:
116
+ logger.error("ComposioTool cannot be initialized: composio module is not installed")
117
+ raise ImportError("The 'composio' package is required to use ComposioTool. "
118
+ "Install it with 'pip install composio' or include it in your dependencies.")
119
+
120
+ # Import composio only when needed
121
+ try:
122
+ from composio import Action, ComposioToolSet
123
+ except ImportError:
124
+ logger.error("Failed to import composio module")
125
+ raise ImportError("The 'composio' package is required to use ComposioTool. "
126
+ "Install it with 'pip install composio' or include it in your dependencies.")
127
+
99
128
  logger.info(f"Initializing ComposioTool for action: {action}")
100
129
  start_time = datetime.now()
101
130
 
@@ -150,6 +179,14 @@ class ComposioTool(Tool):
150
179
 
151
180
  def _setup_action(self) -> None:
152
181
  """Set up the Composio action with its schema and parameters."""
182
+ # Import composio only when needed
183
+ try:
184
+ from composio import Action, ComposioToolSet
185
+ except ImportError:
186
+ logger.error("Failed to import composio module")
187
+ raise ImportError("The 'composio' package is required to use ComposioTool. "
188
+ "Install it with 'pip install composio' or include it in your dependencies.")
189
+
153
190
  logger.debug(f"Setting up action: {self.action}")
154
191
  start_time = datetime.now()
155
192
 
@@ -345,6 +382,14 @@ class ComposioTool(Tool):
345
382
 
346
383
  def execute(self, **kwargs: Any) -> str:
347
384
  """Execute the Composio action with the given parameters."""
385
+ # Import composio only when needed
386
+ try:
387
+ from composio import Action, ComposioToolSet
388
+ except ImportError:
389
+ logger.error("Failed to import composio module")
390
+ raise ImportError("The 'composio' package is required to use ComposioTool. "
391
+ "Install it with 'pip install composio' or include it in your dependencies.")
392
+
348
393
  start_time = datetime.now()
349
394
  self._execution_count += 1
350
395
  self._last_execution_time = start_time
File without changes
File without changes