quantalogic 0.33.4__py3-none-any.whl → 0.40.0__py3-none-any.whl
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.
- quantalogic/__init__.py +0 -4
- quantalogic/agent.py +603 -362
- quantalogic/agent_config.py +260 -28
- quantalogic/agent_factory.py +43 -17
- quantalogic/coding_agent.py +20 -12
- quantalogic/config.py +7 -4
- quantalogic/console_print_events.py +4 -8
- quantalogic/console_print_token.py +2 -2
- quantalogic/docs_cli.py +15 -10
- quantalogic/event_emitter.py +258 -83
- quantalogic/flow/__init__.py +23 -0
- quantalogic/flow/flow.py +595 -0
- quantalogic/flow/flow_extractor.py +672 -0
- quantalogic/flow/flow_generator.py +89 -0
- quantalogic/flow/flow_manager.py +407 -0
- quantalogic/flow/flow_manager_schema.py +169 -0
- quantalogic/flow/flow_yaml.md +419 -0
- quantalogic/generative_model.py +109 -77
- quantalogic/get_model_info.py +6 -6
- quantalogic/interactive_text_editor.py +100 -73
- quantalogic/main.py +36 -23
- quantalogic/model_info_list.py +12 -0
- quantalogic/model_info_litellm.py +14 -14
- quantalogic/prompts.py +2 -1
- quantalogic/{llm.py → quantlitellm.py} +29 -39
- quantalogic/search_agent.py +4 -4
- quantalogic/server/models.py +4 -1
- quantalogic/task_file_reader.py +5 -5
- quantalogic/task_runner.py +21 -20
- quantalogic/tool_manager.py +10 -21
- quantalogic/tools/__init__.py +98 -68
- quantalogic/tools/composio/composio.py +416 -0
- quantalogic/tools/{generate_database_report_tool.py → database/generate_database_report_tool.py} +4 -9
- quantalogic/tools/database/sql_query_tool_advanced.py +261 -0
- quantalogic/tools/document_tools/markdown_to_docx_tool.py +620 -0
- quantalogic/tools/document_tools/markdown_to_epub_tool.py +438 -0
- quantalogic/tools/document_tools/markdown_to_html_tool.py +362 -0
- quantalogic/tools/document_tools/markdown_to_ipynb_tool.py +319 -0
- quantalogic/tools/document_tools/markdown_to_latex_tool.py +420 -0
- quantalogic/tools/document_tools/markdown_to_pdf_tool.py +623 -0
- quantalogic/tools/document_tools/markdown_to_pptx_tool.py +319 -0
- quantalogic/tools/duckduckgo_search_tool.py +2 -4
- quantalogic/tools/finance/alpha_vantage_tool.py +440 -0
- quantalogic/tools/finance/ccxt_tool.py +373 -0
- quantalogic/tools/finance/finance_llm_tool.py +387 -0
- quantalogic/tools/finance/google_finance.py +192 -0
- quantalogic/tools/finance/market_intelligence_tool.py +520 -0
- quantalogic/tools/finance/technical_analysis_tool.py +491 -0
- quantalogic/tools/finance/tradingview_tool.py +336 -0
- quantalogic/tools/finance/yahoo_finance.py +236 -0
- quantalogic/tools/git/bitbucket_clone_repo_tool.py +181 -0
- quantalogic/tools/git/bitbucket_operations_tool.py +326 -0
- quantalogic/tools/git/clone_repo_tool.py +189 -0
- quantalogic/tools/git/git_operations_tool.py +532 -0
- quantalogic/tools/google_packages/google_news_tool.py +480 -0
- quantalogic/tools/grep_app_tool.py +123 -186
- quantalogic/tools/{dalle_e.py → image_generation/dalle_e.py} +37 -27
- quantalogic/tools/jinja_tool.py +6 -10
- quantalogic/tools/language_handlers/__init__.py +22 -9
- quantalogic/tools/list_directory_tool.py +131 -42
- quantalogic/tools/llm_tool.py +45 -15
- quantalogic/tools/llm_vision_tool.py +59 -7
- quantalogic/tools/markitdown_tool.py +17 -5
- quantalogic/tools/nasa_packages/models.py +47 -0
- quantalogic/tools/nasa_packages/nasa_apod_tool.py +232 -0
- quantalogic/tools/nasa_packages/nasa_neows_tool.py +147 -0
- quantalogic/tools/nasa_packages/services.py +82 -0
- quantalogic/tools/presentation_tools/presentation_llm_tool.py +396 -0
- quantalogic/tools/product_hunt/product_hunt_tool.py +258 -0
- quantalogic/tools/product_hunt/services.py +63 -0
- quantalogic/tools/rag_tool/__init__.py +48 -0
- quantalogic/tools/rag_tool/document_metadata.py +15 -0
- quantalogic/tools/rag_tool/query_response.py +20 -0
- quantalogic/tools/rag_tool/rag_tool.py +566 -0
- quantalogic/tools/rag_tool/rag_tool_beta.py +264 -0
- quantalogic/tools/read_html_tool.py +24 -38
- quantalogic/tools/replace_in_file_tool.py +10 -10
- quantalogic/tools/safe_python_interpreter_tool.py +10 -24
- quantalogic/tools/search_definition_names.py +2 -2
- quantalogic/tools/sequence_tool.py +14 -23
- quantalogic/tools/sql_query_tool.py +17 -19
- quantalogic/tools/tool.py +39 -15
- quantalogic/tools/unified_diff_tool.py +1 -1
- quantalogic/tools/utilities/csv_processor_tool.py +234 -0
- quantalogic/tools/utilities/download_file_tool.py +179 -0
- quantalogic/tools/utilities/mermaid_validator_tool.py +661 -0
- quantalogic/tools/utils/__init__.py +1 -4
- quantalogic/tools/utils/create_sample_database.py +24 -38
- quantalogic/tools/utils/generate_database_report.py +74 -82
- quantalogic/tools/wikipedia_search_tool.py +17 -21
- quantalogic/utils/ask_user_validation.py +1 -1
- quantalogic/utils/async_utils.py +35 -0
- quantalogic/utils/check_version.py +3 -5
- quantalogic/utils/get_all_models.py +2 -1
- quantalogic/utils/git_ls.py +21 -7
- quantalogic/utils/lm_studio_model_info.py +9 -7
- quantalogic/utils/python_interpreter.py +113 -43
- quantalogic/utils/xml_utility.py +178 -0
- quantalogic/version_check.py +1 -1
- quantalogic/welcome_message.py +7 -7
- quantalogic/xml_parser.py +0 -1
- {quantalogic-0.33.4.dist-info → quantalogic-0.40.0.dist-info}/METADATA +44 -1
- quantalogic-0.40.0.dist-info/RECORD +148 -0
- quantalogic-0.33.4.dist-info/RECORD +0 -102
- {quantalogic-0.33.4.dist-info → quantalogic-0.40.0.dist-info}/LICENSE +0 -0
- {quantalogic-0.33.4.dist-info → quantalogic-0.40.0.dist-info}/WHEEL +0 -0
- {quantalogic-0.33.4.dist-info → quantalogic-0.40.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,178 @@
|
|
1
|
+
import re
|
2
|
+
from typing import List, Type, TypeVar
|
3
|
+
|
4
|
+
from lxml import etree
|
5
|
+
from pydantic import BaseModel, Field
|
6
|
+
|
7
|
+
# Type variable for Pydantic model compatibility
|
8
|
+
T = TypeVar("T", bound=BaseModel)
|
9
|
+
|
10
|
+
|
11
|
+
def get_localname(tag: str) -> str:
|
12
|
+
"""
|
13
|
+
Extract the local name from a namespaced tag.
|
14
|
+
|
15
|
+
Args:
|
16
|
+
tag: The tag name, potentially with a namespace (e.g., '{http://example.com}name').
|
17
|
+
|
18
|
+
Returns:
|
19
|
+
The tag’s local name (e.g., 'name').
|
20
|
+
"""
|
21
|
+
return re.sub(r"^\{.*\}", "", tag)
|
22
|
+
|
23
|
+
|
24
|
+
def element_to_dict(element):
|
25
|
+
"""
|
26
|
+
Recursively convert an XML element to a dictionary for Pydantic parsing.
|
27
|
+
|
28
|
+
Args:
|
29
|
+
element: An lxml.etree.Element object.
|
30
|
+
|
31
|
+
Returns:
|
32
|
+
A dictionary representing the element’s structure.
|
33
|
+
- Attributes use '@' prefix (e.g., '@id').
|
34
|
+
- Text content (including CDATA) is stored as '#text'.
|
35
|
+
- Repeated tags become lists.
|
36
|
+
"""
|
37
|
+
result = {}
|
38
|
+
|
39
|
+
# Capture attributes with '@' prefix
|
40
|
+
if element.attrib:
|
41
|
+
for key, value in element.attrib.items():
|
42
|
+
result[f"@{get_localname(key)}"] = value
|
43
|
+
|
44
|
+
# Handle text content (including CDATA) if present
|
45
|
+
if element.text and element.text.strip():
|
46
|
+
result["#text"] = element.text.strip()
|
47
|
+
|
48
|
+
# Process child elements
|
49
|
+
for child in element:
|
50
|
+
child_dict = element_to_dict(child)
|
51
|
+
local_tag = get_localname(child.tag)
|
52
|
+
|
53
|
+
if local_tag in result:
|
54
|
+
# Convert to list for repeated tags
|
55
|
+
if not isinstance(result[local_tag], list):
|
56
|
+
result[local_tag] = [result[local_tag]]
|
57
|
+
result[local_tag].append(child_dict)
|
58
|
+
else:
|
59
|
+
result[local_tag] = child_dict
|
60
|
+
|
61
|
+
# For simple leaf elements with no children, attributes or just text content
|
62
|
+
# This optimization avoids unnecessary nesting but preserves structure for complex types
|
63
|
+
if (
|
64
|
+
len(element) == 0
|
65
|
+
and not element.attrib
|
66
|
+
and len(result) == 1
|
67
|
+
and "#text" in result
|
68
|
+
and
|
69
|
+
# Don't simplify these elements, they should remain as dictionaries
|
70
|
+
get_localname(element.tag) not in ["description"]
|
71
|
+
):
|
72
|
+
return result["#text"]
|
73
|
+
|
74
|
+
return result
|
75
|
+
|
76
|
+
|
77
|
+
def parse_xml_to_model(xml_content: str, model: Type[T]) -> T:
|
78
|
+
"""
|
79
|
+
Parse XML content into a Pydantic V2 model instance with fault tolerance.
|
80
|
+
|
81
|
+
Args:
|
82
|
+
xml_content: A string of XML data.
|
83
|
+
model: The Pydantic model class to instantiate.
|
84
|
+
|
85
|
+
Returns:
|
86
|
+
An instance of the specified Pydantic model, using defaults for missing fields.
|
87
|
+
|
88
|
+
Raises:
|
89
|
+
etree.XMLSyntaxError: If XML parsing fails despite recovery attempts.
|
90
|
+
pydantic.ValidationError: If data doesn’t match the model (after defaults).
|
91
|
+
"""
|
92
|
+
# Parse XML with fault-tolerant settings
|
93
|
+
parser = etree.XMLParser(recover=True)
|
94
|
+
root = etree.fromstring(xml_content, parser=parser)
|
95
|
+
# Convert to dictionary
|
96
|
+
data = element_to_dict(root)
|
97
|
+
# Validate and create Pydantic model instance, applying defaults
|
98
|
+
return model.model_validate(data)
|
99
|
+
|
100
|
+
|
101
|
+
# Test Models with Default Values
|
102
|
+
class Person(BaseModel):
|
103
|
+
name: str = "Unnamed" # Default value for missing name
|
104
|
+
age: int = 0 # Default value for missing age
|
105
|
+
|
106
|
+
|
107
|
+
class Description(BaseModel):
|
108
|
+
content: str = Field(default="No description", alias="#text")
|
109
|
+
type: str = Field(default="unknown", alias="@type")
|
110
|
+
|
111
|
+
|
112
|
+
class Item(BaseModel):
|
113
|
+
description: Description = Field(default_factory=lambda: Description(content="Default content", type="default"))
|
114
|
+
|
115
|
+
|
116
|
+
class People(BaseModel):
|
117
|
+
person: List[Person] = Field(default_factory=lambda: [Person(name="Default Person", age=99)])
|
118
|
+
|
119
|
+
|
120
|
+
def main():
|
121
|
+
"""Run example tests to demonstrate XML parsing with Pydantic default values."""
|
122
|
+
# Test 1: Simple XML with all fields present
|
123
|
+
print("Test 1: Simple XML (all fields present)")
|
124
|
+
xml1 = """
|
125
|
+
<person>
|
126
|
+
<name>John</name>
|
127
|
+
<age>30</age>
|
128
|
+
</person>
|
129
|
+
"""
|
130
|
+
person = parse_xml_to_model(xml1, Person)
|
131
|
+
print(f"Result: {person}")
|
132
|
+
|
133
|
+
# Test 2: Missing element (use default for age)
|
134
|
+
print("\nTest 2: Missing element (default age)")
|
135
|
+
xml2 = """
|
136
|
+
<person>
|
137
|
+
<name>Jane</name>
|
138
|
+
</person>
|
139
|
+
"""
|
140
|
+
person = parse_xml_to_model(xml2, Person)
|
141
|
+
print(f"Result: {person}")
|
142
|
+
|
143
|
+
# Test 3: Attributes and CDATA with missing attribute
|
144
|
+
print("\nTest 3: Missing attribute (default type)")
|
145
|
+
xml3 = """
|
146
|
+
<item>
|
147
|
+
<description><![CDATA[This is text]]></description>
|
148
|
+
</item>
|
149
|
+
"""
|
150
|
+
item = parse_xml_to_model(xml3, Item)
|
151
|
+
print(f"Result: {item}")
|
152
|
+
|
153
|
+
# Test 4: Empty XML (use default for nested object)
|
154
|
+
print("\nTest 4: Empty XML (default Item)")
|
155
|
+
xml4 = "<item></item>"
|
156
|
+
item = parse_xml_to_model(xml4, Item)
|
157
|
+
print(f"Result: {item}")
|
158
|
+
|
159
|
+
# Test 5: Repeated elements with partial data
|
160
|
+
print("\nTest 5: Repeated elements (partial data)")
|
161
|
+
xml5 = """
|
162
|
+
<people>
|
163
|
+
<person><name>John</name></person>
|
164
|
+
<person><age>25</age></person>
|
165
|
+
</people>
|
166
|
+
"""
|
167
|
+
people = parse_xml_to_model(xml5, People)
|
168
|
+
print(f"Result: {people}")
|
169
|
+
|
170
|
+
# Test 6: Completely empty root (use default list)
|
171
|
+
print("\nTest 6: Empty root (default People)")
|
172
|
+
xml6 = "<people></people>"
|
173
|
+
people = parse_xml_to_model(xml6, People)
|
174
|
+
print(f"Result: {people}")
|
175
|
+
|
176
|
+
|
177
|
+
if __name__ == "__main__":
|
178
|
+
main()
|
quantalogic/version_check.py
CHANGED
@@ -11,7 +11,7 @@ from quantalogic.version import get_version
|
|
11
11
|
|
12
12
|
def check_new_version() -> None:
|
13
13
|
"""Randomly check for updates and display a notification if a new version is available.
|
14
|
-
|
14
|
+
|
15
15
|
This function has a 1 in 10 chance of running when called. When it runs, it checks
|
16
16
|
if there's a newer version of the package available and displays an update panel
|
17
17
|
with installation instructions if a new version is found.
|
quantalogic/welcome_message.py
CHANGED
@@ -35,16 +35,16 @@ def create_tips_section() -> str:
|
|
35
35
|
|
36
36
|
def display_welcome_message(
|
37
37
|
console: Console,
|
38
|
-
model_name: str,
|
38
|
+
model_name: str,
|
39
39
|
version: str,
|
40
|
-
vision_model_name: str | None = None,
|
41
|
-
max_iterations: int = 50,
|
40
|
+
vision_model_name: str | None = None,
|
41
|
+
max_iterations: int = 50,
|
42
42
|
compact_every_n_iteration: int | None = None,
|
43
43
|
max_tokens_working_memory: int | None = None,
|
44
44
|
mode: str = "basic",
|
45
45
|
) -> None:
|
46
46
|
"""Display a welcome message and instructions for the QuantaLogic AI Assistant.
|
47
|
-
|
47
|
+
|
48
48
|
Args:
|
49
49
|
console: Rich Console instance for rendering output
|
50
50
|
model_name: Name of the language model being used
|
@@ -63,7 +63,7 @@ def display_welcome_message(
|
|
63
63
|
compact_every_n_iteration,
|
64
64
|
max_tokens_working_memory,
|
65
65
|
)
|
66
|
-
|
66
|
+
|
67
67
|
tips_section = create_tips_section()
|
68
68
|
|
69
69
|
welcome_content = (
|
@@ -74,7 +74,7 @@ def display_welcome_message(
|
|
74
74
|
"[bold magenta]Pro Tips[/bold magenta]\n"
|
75
75
|
f"{tips_section}\n"
|
76
76
|
)
|
77
|
-
|
77
|
+
|
78
78
|
welcome_panel = Panel(
|
79
79
|
welcome_content,
|
80
80
|
border_style="blue",
|
@@ -82,5 +82,5 @@ def display_welcome_message(
|
|
82
82
|
subtitle="[bold cyan]Ready to assist you[/bold cyan]",
|
83
83
|
padding=(1, 2),
|
84
84
|
)
|
85
|
-
|
85
|
+
|
86
86
|
console.print(welcome_panel)
|
quantalogic/xml_parser.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: quantalogic
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.40.0
|
4
4
|
Summary: QuantaLogic ReAct Agents
|
5
5
|
Author: Raphaël MANSUY
|
6
6
|
Author-email: raphael.mansuy@gmail.com
|
@@ -9,20 +9,41 @@ Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.12
|
10
10
|
Classifier: Programming Language :: Python :: 3.13
|
11
11
|
Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
|
12
|
+
Requires-Dist: bibtexparser (>=1.4.3,<2.0.0)
|
12
13
|
Requires-Dist: boto3 (>=1.35.86,<2.0.0)
|
14
|
+
Requires-Dist: ccxt (>=4.4.61,<5.0.0)
|
15
|
+
Requires-Dist: chromadb (>=0.6.3,<0.7.0)
|
13
16
|
Requires-Dist: click (>=8.1.8,<9.0.0)
|
17
|
+
Requires-Dist: composio (>=0.1.1,<0.2.0)
|
14
18
|
Requires-Dist: duckduckgo-search (>=7.2.1,<8.0.0)
|
19
|
+
Requires-Dist: ebooklib (>=0.18,<0.19)
|
20
|
+
Requires-Dist: epub (>=0.5.2,<0.6.0)
|
21
|
+
Requires-Dist: faiss-cpu (>=1.10.0,<2.0.0)
|
15
22
|
Requires-Dist: faker (>=33.3.1,<34.0.0)
|
16
23
|
Requires-Dist: fastapi (>=0.115.6,<0.116.0)
|
17
24
|
Requires-Dist: fuzzywuzzy (>=0.18.0,<0.19.0)
|
25
|
+
Requires-Dist: gitpython (>=3.1.44,<4.0.0)
|
26
|
+
Requires-Dist: gnews (>=0.4.0,<0.5.0)
|
18
27
|
Requires-Dist: google-auth (>=2.20.0,<3.0.0)
|
19
28
|
Requires-Dist: google-search-results (>=2.4.2,<3.0.0)
|
29
|
+
Requires-Dist: html2text (>=2024.2.26,<2025.0.0)
|
30
|
+
Requires-Dist: instructor (>=1.7.2,<2.0.0)
|
31
|
+
Requires-Dist: ipython (>=8.32.0,<9.0.0)
|
20
32
|
Requires-Dist: jinja2 (>=3.1.5,<4.0.0)
|
21
33
|
Requires-Dist: litellm (>=1.56.4,<2.0.0)
|
34
|
+
Requires-Dist: llama-index (>=0.12.19,<0.13.0)
|
35
|
+
Requires-Dist: llama-index-embeddings-bedrock (>=0.5.0,<0.6.0)
|
36
|
+
Requires-Dist: llama-index-embeddings-huggingface (>=0.5.1,<0.6.0)
|
37
|
+
Requires-Dist: llama-index-embeddings-instructor (>=0.3.0,<0.4.0)
|
38
|
+
Requires-Dist: llama-index-embeddings-openai (>=0.3.1,<0.4.0)
|
39
|
+
Requires-Dist: llama-index-vector-stores-chroma (>=0.4.1,<0.5.0)
|
40
|
+
Requires-Dist: llama-index-vector-stores-faiss (>=0.3.0,<0.4.0)
|
22
41
|
Requires-Dist: llmlingua (>=0.2.2,<0.3.0)
|
23
42
|
Requires-Dist: loguru (>=0.7.3,<0.8.0)
|
43
|
+
Requires-Dist: markdown (>=3.7,<4.0)
|
24
44
|
Requires-Dist: markdownify (>=0.14.1,<0.15.0)
|
25
45
|
Requires-Dist: markitdown (>=0.0.1a3,<0.0.2)
|
46
|
+
Requires-Dist: mermaid-py (>=0.7.0,<0.8.0)
|
26
47
|
Requires-Dist: mkdocs-git-revision-date-localized-plugin (>=1.2.0,<2.0.0)
|
27
48
|
Requires-Dist: mkdocs-macros-plugin (>=1.0.4,<2.0.0)
|
28
49
|
Requires-Dist: mkdocs-material[imaging] (>=9.5.49,<10.0.0)
|
@@ -30,19 +51,32 @@ Requires-Dist: mkdocs-mermaid2-plugin (>=1.1.1,<2.0.0)
|
|
30
51
|
Requires-Dist: mkdocs-minify-plugin (>=0.7.1,<0.8.0)
|
31
52
|
Requires-Dist: mkdocstrings (>=0.24.0,<0.25.0)
|
32
53
|
Requires-Dist: mkdocstrings-python (>=1.7.0,<2.0.0)
|
54
|
+
Requires-Dist: nbformat (>=5.10.4,<6.0.0)
|
33
55
|
Requires-Dist: networkx (>=3.4.2,<4.0.0)
|
56
|
+
Requires-Dist: numpy (>=2.2.3,<3.0.0)
|
57
|
+
Requires-Dist: pandas (>=2.2.3,<3.0.0)
|
34
58
|
Requires-Dist: pathspec (>=0.12.1,<0.13.0)
|
59
|
+
Requires-Dist: pillow (>=10.2,<11.0)
|
60
|
+
Requires-Dist: pinecone-client (>=6.0.0,<7.0.0)
|
35
61
|
Requires-Dist: prompt-toolkit (>=3.0.48,<4.0.0)
|
36
62
|
Requires-Dist: pydantic (>=2.10.4,<3.0.0)
|
63
|
+
Requires-Dist: pygments (>=2.19.1,<3.0.0)
|
37
64
|
Requires-Dist: pymdown-extensions (>=10.3.1,<11.0.0)
|
65
|
+
Requires-Dist: pypdf (>=5.3.0,<6.0.0)
|
66
|
+
Requires-Dist: python-docx (>=1.1.2,<2.0.0)
|
38
67
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
39
68
|
Requires-Dist: python-levenshtein (>=0.26.1,<0.27.0)
|
69
|
+
Requires-Dist: python-multipart (>=0.0.20,<0.0.21)
|
70
|
+
Requires-Dist: python-pptx (>=1.0.2,<2.0.0)
|
40
71
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
41
72
|
Requires-Dist: rich (>=13.9.4,<14.0.0)
|
42
73
|
Requires-Dist: serpapi (>=0.1.5,<0.2.0)
|
43
74
|
Requires-Dist: sqlalchemy (>=2.0.37,<3.0.0)
|
75
|
+
Requires-Dist: ta (>=0.11.0,<0.12.0)
|
44
76
|
Requires-Dist: tenacity (>=9.0.0,<10.0.0)
|
45
77
|
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
78
|
+
Requires-Dist: torch (>=2.6.0,<3.0.0)
|
79
|
+
Requires-Dist: transformers (>=4.49.0,<5.0.0)
|
46
80
|
Requires-Dist: tree-sitter (>=0.23.2,<0.24.0)
|
47
81
|
Requires-Dist: tree-sitter-c (>=0.23.4,<0.24.0)
|
48
82
|
Requires-Dist: tree-sitter-cpp (>=0.23.4,<0.24.0)
|
@@ -53,9 +87,12 @@ Requires-Dist: tree-sitter-python (>=0.23.6,<0.24.0)
|
|
53
87
|
Requires-Dist: tree-sitter-rust (>=0.23.2,<0.24.0)
|
54
88
|
Requires-Dist: tree-sitter-scala (>=0.23.4,<0.24.0)
|
55
89
|
Requires-Dist: tree-sitter-typescript (>=0.23.2,<0.24.0)
|
90
|
+
Requires-Dist: tvDatafeed @ git+https://github.com/rongardF/tvdatafeed.git
|
56
91
|
Requires-Dist: types-requests (>=2.32.0.20241016,<3.0.0.0)
|
57
92
|
Requires-Dist: uvicorn (>=0.34.0,<0.35.0)
|
93
|
+
Requires-Dist: weasyprint (>=64.0,<65.0)
|
58
94
|
Requires-Dist: websocket (>=0.2.1,<0.3.0)
|
95
|
+
Requires-Dist: yfinance (>=0.2.53,<0.3.0)
|
59
96
|
Description-Content-Type: text/markdown
|
60
97
|
|
61
98
|
# QuantaLogic
|
@@ -185,6 +222,9 @@ See our [Release Notes](RELEASE_NOTES.MD) for detailed version history and chang
|
|
185
222
|
| openrouter/mistralai/mistral-large-2411 | OPENROUTER_API_KEY | Mistral's large model optimized for complex reasoning tasks, available through OpenRouter with enhanced multilingual capabilities. |
|
186
223
|
| mistral/mistral-large-2407 | MISTRAL_API_KEY | Mistral's high-performance model designed for enterprise-grade applications, offering advanced reasoning and multilingual support. |
|
187
224
|
| nvidia/deepseek-ai/deepseek-r1 | NVIDIA_API_KEY | NVIDIA's DeepSeek R1 model optimized for high-performance AI tasks and advanced reasoning capabilities. |
|
225
|
+
| gemini/gemini-2.0-flash | GEMINI_API_KEY | Google's Gemini Flash 2.0 model offering a balance of speed and performance for various tasks. |
|
226
|
+
| openrouter/google/gemini-2.0-flash-001 | OPENROUTER_API_KEY | Google's Gemini Flash 2.0 model offering a balance of speed and performance for various tasks through the OpenRouter platform. |
|
227
|
+
| ovh/DeepSeek-R1-Distill-Llama-70B | OVH_API_KEY | DeepSeek's R1 model optimized for research and development tasks hosted on OVH in France. |
|
188
228
|
| lm_studio/mistral-small-24b-instruct-2501 | LM_STUDIO_API_KEY | LM Studio's Mistral Small model optimized for local inference with advanced reasoning capabilities. |
|
189
229
|
| dashscope/qwen-max | DASHSCOPE_API_KEY | Alibaba's Qwen-Max model optimized for maximum performance and extensive reasoning capabilities. |
|
190
230
|
| dashscope/qwen-plus | DASHSCOPE_API_KEY | Alibaba's Qwen-Plus model offering balanced performance and cost-efficiency for a variety of tasks. |
|
@@ -352,6 +392,9 @@ The core agent implements the `ReAct`paradigm, combining:
|
|
352
392
|
- Event handling
|
353
393
|
- Task validation
|
354
394
|
|
395
|
+
QuantaLogic offers both synchronous (`solve_task`) and asynchronous (`async_solve_task`) methods for solving tasks using the ReAct framework. The `async_solve_task` function is specifically designed for asynchronous environments like web servers, allowing for non-blocking execution and improved responsiveness. It takes a task description as input and iteratively reasons and acts upon it using available tools until the task is completed or a maximum number of iterations is reached. This asynchronous approach ensures that the agent can handle complex tasks without tying up resources, making it suitable for applications requiring concurrency and scalability.
|
396
|
+
|
397
|
+
|
355
398
|
```python
|
356
399
|
from quantalogic import Agent
|
357
400
|
from quantalogic.tools import PythonTool, ReadFileTool
|
@@ -0,0 +1,148 @@
|
|
1
|
+
quantalogic/__init__.py,sha256=TWC4r1-av6ZZ2RdZ4FBU0oPYZQVPOv0p6gmEey1e4lQ,776
|
2
|
+
quantalogic/agent.py,sha256=1sZfPmQGLG6sJKoeVp59JN666anywVRWkZk4xZT4160,43298
|
3
|
+
quantalogic/agent_config.py,sha256=RTB7VPK_Sxs1OqIDv1c3t9W25JRRfvpxMVmiumtzTVU,18012
|
4
|
+
quantalogic/agent_factory.py,sha256=pk_jTbRsrtXMFD42wBWncnm23zRucIjYC-EE3kHNTio,6264
|
5
|
+
quantalogic/coding_agent.py,sha256=K7BBE98l1wwE7USOTPWOnPA3jjSABkTzNPHNXx1cYWo,5492
|
6
|
+
quantalogic/config.py,sha256=lsJxfWFWEMqS2Asus8z4A3W7X8JWoMi3-VHxfltvSfA,423
|
7
|
+
quantalogic/console_print_events.py,sha256=yDtfOr7s5r_gLTgwkl_XoKSkUqNRZhqqq4hwR_oJsUw,2050
|
8
|
+
quantalogic/console_print_token.py,sha256=5IRVoPhwWZtSc4LpNoAsCQhCB_RnAW9chycGgyD3_5U,437
|
9
|
+
quantalogic/docs_cli.py,sha256=Ie6NwKQuxLKwVQ-cjhFMCttXeiHDjGhNY4hSmMtc0Qg,1664
|
10
|
+
quantalogic/event_emitter.py,sha256=e_1r6hvx5GmW84iuRkoqcjpjRiYHBk4hzujd5ZoUC6U,16777
|
11
|
+
quantalogic/flow/__init__.py,sha256=asLVwbDH6zVFhILschBOuZZWyKvMGdqhQbB1rd2RXHo,590
|
12
|
+
quantalogic/flow/flow.py,sha256=-rePJXUSZFpBkfhpoAHktX-ISSQSICyog9U7bXUMgow,24931
|
13
|
+
quantalogic/flow/flow_extractor.py,sha256=UsE8FP1NHlMQYyjmvsQQQvldKws5BshI4N-K234zJy0,29817
|
14
|
+
quantalogic/flow/flow_generator.py,sha256=WmRE3zcGpSryjmc8ambSDW2QVUbAXYo2VfANJP1x8po,3878
|
15
|
+
quantalogic/flow/flow_manager.py,sha256=UaI1MLThruGSDXAFVpLfCop5QrT2jh_UWWScc5ZE_nw,18065
|
16
|
+
quantalogic/flow/flow_manager_schema.py,sha256=BMy1hoEZCxRDcEXfG2u4pwwdfn10Y-iho37SO9Cii3c,7268
|
17
|
+
quantalogic/flow/flow_yaml.md,sha256=fHGL7xP8XA1mYk8PdJMN83nqUS9rETjzMPEjxR3l7H0,14462
|
18
|
+
quantalogic/generative_model.py,sha256=os30wdVRq3OsSf8M7TjoaGqJweL99UINQtSGCwoE91k,15913
|
19
|
+
quantalogic/get_model_info.py,sha256=RgblwjjP7G97v_AzoGbXxXBIO082jVCRmvRwxnEpW_s,2991
|
20
|
+
quantalogic/interactive_text_editor.py,sha256=CzefvRiLscFfOKBS4gmrI10Gn3SF_eS5zbiLVQ9Gugw,16334
|
21
|
+
quantalogic/main.py,sha256=jVw-s-ZUyX4krq3rzFn84-i6Qw2tplTx_QmsKG03m8I,9591
|
22
|
+
quantalogic/memory.py,sha256=zbtRuM05jaS2lJll-92dt5JfYVLERnF_m_9xqp2x-k0,6304
|
23
|
+
quantalogic/model_info.py,sha256=j7QqvjEFQDGpDOgQs8uTkVyI3a50Oa_nrsQjyxizTLc,272
|
24
|
+
quantalogic/model_info_list.py,sha256=Xeeb7QS4xEpe9ke7Guh0CxEx-Hl59U4kC-qzVts-eAU,2437
|
25
|
+
quantalogic/model_info_litellm.py,sha256=PoYCqqiKnKDIoeC_GdF17TNJV7aEj-tifyR79W5S9A8,1799
|
26
|
+
quantalogic/model_names.py,sha256=UZlz25zG9B2dpfwdw_e1Gw5qFsKQ7iME9FJh9Ts4u6s,938
|
27
|
+
quantalogic/prompts.py,sha256=Vtr-GXgJw7vFUv0okzSaLc1ak1sgOh4XoRa8EI01HDM,2988
|
28
|
+
quantalogic/quantlitellm.py,sha256=c8cWIq06-iwFVuB6aBoSCY1GPMmzKfr7pm2gfHfNj8Y,5526
|
29
|
+
quantalogic/search_agent.py,sha256=tr0cwscJ4wu_G1aumjFyvGHQ0eQv5OL5sxj17s6Ocls,2470
|
30
|
+
quantalogic/server/__init__.py,sha256=8sz_PYAUCrkM6JM5EAUeIzNM4NPW6j6UT72JVkc21WQ,91
|
31
|
+
quantalogic/server/agent_server.py,sha256=VXaaWqReUSZOCX7CaKS14jria8yZn1kLEc52E2hV7ZA,22510
|
32
|
+
quantalogic/server/models.py,sha256=_j6dAx3L_w0kiP55vcC5uykJJRfChV2K3uL_xAPnsms,1447
|
33
|
+
quantalogic/server/routes.py,sha256=00nFe6s0T4Gv8vCp0wQFjWGo1tC8FViH8h0koAJdWs4,4216
|
34
|
+
quantalogic/server/state.py,sha256=TwtL0BTp_LT-fynF1IR4k8WVXuxXWtSv3NgWG9fuUME,7369
|
35
|
+
quantalogic/server/static/js/event_visualizer.js,sha256=eFkkWyNZw3zOZlF18kxbfsWql8a2C13qBFEOAPzrj88,19646
|
36
|
+
quantalogic/server/static/js/quantalogic.js,sha256=x7TrlZGR1Y0WLK2DWl1xY847BhEWMPnL0Ua7KtOldUc,22311
|
37
|
+
quantalogic/server/templates/index.html,sha256=nDnXJoQEm1vXbhXtgaYk0G5VXj0wwzE6KrqEDhHFpj4,7773
|
38
|
+
quantalogic/task_file_reader.py,sha256=oPcB4vTxJ__Y8o7VVABIPOkVw3tGDMdQYwdK27PERlE,1440
|
39
|
+
quantalogic/task_runner.py,sha256=c2QVGKZfHA0wZIBUvehpjMvtRaKZuhuYQerjIiCC9iY,10053
|
40
|
+
quantalogic/tool_manager.py,sha256=vNA7aBKgdU3wpw_goom6i9rg_64pNZapNxvg4cUhhCI,6983
|
41
|
+
quantalogic/tools/__init__.py,sha256=7_IhMLCJW3Hj1Uo0bXqFqIP71YQ2VTLBPCFCX6AnSag,4212
|
42
|
+
quantalogic/tools/agent_tool.py,sha256=MXCXxWHRch7VK4UWhtRP1jeI8Np9Ne2CUGo8vm1oZiM,3064
|
43
|
+
quantalogic/tools/composio/composio.py,sha256=icVHA_Scr1pViBhahGGBGBRBl9JSB3hGSqpgQzAIUH8,17627
|
44
|
+
quantalogic/tools/database/generate_database_report_tool.py,sha256=lGgER2VuHqnxliPM806tbwJh7WRW9HJcbBLL7QMvVBQ,1861
|
45
|
+
quantalogic/tools/database/sql_query_tool_advanced.py,sha256=Vale-5nR3e-Mm4joOBII8T1PbLcshXYbM8Mp4TJsS30,9425
|
46
|
+
quantalogic/tools/document_tools/markdown_to_docx_tool.py,sha256=r5AOyQfpcDoqQ6_g2uYyVjTEPtfeNn4mDmmefNZmJyM,22553
|
47
|
+
quantalogic/tools/document_tools/markdown_to_epub_tool.py,sha256=iFIUTty7bIuOV7nbSfCuzBvOWJBmSP1TBFxf74184X4,14031
|
48
|
+
quantalogic/tools/document_tools/markdown_to_html_tool.py,sha256=ngwU3RAj05Ghua2yqmpkpws09XYfjDpcg4MuONHNvO8,12030
|
49
|
+
quantalogic/tools/document_tools/markdown_to_ipynb_tool.py,sha256=cL5-uTBud3VA80zFoBdN5Qzv-7q7r30BmP3lktLjHu4,10940
|
50
|
+
quantalogic/tools/document_tools/markdown_to_latex_tool.py,sha256=SxQ9gdDm2KuAuI4KYqDNCUVjEmjl7qreZr2eowrG8mo,14332
|
51
|
+
quantalogic/tools/document_tools/markdown_to_pdf_tool.py,sha256=EZOXPlF2pn10XzzOVFXqOopSP35tqXuj-YrFzeS5xQg,21077
|
52
|
+
quantalogic/tools/document_tools/markdown_to_pptx_tool.py,sha256=Bg79e1us2GAjB8vUa3COk2XgXM_FUQF28zWBIitYAC8,11085
|
53
|
+
quantalogic/tools/download_http_file_tool.py,sha256=wTfanbXjIRi5-qrbluuLvNmDNhvmYAnlMVb3dO8C2ss,2210
|
54
|
+
quantalogic/tools/duckduckgo_search_tool.py,sha256=oY-aW7zbo1f39DmjwGfaXVxXRi3pKgIuTPR1vCqsX9I,6991
|
55
|
+
quantalogic/tools/edit_whole_content_tool.py,sha256=nXmpAvojvqvAcqNMy1kUKZ1ocboky_ZcnCR4SNCSPgw,2360
|
56
|
+
quantalogic/tools/elixir_tool.py,sha256=fzPPtAW-Koy9KB0r5k2zV1f1U0WphL-LXPPOBkeNkug,7652
|
57
|
+
quantalogic/tools/execute_bash_command_tool.py,sha256=YK_cMuODJDOYheZKGmlpZTxJdVbimFLCUlND2_zmyMg,6869
|
58
|
+
quantalogic/tools/finance/alpha_vantage_tool.py,sha256=2nAOTGlxKePM2VnBOtDTfHJH4WgM8ys81WDGV2SDIgo,16526
|
59
|
+
quantalogic/tools/finance/ccxt_tool.py,sha256=kCLrAzy-Zc0Bz7Ey8Jdi9RhyaQp6L7d2Q3Mnu_lPueU,15411
|
60
|
+
quantalogic/tools/finance/finance_llm_tool.py,sha256=1_lBkYCSfzNPUpHn5P2sWh3D6vGYQk1UD_dTl1naT0U,15564
|
61
|
+
quantalogic/tools/finance/google_finance.py,sha256=wry0URGQmTUYbmOmCp3TxVvzVKcFtdVkihcuG-waG4U,7344
|
62
|
+
quantalogic/tools/finance/market_intelligence_tool.py,sha256=dPHOFZ18-AwVSuwkOKAE1kypdhrFP7EcZC6Ke4Izhcc,20320
|
63
|
+
quantalogic/tools/finance/technical_analysis_tool.py,sha256=n7opf4wP8ty2EystqISfXPN89YFi0n_nguaNgaQb0To,18497
|
64
|
+
quantalogic/tools/finance/tradingview_tool.py,sha256=n4JMFkZ5tdqhT9DGPUNgb1KPOTytYoPBvUhKd7hDczc,13629
|
65
|
+
quantalogic/tools/finance/yahoo_finance.py,sha256=xzH5Rikp_KXzcyVuXlZSty0PPO-pflp3mgfZn9bR-yY,9487
|
66
|
+
quantalogic/tools/git/bitbucket_clone_repo_tool.py,sha256=Vy3J802f7gPGrnbZhfWHN1Jb36gNNxuJ71k3VI2sZ-Q,7491
|
67
|
+
quantalogic/tools/git/bitbucket_operations_tool.py,sha256=6Vdelau1VSTYREtuQgHlV-t6Te-RuQKA6oCuLUkDDcc,11802
|
68
|
+
quantalogic/tools/git/clone_repo_tool.py,sha256=FA_29pmEsy_71YSrt94M0rAUNt_rEo4TDvq2Y7-uinU,7565
|
69
|
+
quantalogic/tools/git/git_operations_tool.py,sha256=tZqY7fXXfiLkArV_18pEmqreqF6n6BALo0jFy4Hjzfs,20610
|
70
|
+
quantalogic/tools/google_packages/google_news_tool.py,sha256=BdrSlBxCZ1PfWIKzl7_aqvkoV2wVkBH3T2g3X2VBvVQ,17443
|
71
|
+
quantalogic/tools/grep_app_tool.py,sha256=qAKgqMTtoH82bEZkiNlIk5oDSgVckFgxVXhU7ieTJwc,18672
|
72
|
+
quantalogic/tools/image_generation/dalle_e.py,sha256=SYvKZ1VbdslIKUKBy3nC0jD680-ujabBQr6iK5IFAXY,10968
|
73
|
+
quantalogic/tools/input_question_tool.py,sha256=UoTlNhdmdr-eyiVtVCG2qJe_R4bU_ag-DzstSdmYkvM,1848
|
74
|
+
quantalogic/tools/jinja_tool.py,sha256=i49F6lSdTx5KMgP5Y9KKYprcc_OEc11TvEqqtDA5mas,2849
|
75
|
+
quantalogic/tools/language_handlers/__init__.py,sha256=5FSwHqTXzRL52Eme4yocw1RzOqWCVq7a5FyLEd7uSEM,1161
|
76
|
+
quantalogic/tools/language_handlers/c_handler.py,sha256=q_NiOExbnfYyzxz4C0V5B5887d_D8LYr30tTEVj4LH8,1226
|
77
|
+
quantalogic/tools/language_handlers/cpp_handler.py,sha256=7iFBuidI_yMSbC0RL4A3mKPjLWKxW7AoRrtUTlBnpyw,1241
|
78
|
+
quantalogic/tools/language_handlers/go_handler.py,sha256=v8nxfhGMRxBf1xbrP0xUd2r4HsAtu-VK9OeXpv8FRoM,1230
|
79
|
+
quantalogic/tools/language_handlers/java_handler.py,sha256=MGGqmmnec9DsXijjAyPu7XZBsK-lCQAJSpd6ZK42nio,1443
|
80
|
+
quantalogic/tools/language_handlers/javascript_handler.py,sha256=kqtm3MOazyYCYzsT-L3OtkDt54B1m3AWk0Ya9nQx4VM,1729
|
81
|
+
quantalogic/tools/language_handlers/python_handler.py,sha256=ijOQuWoKQvNvV7uo1t308sipYEbPNfZ8R-u71TStNus,1220
|
82
|
+
quantalogic/tools/language_handlers/rust_handler.py,sha256=t_AqKVa3KVk6SVkq_UjUUru0Za8ueCAnanv8w3B815A,1234
|
83
|
+
quantalogic/tools/language_handlers/scala_handler.py,sha256=wr-cWOIFOc0UYwODmEtT6rV63Qf1NyNB_BLo23GLrvk,1281
|
84
|
+
quantalogic/tools/language_handlers/typescript_handler.py,sha256=L4vuJMYxKO3_83dQhdwZ9fogauIV7rwoicRT0xLGfkQ,1738
|
85
|
+
quantalogic/tools/list_directory_tool.py,sha256=OGgori1d2EEU_0HMA_YH_0dn23M4Trp38s-XnKBx7Kg,7443
|
86
|
+
quantalogic/tools/llm_tool.py,sha256=8HOdYqHNuwIYxEYT-QWGQWWnf7iT-YoXnz5T1reFPGg,8440
|
87
|
+
quantalogic/tools/llm_vision_tool.py,sha256=u-Yd5IIeW9Aw7mUqU2wZ5tQcRtDt_tTLJZzdlZJPfnE,7724
|
88
|
+
quantalogic/tools/markitdown_tool.py,sha256=KHvazxp6zT7h6-qMCdfuH_9pHQ6rDQOI3yiGIabTSCU,4804
|
89
|
+
quantalogic/tools/nasa_packages/models.py,sha256=qydZqUL5Vyl1XZbTYhP34RbccrrCpVKQxtTd1m5PhZs,1767
|
90
|
+
quantalogic/tools/nasa_packages/nasa_apod_tool.py,sha256=t8V3nklLpRkShd27OHN0nF4RtjNEM0qC4jrDch2TgEI,7460
|
91
|
+
quantalogic/tools/nasa_packages/nasa_neows_tool.py,sha256=RBfysLwddoNZyNPhEtp6AsLECR2pIKj5pOjUbBbhCWo,4949
|
92
|
+
quantalogic/tools/nasa_packages/services.py,sha256=fifGphF99QwjJo-z2RhF3xxFRQGNoufyKNYHQY-qYvA,2882
|
93
|
+
quantalogic/tools/nodejs_tool.py,sha256=zdnE0VFj_5786uR2L0o-SKR0Gk8L-U7rdj7xGHJYIq0,19905
|
94
|
+
quantalogic/tools/presentation_tools/presentation_llm_tool.py,sha256=5fuUDE1IzeAAoWFKG5lyYt2uAo7UzwdrOxnEKfvJDJY,15782
|
95
|
+
quantalogic/tools/product_hunt/product_hunt_tool.py,sha256=vtjnV6v46BcNYlxudUCq5JIkjznQFUt8Kx9VD4KEPa8,8533
|
96
|
+
quantalogic/tools/product_hunt/services.py,sha256=ym10ZW4q8w03wIkZDnwl9d_nCoOz2WAj3N6C0qY0dfI,2280
|
97
|
+
quantalogic/tools/python_tool.py,sha256=70HLbfU2clOBgj4axDOtIKzXwEBMNGEAX1nGSf-KNNQ,18156
|
98
|
+
quantalogic/tools/rag_tool/__init__.py,sha256=c6UfjkKgduih_wf_As5UbEHPj3vUecvdUcT_xEbnMd8,1434
|
99
|
+
quantalogic/tools/rag_tool/document_metadata.py,sha256=amnnqL5POzFbc7rVq2kJ2egYS3k5P-m4HyA5AbekIq0,376
|
100
|
+
quantalogic/tools/rag_tool/query_response.py,sha256=0T9N80kNR8ZgjA7WzFBisIqdIgUiFfGeUPzYvxAHSU0,549
|
101
|
+
quantalogic/tools/rag_tool/rag_tool.py,sha256=FEccrd_IorVi1b3FzEu2huZPavSlaF-0p0IiWIGON74,21073
|
102
|
+
quantalogic/tools/rag_tool/rag_tool_beta.py,sha256=6ydWH5N2-M06p1XAsfxC8GREktIOz6AAsFTPGEZUnbU,9525
|
103
|
+
quantalogic/tools/read_file_block_tool.py,sha256=FTcDAUOOPQOvWRjnRI6nMI1Upus90klR4PC0pbPP_S8,5266
|
104
|
+
quantalogic/tools/read_file_tool.py,sha256=l6k-SOIV9krpXAmUTkxzua51S-KHgzGqkcDlD5AD8K0,2710
|
105
|
+
quantalogic/tools/read_html_tool.py,sha256=KmXTeSrQZj0L-OAwl3xZQybdAhhyAeK3wgblhXgf3oM,10999
|
106
|
+
quantalogic/tools/replace_in_file_tool.py,sha256=8cbM0MqNpQynNwbkHR7kqYoG-1JBxDjpMjHHVCwiS8w,13854
|
107
|
+
quantalogic/tools/ripgrep_tool.py,sha256=sRzHaWac9fa0cCGhECJN04jw_Ko0O3u45KDWzMIYcvY,14291
|
108
|
+
quantalogic/tools/safe_python_interpreter_tool.py,sha256=yibIVmtkcfU4dS6KNcbJPxEI7WXVVDaUk0PEr-dMCyk,7904
|
109
|
+
quantalogic/tools/search_definition_names.py,sha256=zqtaqq8aS5jdDQOkbd4wMUPFyL6Bq-4q9NWyLKdXL1E,18771
|
110
|
+
quantalogic/tools/sequence_tool.py,sha256=Hb2FSjWWACvXZX7rmJXPk5lnnnqaDeRTbhQQRtCd8hI,11169
|
111
|
+
quantalogic/tools/serpapi_search_tool.py,sha256=sX-Noch77kGP2XiwislPNFyy3_4TH6TwMK6C81L3q9Y,5316
|
112
|
+
quantalogic/tools/sql_query_tool.py,sha256=jEDZLlxOsB2bzsWlEqsqvTKiyovnRuk0XvgtwW7-WSQ,6055
|
113
|
+
quantalogic/tools/task_complete_tool.py,sha256=L8tuyVoN07Q2hOsxx17JTW0C5Jd_N-C0i_0PtCUQUKU,929
|
114
|
+
quantalogic/tools/tool.py,sha256=2XlveQf7NVuDlPz-IgE0gURye8rIp9iH3YhWhoOsnog,11232
|
115
|
+
quantalogic/tools/unified_diff_tool.py,sha256=o7OiYnCM5MjbPlQTpB2OmkMQRI9zjdToQmgVkhiTvOI,14148
|
116
|
+
quantalogic/tools/utilities/csv_processor_tool.py,sha256=Mu_EPVj6iYAclNaVX_vbkekxcNwPYwy7dW1SCY22EwY,9023
|
117
|
+
quantalogic/tools/utilities/download_file_tool.py,sha256=hw_tO6RD0tA_LH46Tathf-LzSxRl7kgEiiP76rTGdds,6616
|
118
|
+
quantalogic/tools/utilities/mermaid_validator_tool.py,sha256=Brd6pt8OxpUgf8dm6kHqJJs_IU8V4Kc-8VDP-n1eCUM,25886
|
119
|
+
quantalogic/tools/utils/__init__.py,sha256=-NtMSwxRt_G79Oo_DcDaCdLU2vLvuXIoCd34TOYEUmI,334
|
120
|
+
quantalogic/tools/utils/create_sample_database.py,sha256=h5c_uxv3eztQvHlloTZxzWt5gEzai8zfnR8-_QrUqxU,3724
|
121
|
+
quantalogic/tools/utils/generate_database_report.py,sha256=3PT34ClMvZ2O62-24cp_5lOyZHY_pBjVObMHpfyVi-s,10140
|
122
|
+
quantalogic/tools/wikipedia_search_tool.py,sha256=LXQSPH8961Efw2QNxKe-cD5ZiIYD3ufEgrxH4y5uB74,5180
|
123
|
+
quantalogic/tools/write_file_tool.py,sha256=_mx9_Zjg2oMAAVzlcHEKjZVZUxQVgbRfcoMKgWnoZcg,3764
|
124
|
+
quantalogic/utils/__init__.py,sha256=hsS3hXH5lsBQcZh2QBANY1Af2Zs1jtrgxA7kXJEWi58,680
|
125
|
+
quantalogic/utils/ask_user_validation.py,sha256=gG6iv5996KRJK16JUQiEsY5JgSnLoZ7vmi6f5DXI7Ho,339
|
126
|
+
quantalogic/utils/async_utils.py,sha256=FOizWRbHdsZwoD36dNErzunfwPlE7zDprS6RXcWuWSo,963
|
127
|
+
quantalogic/utils/check_version.py,sha256=aDTEvIn5XNNBIQ0tVOqcY3hcoznRmpsnNuwES6je1MQ,1133
|
128
|
+
quantalogic/utils/download_http_file.py,sha256=FTN3brq9WvCFvuBX-lYAhjsdYTzQT4m9m2vqlcyjkNk,3472
|
129
|
+
quantalogic/utils/get_all_models.py,sha256=J4OtEsHzxZ71UN0v1uEjAb_isMNscTQ8qk5jG0sl0Rc,546
|
130
|
+
quantalogic/utils/get_coding_environment.py,sha256=oMK5ZanOqX_SFaJxUZQGlsAAaiLUgJufCJYDrHnHPuQ,584
|
131
|
+
quantalogic/utils/get_environment.py,sha256=7wWruSHYTUlnQWW27qU3WFYZnncqqqdofsxAsUU7lhw,875
|
132
|
+
quantalogic/utils/get_quantalogic_rules_content.py,sha256=fnEFTyClXzpI0MLaM-gB9R6l4CJlu2NnaYiR09ciJC8,673
|
133
|
+
quantalogic/utils/git_ls.py,sha256=hJLAoFyx1MgaFJKu6ZO7NEA5xvvqIcpfJ2g9DFCPR5c,5776
|
134
|
+
quantalogic/utils/lm_studio_model_info.py,sha256=74LrRljuVAIzgFHqO-l9jRuawx8nu3UdDeGoO_bLJwI,1792
|
135
|
+
quantalogic/utils/python_interpreter.py,sha256=H08GpYQshcob_W7e8GmgdKYFAbBhWAR6pGR83tviOM4,36430
|
136
|
+
quantalogic/utils/read_file.py,sha256=tSRVHk8dIP4nNLL89v5kRki4hOTjVyjbmuEb2zwvwCY,2077
|
137
|
+
quantalogic/utils/read_http_text_content.py,sha256=n3IayT5KcqctIVVF2gOQQAMf3Ow6eenlVgfXTpLcQbw,4410
|
138
|
+
quantalogic/utils/xml_utility.py,sha256=gLB0vpbpxbfc297Fy37Zd3O_-sbt6DoRUZrSkhPq4FU,5345
|
139
|
+
quantalogic/version.py,sha256=ea_cRutaQk5_lwlLbUUvPFuOT7Of7-gAsDl7wdveS-g,107
|
140
|
+
quantalogic/version_check.py,sha256=JyQFTNMDWtpHCLnN-BiakzB2cyXf6kUFsTjvmSruZi4,1623
|
141
|
+
quantalogic/welcome_message.py,sha256=o4tHdgabNuIV9kbIDPgS3_2yzJhayK30oKad2UouYDc,3020
|
142
|
+
quantalogic/xml_parser.py,sha256=AKuMdJC3QAX3Z_tErHVlZ-msjPemWaZUFiTwkHz76jg,11614
|
143
|
+
quantalogic/xml_tool_parser.py,sha256=Vz4LEgDbelJynD1siLOVkJ3gLlfHsUk65_gCwbYJyGc,3784
|
144
|
+
quantalogic-0.40.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
145
|
+
quantalogic-0.40.0.dist-info/METADATA,sha256=56CuD1VMfWtMUTdZAaCIXvVm6lr8JDZb67UGMVnALJ8,26321
|
146
|
+
quantalogic-0.40.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
147
|
+
quantalogic-0.40.0.dist-info/entry_points.txt,sha256=h74O_Q3qBRCrDR99qvwB4BpBGzASPUIjCfxHq6Qnups,183
|
148
|
+
quantalogic-0.40.0.dist-info/RECORD,,
|
@@ -1,102 +0,0 @@
|
|
1
|
-
quantalogic/__init__.py,sha256=Su8CnOEdqKu4zTytjiP9P5olg-oIDuUA3fMWM1WUdRY,925
|
2
|
-
quantalogic/agent.py,sha256=NPCcqXPf3YfxnKxxgZQayV3vNsjF_27jj-oCZnZyWJw,34510
|
3
|
-
quantalogic/agent_config.py,sha256=jkjEjZe47DJoZlUTsKzcKQ4_3sYrEKpG0kcOWjvdBC0,8110
|
4
|
-
quantalogic/agent_factory.py,sha256=HWKwN_DN57EPmME-hoCD2uJE0DqsPCzGU_V7nq54XzI,5284
|
5
|
-
quantalogic/coding_agent.py,sha256=UbuvtTedt6rtIdgfSgTn3Z-Nkfq0Y24N2eRfN59gHuY,5124
|
6
|
-
quantalogic/config.py,sha256=S_SAdsCoTa1jS8GIJW2TjlCtE5vjGDbMBg-6E0j8K1o,355
|
7
|
-
quantalogic/console_print_events.py,sha256=md1CwNBoi58nW7KRVESna3QfkWDJo8PvugXSKjL-c-k,2129
|
8
|
-
quantalogic/console_print_token.py,sha256=qSU-3kmoZk4T5-1ybrEBi8tIXDPcz7eyWKhGh3E8uIg,395
|
9
|
-
quantalogic/docs_cli.py,sha256=3giVbUpespB9ZdTSJ955A3BhcOaBl5Lwsn1AVy9XAeY,1663
|
10
|
-
quantalogic/event_emitter.py,sha256=jqot2g4JRXc88K6PW837Oqxbf7shZfO-xdPaUWmzupk,7901
|
11
|
-
quantalogic/generative_model.py,sha256=3OLEPwsKEvtc0JYISeim_gEU8MY45FBN3q2rcixGVsk,13729
|
12
|
-
quantalogic/get_model_info.py,sha256=_9Nb9JQ09HZzT-_gZUSvl4Er7uCXs5ys36sIBa-8DXA,3005
|
13
|
-
quantalogic/interactive_text_editor.py,sha256=1vW4poJl7SItRGEeGQgtCFcmRDXmfCM8PE-uBtDBJuE,16658
|
14
|
-
quantalogic/llm.py,sha256=98osu6LmjuYw4g-CDIp1SJkYlfoHNwdvq6yJqI-K5NA,5692
|
15
|
-
quantalogic/main.py,sha256=__-4pX2pgoSFvt-aLdp6Qlrq55_SrwP_l8u2uTaQbjg,9262
|
16
|
-
quantalogic/memory.py,sha256=zbtRuM05jaS2lJll-92dt5JfYVLERnF_m_9xqp2x-k0,6304
|
17
|
-
quantalogic/model_info.py,sha256=j7QqvjEFQDGpDOgQs8uTkVyI3a50Oa_nrsQjyxizTLc,272
|
18
|
-
quantalogic/model_info_list.py,sha256=qGDKI5oBbu5oyJSH4o4jGYGqyqYEUMXFRi_qMDAQ2nU,1997
|
19
|
-
quantalogic/model_info_litellm.py,sha256=m1Yt4SIiOBRWLx7S8f8k4fcTiKJZKtOvcPN_QvQ_Oxk,1880
|
20
|
-
quantalogic/model_names.py,sha256=UZlz25zG9B2dpfwdw_e1Gw5qFsKQ7iME9FJh9Ts4u6s,938
|
21
|
-
quantalogic/prompts.py,sha256=LZ82J_IVZy_G3Cabz_XnCmdM5RAPGuxyAsViCX8ldl4,2939
|
22
|
-
quantalogic/search_agent.py,sha256=EA_FAPP0dVuUbJ_lAGKfYq1FIJ6oLYzGMgKLMvBL4ZQ,2472
|
23
|
-
quantalogic/server/__init__.py,sha256=8sz_PYAUCrkM6JM5EAUeIzNM4NPW6j6UT72JVkc21WQ,91
|
24
|
-
quantalogic/server/agent_server.py,sha256=VXaaWqReUSZOCX7CaKS14jria8yZn1kLEc52E2hV7ZA,22510
|
25
|
-
quantalogic/server/models.py,sha256=nVUGWElOsUw8QnRCGJylk25wCew_5gohe6nldYighUA,1322
|
26
|
-
quantalogic/server/routes.py,sha256=00nFe6s0T4Gv8vCp0wQFjWGo1tC8FViH8h0koAJdWs4,4216
|
27
|
-
quantalogic/server/state.py,sha256=TwtL0BTp_LT-fynF1IR4k8WVXuxXWtSv3NgWG9fuUME,7369
|
28
|
-
quantalogic/server/static/js/event_visualizer.js,sha256=eFkkWyNZw3zOZlF18kxbfsWql8a2C13qBFEOAPzrj88,19646
|
29
|
-
quantalogic/server/static/js/quantalogic.js,sha256=x7TrlZGR1Y0WLK2DWl1xY847BhEWMPnL0Ua7KtOldUc,22311
|
30
|
-
quantalogic/server/templates/index.html,sha256=nDnXJoQEm1vXbhXtgaYk0G5VXj0wwzE6KrqEDhHFpj4,7773
|
31
|
-
quantalogic/task_file_reader.py,sha256=AMIJoeVY9Hhu0dBJ-C5EyaOFsXLkhn2oBhVs-WTnnLk,1460
|
32
|
-
quantalogic/task_runner.py,sha256=6kL7o0br2YU8FNKyq-rKJo1oGKZKl73vtATpHusPIWQ,10038
|
33
|
-
quantalogic/tool_manager.py,sha256=Uh-ufrJPufHqDUrFwKlXw3MOsVGc_4lQxuc6cRvZ7wU,7186
|
34
|
-
quantalogic/tools/__init__.py,sha256=syshfk5d0_HV6A_mG4OBBJXy3H7ky-x57MnvlrDVXgI,2331
|
35
|
-
quantalogic/tools/agent_tool.py,sha256=MXCXxWHRch7VK4UWhtRP1jeI8Np9Ne2CUGo8vm1oZiM,3064
|
36
|
-
quantalogic/tools/dalle_e.py,sha256=nur2kl6DKjaWWaHcmF_y9vS5bvty2fW8hQfdgf5KWfs,10948
|
37
|
-
quantalogic/tools/download_http_file_tool.py,sha256=wTfanbXjIRi5-qrbluuLvNmDNhvmYAnlMVb3dO8C2ss,2210
|
38
|
-
quantalogic/tools/duckduckgo_search_tool.py,sha256=xVaEb_SUK5NL3lwMQXj1rGQYYvNT-td-qaB9QCes27Q,7014
|
39
|
-
quantalogic/tools/edit_whole_content_tool.py,sha256=nXmpAvojvqvAcqNMy1kUKZ1ocboky_ZcnCR4SNCSPgw,2360
|
40
|
-
quantalogic/tools/elixir_tool.py,sha256=fzPPtAW-Koy9KB0r5k2zV1f1U0WphL-LXPPOBkeNkug,7652
|
41
|
-
quantalogic/tools/execute_bash_command_tool.py,sha256=YK_cMuODJDOYheZKGmlpZTxJdVbimFLCUlND2_zmyMg,6869
|
42
|
-
quantalogic/tools/generate_database_report_tool.py,sha256=QbZjtmegGEOEZAIa-CSeBo5O9dYBZTk_PWrumyFUg1Q,1890
|
43
|
-
quantalogic/tools/grep_app_tool.py,sha256=BDxygwx7WCbqbiP2jmSRnIsoIUVYG5A4SKzId524ys4,19957
|
44
|
-
quantalogic/tools/input_question_tool.py,sha256=UoTlNhdmdr-eyiVtVCG2qJe_R4bU_ag-DzstSdmYkvM,1848
|
45
|
-
quantalogic/tools/jinja_tool.py,sha256=1bqkFia2GtfntIyTVg4tCiPP8S1dX43U7QsrBE1Ngps,2893
|
46
|
-
quantalogic/tools/language_handlers/__init__.py,sha256=5GD6TYsMqRni0nwePp2KOjNQ04GnT5wihT6YAuvx43c,699
|
47
|
-
quantalogic/tools/language_handlers/c_handler.py,sha256=q_NiOExbnfYyzxz4C0V5B5887d_D8LYr30tTEVj4LH8,1226
|
48
|
-
quantalogic/tools/language_handlers/cpp_handler.py,sha256=7iFBuidI_yMSbC0RL4A3mKPjLWKxW7AoRrtUTlBnpyw,1241
|
49
|
-
quantalogic/tools/language_handlers/go_handler.py,sha256=v8nxfhGMRxBf1xbrP0xUd2r4HsAtu-VK9OeXpv8FRoM,1230
|
50
|
-
quantalogic/tools/language_handlers/java_handler.py,sha256=MGGqmmnec9DsXijjAyPu7XZBsK-lCQAJSpd6ZK42nio,1443
|
51
|
-
quantalogic/tools/language_handlers/javascript_handler.py,sha256=kqtm3MOazyYCYzsT-L3OtkDt54B1m3AWk0Ya9nQx4VM,1729
|
52
|
-
quantalogic/tools/language_handlers/python_handler.py,sha256=ijOQuWoKQvNvV7uo1t308sipYEbPNfZ8R-u71TStNus,1220
|
53
|
-
quantalogic/tools/language_handlers/rust_handler.py,sha256=t_AqKVa3KVk6SVkq_UjUUru0Za8ueCAnanv8w3B815A,1234
|
54
|
-
quantalogic/tools/language_handlers/scala_handler.py,sha256=wr-cWOIFOc0UYwODmEtT6rV63Qf1NyNB_BLo23GLrvk,1281
|
55
|
-
quantalogic/tools/language_handlers/typescript_handler.py,sha256=L4vuJMYxKO3_83dQhdwZ9fogauIV7rwoicRT0xLGfkQ,1738
|
56
|
-
quantalogic/tools/list_directory_tool.py,sha256=8Hy38DelSh-mRqS_uDLpeBYoHLtEy5ji77xI-TJu3Ms,4176
|
57
|
-
quantalogic/tools/llm_tool.py,sha256=CFTvr-RTFiuGWlOLtvw4zv93s_CLUHuHfNmvK6QpQiQ,7014
|
58
|
-
quantalogic/tools/llm_vision_tool.py,sha256=eVDIrANxxZCHxYp9xaAN8hLdFhlYm7bUu2tX9-1xUbI,5496
|
59
|
-
quantalogic/tools/markitdown_tool.py,sha256=lpbJBLx43_x2DjiZAV1HSidkHeqkkV0KvgeLG2fphK4,4339
|
60
|
-
quantalogic/tools/nodejs_tool.py,sha256=zdnE0VFj_5786uR2L0o-SKR0Gk8L-U7rdj7xGHJYIq0,19905
|
61
|
-
quantalogic/tools/python_tool.py,sha256=70HLbfU2clOBgj4axDOtIKzXwEBMNGEAX1nGSf-KNNQ,18156
|
62
|
-
quantalogic/tools/read_file_block_tool.py,sha256=FTcDAUOOPQOvWRjnRI6nMI1Upus90klR4PC0pbPP_S8,5266
|
63
|
-
quantalogic/tools/read_file_tool.py,sha256=l6k-SOIV9krpXAmUTkxzua51S-KHgzGqkcDlD5AD8K0,2710
|
64
|
-
quantalogic/tools/read_html_tool.py,sha256=ZReMuGajMqlXcU7i5JOxCRlGTt96M2CsB7L0ZOEoXMI,11192
|
65
|
-
quantalogic/tools/replace_in_file_tool.py,sha256=95GqcOC0sZzbWHWzYDVwq7rEwChlOgKxb5cxKk-Y7W8,13844
|
66
|
-
quantalogic/tools/ripgrep_tool.py,sha256=sRzHaWac9fa0cCGhECJN04jw_Ko0O3u45KDWzMIYcvY,14291
|
67
|
-
quantalogic/tools/safe_python_interpreter_tool.py,sha256=I8e33-S_6K-1JxgkcTL0J79Op57kp2dzQBsXgwKFm8w,8140
|
68
|
-
quantalogic/tools/search_definition_names.py,sha256=ui0304UgUke6Ca-H3-S4JP9TsdHhRCR5uk9kPuobIDA,18769
|
69
|
-
quantalogic/tools/sequence_tool.py,sha256=NQAtd89d6hscyGe2GzGkHsmdtpAEX_fRa98hvo93EyA,11322
|
70
|
-
quantalogic/tools/serpapi_search_tool.py,sha256=sX-Noch77kGP2XiwislPNFyy3_4TH6TwMK6C81L3q9Y,5316
|
71
|
-
quantalogic/tools/sql_query_tool.py,sha256=5Jgr5m8Xv0B-3oHk560LmF0DgphGKWoAitElwqY9xCc,6120
|
72
|
-
quantalogic/tools/task_complete_tool.py,sha256=L8tuyVoN07Q2hOsxx17JTW0C5Jd_N-C0i_0PtCUQUKU,929
|
73
|
-
quantalogic/tools/tool.py,sha256=fdD-wwAOgfua2RRk1FHv_mlNBQ1FTzPO8vMIKiRirZM,9800
|
74
|
-
quantalogic/tools/unified_diff_tool.py,sha256=wTKXIoBEPcC_EcQmpJZVi95vq0Ncvsw1Kyc7XqPO6dU,14147
|
75
|
-
quantalogic/tools/utils/__init__.py,sha256=qLQaS1JvZt_Bfg5sTj-TUa47u2IatLaIwDZe0EtXELI,344
|
76
|
-
quantalogic/tools/utils/create_sample_database.py,sha256=Aus9xRLGfQfsYnxsAkJ5CW-Za6fwKQeqm2mOXqgkMis,4018
|
77
|
-
quantalogic/tools/utils/generate_database_report.py,sha256=0D-5fWOfpAh1jEcld5OTQP5x6XkJE5jpNY6FyHv1L2s,10345
|
78
|
-
quantalogic/tools/wikipedia_search_tool.py,sha256=bdZ_0dYTxpEfU04tBFsatnLM5P9Z3kAZgKQEjsopJLA,5405
|
79
|
-
quantalogic/tools/write_file_tool.py,sha256=_mx9_Zjg2oMAAVzlcHEKjZVZUxQVgbRfcoMKgWnoZcg,3764
|
80
|
-
quantalogic/utils/__init__.py,sha256=hsS3hXH5lsBQcZh2QBANY1Af2Zs1jtrgxA7kXJEWi58,680
|
81
|
-
quantalogic/utils/ask_user_validation.py,sha256=F0jkbFJVXAImcSSP7op6dov5i80hRvZGRvBHbfcZrxg,340
|
82
|
-
quantalogic/utils/check_version.py,sha256=grxTfJE85GMue1OAk8z8_q8tjEJxQ8RO6fN3fJ_qedg,1136
|
83
|
-
quantalogic/utils/download_http_file.py,sha256=FTN3brq9WvCFvuBX-lYAhjsdYTzQT4m9m2vqlcyjkNk,3472
|
84
|
-
quantalogic/utils/get_all_models.py,sha256=Ol4e60MwZiJhu8HZ2i_RpIumLmFYYrncB1X9q1KEQh0,544
|
85
|
-
quantalogic/utils/get_coding_environment.py,sha256=oMK5ZanOqX_SFaJxUZQGlsAAaiLUgJufCJYDrHnHPuQ,584
|
86
|
-
quantalogic/utils/get_environment.py,sha256=7wWruSHYTUlnQWW27qU3WFYZnncqqqdofsxAsUU7lhw,875
|
87
|
-
quantalogic/utils/get_quantalogic_rules_content.py,sha256=fnEFTyClXzpI0MLaM-gB9R6l4CJlu2NnaYiR09ciJC8,673
|
88
|
-
quantalogic/utils/git_ls.py,sha256=_k6QIQtc0aM1bsG340jBp4VrdevbcH8Pg2CV4r9oHok,5264
|
89
|
-
quantalogic/utils/lm_studio_model_info.py,sha256=1eDvZ-I9W8AZbCch1l5rdiSpUxL7qMnfZItdFZkmAWs,1819
|
90
|
-
quantalogic/utils/python_interpreter.py,sha256=VQdLdh0Jk-cWkXLwzPY5lwl8LFWPp8RzI9pKbfoieZg,33534
|
91
|
-
quantalogic/utils/read_file.py,sha256=tSRVHk8dIP4nNLL89v5kRki4hOTjVyjbmuEb2zwvwCY,2077
|
92
|
-
quantalogic/utils/read_http_text_content.py,sha256=n3IayT5KcqctIVVF2gOQQAMf3Ow6eenlVgfXTpLcQbw,4410
|
93
|
-
quantalogic/version.py,sha256=ea_cRutaQk5_lwlLbUUvPFuOT7Of7-gAsDl7wdveS-g,107
|
94
|
-
quantalogic/version_check.py,sha256=cttR1lR3OienGLl7NrK1Te1fhDkqSjCci7HC1vFUTSY,1627
|
95
|
-
quantalogic/welcome_message.py,sha256=IXMhem8h7srzNUwvw8G_lmEkHU8PFfote021E_BXmVk,3039
|
96
|
-
quantalogic/xml_parser.py,sha256=iUQZC4a8uqBsP7RAZaY0Ed9k8TCd-ImuF41eF7MR2WM,11615
|
97
|
-
quantalogic/xml_tool_parser.py,sha256=Vz4LEgDbelJynD1siLOVkJ3gLlfHsUk65_gCwbYJyGc,3784
|
98
|
-
quantalogic-0.33.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
99
|
-
quantalogic-0.33.4.dist-info/METADATA,sha256=hohWAYB5JY3Rf5uiMJDsJ8rWhsUhxm4pzqd7O_NAdNI,23461
|
100
|
-
quantalogic-0.33.4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
101
|
-
quantalogic-0.33.4.dist-info/entry_points.txt,sha256=h74O_Q3qBRCrDR99qvwB4BpBGzASPUIjCfxHq6Qnups,183
|
102
|
-
quantalogic-0.33.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|