praisonaiagents 0.0.25__py3-none-any.whl → 0.0.27__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.
@@ -18,6 +18,7 @@ from ..main import (
18
18
  client,
19
19
  error_logs
20
20
  )
21
+ import inspect
21
22
 
22
23
  if TYPE_CHECKING:
23
24
  from ..task.task import Task
@@ -67,9 +68,24 @@ class Agent:
67
68
  return None
68
69
 
69
70
  import inspect
71
+ # Langchain tools
72
+ if inspect.isclass(func) and hasattr(func, 'run'):
73
+ original_func = func
74
+ func = func.run
75
+ function_name = original_func.__name__
76
+
70
77
  sig = inspect.signature(func)
71
78
  logging.debug(f"Function signature: {sig}")
72
79
 
80
+ # Skip self, *args, **kwargs, so they don't get passed in arguments
81
+ parameters_list = []
82
+ for name, param in sig.parameters.items():
83
+ if name == "self":
84
+ continue
85
+ if param.kind in (inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD):
86
+ continue
87
+ parameters_list.append((name, param))
88
+
73
89
  parameters = {
74
90
  "type": "object",
75
91
  "properties": {},
@@ -95,7 +111,7 @@ class Agent:
95
111
 
96
112
  logging.debug(f"Parameter descriptions: {param_descriptions}")
97
113
 
98
- for name, param in sig.parameters.items():
114
+ for name, param in parameters_list:
99
115
  param_type = "string" # Default type
100
116
  if param.annotation != inspect.Parameter.empty:
101
117
  if param.annotation == int:
@@ -249,25 +265,31 @@ Your Goal: {self.goal}
249
265
  # Try to find the function in the agent's tools list first
250
266
  func = None
251
267
  for tool in self.tools:
252
- if callable(tool) and getattr(tool, '__name__', '') == function_name:
268
+ if (callable(tool) and getattr(tool, '__name__', '') == function_name) or \
269
+ (inspect.isclass(tool) and tool.__name__ == function_name):
253
270
  func = tool
254
271
  break
255
272
 
256
- logging.debug(f"Looking for {function_name} in agent tools: {func is not None}")
257
-
258
- # If not found in tools, try globals and main
259
- if not func:
273
+ if func is None:
274
+ # If not found in tools, try globals and main
260
275
  func = globals().get(function_name)
261
- logging.debug(f"Looking for {function_name} in globals: {func is not None}")
262
-
263
276
  if not func:
264
277
  import __main__
265
278
  func = getattr(__main__, function_name, None)
266
- logging.debug(f"Looking for {function_name} in __main__: {func is not None}")
267
279
 
268
- if func and callable(func):
280
+ if func:
269
281
  try:
270
- return func(**arguments)
282
+ # If it's a class with run method, instantiate and call run
283
+ if inspect.isclass(func) and hasattr(func, 'run'):
284
+ instance = func()
285
+ # Extract only the parameters that run() expects
286
+ run_params = {k: v for k, v in arguments.items()
287
+ if k in inspect.signature(instance.run).parameters
288
+ and k != 'self'}
289
+ return instance.run(**run_params)
290
+ # Otherwise treat as regular function
291
+ elif callable(func):
292
+ return func(**arguments)
271
293
  except Exception as e:
272
294
  error_msg = str(e)
273
295
  logging.error(f"Error executing tool {function_name}: {error_msg}")
@@ -8,6 +8,59 @@ TOOL_MAPPINGS = {
8
8
  'internet_search': ('.duckduckgo_tools', None),
9
9
  'duckduckgo': ('.duckduckgo_tools', None),
10
10
 
11
+ # arXiv Tools
12
+ 'search_arxiv': ('.arxiv_tools', None),
13
+ 'get_arxiv_paper': ('.arxiv_tools', None),
14
+ 'get_papers_by_author': ('.arxiv_tools', None),
15
+ 'get_papers_by_category': ('.arxiv_tools', None),
16
+ 'arxiv_tools': ('.arxiv_tools', None),
17
+
18
+ # Wikipedia Tools
19
+ 'wiki_search': ('.wikipedia_tools', None),
20
+ 'wiki_summary': ('.wikipedia_tools', None),
21
+ 'wiki_page': ('.wikipedia_tools', None),
22
+ 'wiki_random': ('.wikipedia_tools', None),
23
+ 'wiki_language': ('.wikipedia_tools', None),
24
+ 'wikipedia_tools': ('.wikipedia_tools', None),
25
+
26
+ # Newspaper Tools
27
+ 'get_article': ('.newspaper_tools', None),
28
+ 'get_news_sources': ('.newspaper_tools', None),
29
+ 'get_articles_from_source': ('.newspaper_tools', None),
30
+ 'get_trending_topics': ('.newspaper_tools', None),
31
+ 'newspaper_tools': ('.newspaper_tools', None),
32
+
33
+ # Spider Tools
34
+ 'scrape_page': ('.spider_tools', None),
35
+ 'extract_links': ('.spider_tools', None),
36
+ 'crawl': ('.spider_tools', None),
37
+ 'extract_text': ('.spider_tools', None),
38
+ 'spider_tools': ('.spider_tools', None),
39
+
40
+ # DuckDB Tools
41
+ 'query': ('.duckdb_tools', None),
42
+ 'create_table': ('.duckdb_tools', None),
43
+ 'load_data': ('.duckdb_tools', None),
44
+ 'export_data': ('.duckdb_tools', None),
45
+ 'get_table_info': ('.duckdb_tools', None),
46
+ 'analyze_data': ('.duckdb_tools', None),
47
+ 'duckdb_tools': ('.duckdb_tools', None),
48
+
49
+ # Shell Tools
50
+ 'execute_command': ('.shell_tools', None),
51
+ 'list_processes': ('.shell_tools', None),
52
+ 'kill_process': ('.shell_tools', None),
53
+ 'get_system_info': ('.shell_tools', None),
54
+ 'shell_tools': ('.shell_tools', None),
55
+
56
+ # Calculator Tools
57
+ 'evaluate': ('.calculator_tools', None),
58
+ 'solve_equation': ('.calculator_tools', None),
59
+ 'convert_units': ('.calculator_tools', None),
60
+ 'calculate_statistics': ('.calculator_tools', None),
61
+ 'calculate_financial': ('.calculator_tools', None),
62
+ 'calculator_tools': ('.calculator_tools', None),
63
+
11
64
  # Class methods from YFinance
12
65
  'get_stock_price': ('.yfinance_tools', 'YFinanceTools'),
13
66
  'get_stock_info': ('.yfinance_tools', 'YFinanceTools'),
@@ -68,14 +121,6 @@ TOOL_MAPPINGS = {
68
121
  'transform_yaml': ('.yaml_tools', 'YAMLTools'),
69
122
  'yaml_tools': ('.yaml_tools', 'YAMLTools'),
70
123
 
71
- # Calculator Tools
72
- 'evaluate': ('.calculator_tools', 'CalculatorTools'),
73
- 'solve_equation': ('.calculator_tools', 'CalculatorTools'),
74
- 'convert_units': ('.calculator_tools', 'CalculatorTools'),
75
- 'calculate_statistics': ('.calculator_tools', 'CalculatorTools'),
76
- 'calculate_financial': ('.calculator_tools', 'CalculatorTools'),
77
- 'calculator_tools': ('.calculator_tools', 'CalculatorTools'),
78
-
79
124
  # Python Tools
80
125
  'execute_code': ('.python_tools', 'PythonTools'),
81
126
  'analyze_code': ('.python_tools', 'PythonTools'),
@@ -90,51 +135,6 @@ TOOL_MAPPINGS = {
90
135
  'group_by': ('.pandas_tools', 'PandasTools'),
91
136
  'pivot_table': ('.pandas_tools', 'PandasTools'),
92
137
  'pandas_tools': ('.pandas_tools', 'PandasTools'),
93
-
94
- # Wikipedia Tools
95
- 'search': ('.wikipedia_tools', 'WikipediaTools'),
96
- 'get_wikipedia_summary': ('.wikipedia_tools', 'WikipediaTools'),
97
- 'get_wikipedia_page': ('.wikipedia_tools', 'WikipediaTools'),
98
- 'get_random_wikipedia': ('.wikipedia_tools', 'WikipediaTools'),
99
- 'set_wikipedia_language': ('.wikipedia_tools', 'WikipediaTools'),
100
- 'wikipedia_tools': ('.wikipedia_tools', 'WikipediaTools'),
101
-
102
- # Newspaper Tools
103
- 'get_article': ('.newspaper_tools', 'NewspaperTools'),
104
- 'get_news_sources': ('.newspaper_tools', 'NewspaperTools'),
105
- 'get_articles_from_source': ('.newspaper_tools', 'NewspaperTools'),
106
- 'get_trending_topics': ('.newspaper_tools', 'NewspaperTools'),
107
- 'newspaper_tools': ('.newspaper_tools', 'NewspaperTools'),
108
-
109
- # arXiv Tools
110
- 'search_arxiv': ('.arxiv_tools', 'ArxivTools'),
111
- 'get_arxiv_paper': ('.arxiv_tools', 'ArxivTools'),
112
- 'get_papers_by_author': ('.arxiv_tools', 'ArxivTools'),
113
- 'get_papers_by_category': ('.arxiv_tools', 'ArxivTools'),
114
- 'arxiv_tools': ('.arxiv_tools', 'ArxivTools'),
115
-
116
- # Spider Tools
117
- 'scrape_page': ('.spider_tools', 'SpiderTools'),
118
- 'extract_links': ('.spider_tools', 'SpiderTools'),
119
- 'crawl': ('.spider_tools', 'SpiderTools'),
120
- 'extract_text': ('.spider_tools', 'SpiderTools'),
121
- 'spider_tools': ('.spider_tools', 'SpiderTools'),
122
-
123
- # DuckDB Tools
124
- 'query': ('.duckdb_tools', 'DuckDBTools'),
125
- 'create_table': ('.duckdb_tools', 'DuckDBTools'),
126
- 'load_data': ('.duckdb_tools', 'DuckDBTools'),
127
- 'export_data': ('.duckdb_tools', 'DuckDBTools'),
128
- 'get_table_info': ('.duckdb_tools', 'DuckDBTools'),
129
- 'analyze_data': ('.duckdb_tools', 'DuckDBTools'),
130
- 'duckdb_tools': ('.duckdb_tools', 'DuckDBTools'),
131
-
132
- # Shell Tools
133
- 'execute_command': ('.shell_tools', 'ShellTools'),
134
- 'list_processes': ('.shell_tools', 'ShellTools'),
135
- 'kill_process': ('.shell_tools', 'ShellTools'),
136
- 'get_system_info': ('.shell_tools', 'ShellTools'),
137
- 'shell_tools': ('.shell_tools', 'ShellTools'),
138
138
  }
139
139
 
140
140
  _instances = {} # Cache for class instances
@@ -149,7 +149,18 @@ def __getattr__(name: str) -> Any:
149
149
  if class_name is None:
150
150
  # Direct function import
151
151
  module = import_module(module_path, __package__)
152
- if name in ['duckduckgo', 'file_tools', 'pandas_tools', 'wikipedia_tools',
152
+ if name in [
153
+ 'duckduckgo', 'internet_search',
154
+ 'search_arxiv', 'get_arxiv_paper', 'get_papers_by_author', 'get_papers_by_category',
155
+ 'wiki_search', 'wiki_summary', 'wiki_page', 'wiki_random', 'wiki_language',
156
+ 'get_article', 'get_news_sources', 'get_articles_from_source', 'get_trending_topics',
157
+ 'scrape_page', 'extract_links', 'crawl', 'extract_text',
158
+ 'query', 'create_table', 'load_data', 'export_data', 'get_table_info', 'analyze_data',
159
+ 'execute_command', 'list_processes', 'kill_process', 'get_system_info',
160
+ 'evaluate', 'solve_equation', 'convert_units', 'calculate_statistics', 'calculate_financial'
161
+ ]:
162
+ return getattr(module, name)
163
+ if name in ['file_tools', 'pandas_tools', 'wikipedia_tools',
153
164
  'newspaper_tools', 'arxiv_tools', 'spider_tools', 'duckdb_tools', 'csv_tools', 'json_tools', 'excel_tools', 'xml_tools', 'yaml_tools', 'calculator_tools', 'python_tools', 'shell_tools']:
154
165
  return module # Returns the callable module
155
166
  return getattr(module, name)
@@ -12,7 +12,6 @@ results = duckduckgo("AI news")
12
12
  from typing import List, Dict
13
13
  import logging
14
14
  from importlib import util
15
- import sys
16
15
 
17
16
  def internet_search(query: str) -> List[Dict]:
18
17
  """Perform an internet search using DuckDuckGo."""
@@ -40,8 +39,9 @@ def internet_search(query: str) -> List[Dict]:
40
39
  logging.error(error_msg)
41
40
  return [{"error": error_msg}]
42
41
 
43
- # Make the module callable
44
- sys.modules[__name__].__call__ = internet_search
42
+ def duckduckgo(query: str) -> List[Dict]:
43
+ """Alias for internet_search function."""
44
+ return internet_search(query)
45
45
 
46
46
  if __name__ == "__main__":
47
47
  # Example usage
@@ -2,13 +2,13 @@
2
2
 
3
3
  Usage:
4
4
  from praisonaiagents.tools import wikipedia_tools
5
- summary = wikipedia_tools.get_summary("Python programming language")
6
- page = wikipedia_tools.get_page("Python programming language")
7
- results = wikipedia_tools.search("Python programming")
5
+ summary = wikipedia_tools.wiki_summary("Python programming language")
6
+ page = wikipedia_tools.wiki_page("Python programming language")
7
+ results = wikipedia_tools.wiki_search("Python programming")
8
8
 
9
9
  or
10
- from praisonaiagents.tools import get_wikipedia_summary, get_wikipedia_page
11
- summary = get_wikipedia_summary("Python programming language")
10
+ from praisonaiagents.tools import wiki_search, wiki_summary, wiki_page
11
+ summary = wiki_summary("Python programming language")
12
12
  """
13
13
 
14
14
  import logging
@@ -32,7 +32,7 @@ class WikipediaTools:
32
32
  # Set default language to English
33
33
  wikipedia.set_lang("en")
34
34
 
35
- def search(
35
+ def wiki_search(
36
36
  self,
37
37
  query: str,
38
38
  results: int = 10,
@@ -63,7 +63,7 @@ class WikipediaTools:
63
63
  logging.error(error_msg)
64
64
  return {"error": error_msg}
65
65
 
66
- def get_summary(
66
+ def wiki_summary(
67
67
  self,
68
68
  title: str,
69
69
  sentences: int = 5,
@@ -92,7 +92,7 @@ class WikipediaTools:
92
92
  logging.error(error_msg)
93
93
  return {"error": error_msg}
94
94
 
95
- def get_page(
95
+ def wiki_page(
96
96
  self,
97
97
  title: str,
98
98
  auto_suggest: bool = True
@@ -168,7 +168,7 @@ class WikipediaTools:
168
168
 
169
169
  return sections
170
170
 
171
- def get_random(self, pages: int = 1) -> Union[List[str], Dict[str, str]]:
171
+ def wiki_random(self, pages: int = 1) -> Union[List[str], Dict[str, str]]:
172
172
  """
173
173
  Get random Wikipedia page titles.
174
174
 
@@ -185,7 +185,7 @@ class WikipediaTools:
185
185
  logging.error(error_msg)
186
186
  return {"error": error_msg}
187
187
 
188
- def set_language(self, language: str) -> bool:
188
+ def wiki_language(self, language: str) -> bool:
189
189
  """
190
190
  Set the language for Wikipedia searches.
191
191
 
@@ -205,11 +205,11 @@ class WikipediaTools:
205
205
 
206
206
  # Create instance for direct function access
207
207
  _wikipedia_tools = WikipediaTools()
208
- search = _wikipedia_tools.search
209
- get_summary = _wikipedia_tools.get_summary
210
- get_page = _wikipedia_tools.get_page
211
- get_random = _wikipedia_tools.get_random
212
- set_language = _wikipedia_tools.set_language
208
+ wiki_search = _wikipedia_tools.wiki_search
209
+ wiki_summary = _wikipedia_tools.wiki_summary
210
+ wiki_page = _wikipedia_tools.wiki_page
211
+ wiki_random = _wikipedia_tools.wiki_random
212
+ wiki_language = _wikipedia_tools.wiki_language
213
213
 
214
214
  if __name__ == "__main__":
215
215
  # Example usage
@@ -220,7 +220,7 @@ if __name__ == "__main__":
220
220
  # 1. Search for a topic
221
221
  print("1. Searching Wikipedia")
222
222
  print("------------------------------")
223
- search_results = search("Python programming language")
223
+ search_results = wiki_search("Python programming language")
224
224
  print("Search results:")
225
225
  print(json.dumps(search_results, indent=2))
226
226
  print()
@@ -228,7 +228,7 @@ if __name__ == "__main__":
228
228
  # 2. Get a page summary
229
229
  print("2. Getting Page Summary")
230
230
  print("------------------------------")
231
- summary = get_summary("Python programming language", sentences=3)
231
+ summary = wiki_summary("Python programming language", sentences=3)
232
232
  print("Summary:")
233
233
  print(summary)
234
234
  print()
@@ -236,7 +236,7 @@ if __name__ == "__main__":
236
236
  # 3. Get detailed page information
237
237
  print("3. Getting Full Page Information")
238
238
  print("------------------------------")
239
- page = get_page("Python programming language")
239
+ page = wiki_page("Python programming language")
240
240
  if isinstance(page, dict) and "error" not in page:
241
241
  print("Page sections:")
242
242
  for section in page["sections"]:
@@ -252,7 +252,7 @@ if __name__ == "__main__":
252
252
  # 4. Get random pages
253
253
  print("4. Getting Random Pages")
254
254
  print("------------------------------")
255
- random_pages = get_random(3)
255
+ random_pages = wiki_random(3)
256
256
  print("Random page titles:")
257
257
  print(json.dumps(random_pages, indent=2))
258
258
  print()
@@ -260,9 +260,9 @@ if __name__ == "__main__":
260
260
  # 5. Try different language
261
261
  print("5. Changing Language")
262
262
  print("------------------------------")
263
- success = set_language("es")
263
+ success = wiki_language("es")
264
264
  if success:
265
- summary = get_summary("Python (lenguaje de programación)", sentences=1)
265
+ summary = wiki_summary("Python (lenguaje de programación)", sentences=1)
266
266
  print("Spanish summary:")
267
267
  print(summary)
268
268
  print()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: praisonaiagents
3
- Version: 0.0.25
3
+ Version: 0.0.27
4
4
  Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
5
5
  Author: Mervin Praison
6
6
  Requires-Dist: pydantic
@@ -1,7 +1,7 @@
1
1
  praisonaiagents/__init__.py,sha256=xJLN8i6V9SRmJFMxSRWDQt_hBePoupVd3WanNIgbBbc,1052
2
2
  praisonaiagents/main.py,sha256=7Phfe0gdxHzbhPb3WRzBTfq9CaLq0K31M5DM_4oCiCQ,12451
3
3
  praisonaiagents/agent/__init__.py,sha256=sKO8wGEXvtCrvV1e834r1Okv0XAqAxqZCqz6hKLiTvA,79
4
- praisonaiagents/agent/agent.py,sha256=3Y8-eaebjOEculRgiz5IobAf5oadBKEpvNWJE5qaa4A,32305
4
+ praisonaiagents/agent/agent.py,sha256=0nNGMoP_SO8sM2uR0-fXKx7d2-OxaMLft-a5Mo6o-8s,33273
5
5
  praisonaiagents/agents/__init__.py,sha256=7RDeQNSqZg5uBjD4M_0p_F6YgfWuDuxPFydPU50kDYc,120
6
6
  praisonaiagents/agents/agents.py,sha256=BikzgqE469uUg3OeiBBihpYzuK1RUvRaB_CTc3DPdOM,23589
7
7
  praisonaiagents/build/lib/praisonaiagents/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
@@ -16,12 +16,12 @@ praisonaiagents/process/__init__.py,sha256=lkYbL7Hn5a0ldvJtkdH23vfIIZLIcanK-65C0
16
16
  praisonaiagents/process/process.py,sha256=4qXdrCDQPH5MtvHvdJVURXKNgSl6ae3OYTiqAF_A2ZU,24295
17
17
  praisonaiagents/task/__init__.py,sha256=VL5hXVmyGjINb34AalxpBMl-YW9m5EDcRkMTKkSSl7c,80
18
18
  praisonaiagents/task/task.py,sha256=UiiWgLDOdX_w0opP8h8-u-leVZlq1CkpGUmf7L2qyJs,3110
19
- praisonaiagents/tools/__init__.py,sha256=bFCnpM_MOiYASz7Y7b0WnFjF68QEgToR3JJgfiAWgfA,7012
19
+ praisonaiagents/tools/__init__.py,sha256=-0lV5n5cG54vYW6REjXIfuJnCLKnfQIDlXsySCaPB9s,7347
20
20
  praisonaiagents/tools/arxiv_tools.py,sha256=1stb31zTjLTon4jCnpZG5de9rKc9QWgC0leLegvPXWo,10528
21
21
  praisonaiagents/tools/calculator_tools.py,sha256=S1xPT74Geurvjm52QMMIG29zDXVEWJmM6nmyY7yF298,9571
22
22
  praisonaiagents/tools/csv_tools.py,sha256=gX2nYz4ktmpKvXB36jx5-GqddntEQD4G2fVQWTIKrwU,8435
23
23
  praisonaiagents/tools/duckdb_tools.py,sha256=KB3b-1HcX7ocoxskDpk_7RRpTGHnH8hizIY0ZdLRbIE,8816
24
- praisonaiagents/tools/duckduckgo_tools.py,sha256=LUliFagYtVz7kcgsJfHOC5fbF4RsrT3kFcXoW_4RUr4,1622
24
+ praisonaiagents/tools/duckduckgo_tools.py,sha256=ynlB5ZyWfHYjUq0JZXH12TganqTihgD-2IyRgs32y84,1657
25
25
  praisonaiagents/tools/excel_tools.py,sha256=e2HqcwnyBueOyss0xEKxff3zB4w4sNWCOMXvZfbDYlE,11309
26
26
  praisonaiagents/tools/file_tools.py,sha256=KRskI9q8up3sHaLQSaIGtvpl1brq419Up6YvB9QzSoI,8807
27
27
  praisonaiagents/tools/json_tools.py,sha256=ApUYNuQ1qnbmYNCxSlx6Tth_H1yo8mhWtZ7Rr2WS6C4,16507
@@ -32,11 +32,11 @@ praisonaiagents/tools/shell_tools.py,sha256=P3fSrfOw71CGcrPwdPOA9Fr6Bgt_CAC71bUj
32
32
  praisonaiagents/tools/spider_tools.py,sha256=lrZnT1V1BC46We-AzBrDB1Ryifr3KKGmYNntMsScU7w,15094
33
33
  praisonaiagents/tools/test.py,sha256=UHOTNrnMo0_H6I2g48re1WNZkrR7f6z25UnlWxiOSbM,1600
34
34
  praisonaiagents/tools/tools.py,sha256=TK5njOmDSpMlyBnbeBzNSlnzXWlnNaTpVqkFPhkMArg,265
35
- praisonaiagents/tools/wikipedia_tools.py,sha256=vKYvnJlLnG5Ysvhdi5fq8efDMWInfDCXaizYB5WJo9Q,9435
35
+ praisonaiagents/tools/wikipedia_tools.py,sha256=pGko-f33wqXgxJTv8db7TbizY5XnzBQRkNdq_GsplvI,9465
36
36
  praisonaiagents/tools/xml_tools.py,sha256=iYTMBEk5l3L3ryQ1fkUnNVYK-Nnua2Kx2S0dxNMMs1A,17122
37
37
  praisonaiagents/tools/yaml_tools.py,sha256=uogAZrhXV9O7xvspAtcTfpKSQYL2nlOTvCQXN94-G9A,14215
38
38
  praisonaiagents/tools/yfinance_tools.py,sha256=nmzjS7G_5GqMQD4r867mt17dHg5xvtsYDDfOPh68SgE,8105
39
- praisonaiagents-0.0.25.dist-info/METADATA,sha256=Z5VIr56RrpyJ7xF6mav54_GzlQwmjNMKKj9-4JKeBoY,233
40
- praisonaiagents-0.0.25.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
41
- praisonaiagents-0.0.25.dist-info/top_level.txt,sha256=_HsRddrJ23iDx5TTqVUVvXG2HeHBL5voshncAMDGjtA,16
42
- praisonaiagents-0.0.25.dist-info/RECORD,,
39
+ praisonaiagents-0.0.27.dist-info/METADATA,sha256=PBOP4EDkaq4vlKhH8RUz-75vCuAgkIRhrxnMWy-CsDM,233
40
+ praisonaiagents-0.0.27.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
41
+ praisonaiagents-0.0.27.dist-info/top_level.txt,sha256=_HsRddrJ23iDx5TTqVUVvXG2HeHBL5voshncAMDGjtA,16
42
+ praisonaiagents-0.0.27.dist-info/RECORD,,