beswarm 0.2.78__tar.gz → 0.2.80__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 (132) hide show
  1. {beswarm-0.2.78 → beswarm-0.2.80}/PKG-INFO +2 -2
  2. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/core.py +1 -0
  3. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/search_web.py +44 -7
  4. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/subtasks.py +1 -1
  5. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/worker.py +2 -1
  6. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm.egg-info/PKG-INFO +2 -2
  7. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm.egg-info/requires.txt +1 -1
  8. {beswarm-0.2.78 → beswarm-0.2.80}/pyproject.toml +2 -2
  9. {beswarm-0.2.78 → beswarm-0.2.80}/MANIFEST.in +0 -0
  10. {beswarm-0.2.78 → beswarm-0.2.80}/README.md +0 -0
  11. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/__init__.py +0 -0
  12. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/agents/chatgroup.py +0 -0
  13. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/agents/planact.py +0 -0
  14. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/__init__.py +0 -0
  15. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/__init__.py +0 -0
  16. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/log_config.py +0 -0
  17. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/models.py +0 -0
  18. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/request.py +0 -0
  19. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/response.py +0 -0
  20. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/test/test_base_api.py +0 -0
  21. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/test/test_geminimask.py +0 -0
  22. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/test/test_image.py +0 -0
  23. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/test/test_payload.py +0 -0
  24. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/core/utils.py +0 -0
  25. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/models/__init__.py +0 -0
  26. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/models/audio.py +0 -0
  27. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/models/base.py +0 -0
  28. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/models/chatgpt.py +0 -0
  29. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/__init__.py +0 -0
  30. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/arXiv.py +0 -0
  31. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/config.py +0 -0
  32. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/excute_command.py +0 -0
  33. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/get_time.py +0 -0
  34. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/image.py +0 -0
  35. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/list_directory.py +0 -0
  36. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/read_file.py +0 -0
  37. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/read_image.py +0 -0
  38. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/readonly.py +0 -0
  39. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/registry.py +0 -0
  40. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/run_python.py +0 -0
  41. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/websearch.py +0 -0
  42. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/plugins/write_file.py +0 -0
  43. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/utils/__init__.py +0 -0
  44. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/utils/prompt.py +0 -0
  45. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/aient/utils/scripts.py +0 -0
  46. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_Web_crawler.py +0 -0
  47. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_ddg_search.py +0 -0
  48. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_google_search.py +0 -0
  49. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_ollama.py +0 -0
  50. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_plugin.py +0 -0
  51. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_search.py +0 -0
  52. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_url.py +0 -0
  53. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_whisper.py +0 -0
  54. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/aient/test/test_yjh.py +0 -0
  55. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/bemcp/bemcp/__init__.py +0 -0
  56. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/bemcp/bemcp/decorator.py +0 -0
  57. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/bemcp/bemcp/main.py +0 -0
  58. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/bemcp/bemcp/utils.py +0 -0
  59. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/bemcp/test/client.py +0 -0
  60. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/bemcp/test/server.py +0 -0
  61. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/broker.py +0 -0
  62. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/knowledge_graph.py +0 -0
  63. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/prompt.py +0 -0
  64. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/README.md +0 -0
  65. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  66. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  67. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  68. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  69. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  70. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  71. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  72. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  73. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  74. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  75. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  76. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  77. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  78. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  79. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  80. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  81. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  82. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  83. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  84. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  85. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  86. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  87. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  88. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  89. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  90. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  91. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/README.md +0 -0
  92. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/c-tags.scm +0 -0
  93. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  94. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  95. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/dart-tags.scm +0 -0
  96. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  97. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  98. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/elm-tags.scm +0 -0
  99. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/go-tags.scm +0 -0
  100. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  101. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/java-tags.scm +0 -0
  102. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  103. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  104. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  105. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/php-tags.scm +0 -0
  106. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/python-tags.scm +0 -0
  107. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/ql-tags.scm +0 -0
  108. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  109. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/rust-tags.scm +0 -0
  110. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/scala-tags.scm +0 -0
  111. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  112. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/taskmanager.py +0 -0
  113. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/__init__.py +0 -0
  114. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/click.py +0 -0
  115. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/completion.py +0 -0
  116. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/edit_file.py +0 -0
  117. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/graph.py +0 -0
  118. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/planner.py +0 -0
  119. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/repomap.py +0 -0
  120. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/request_input.py +0 -0
  121. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/screenshot.py +0 -0
  122. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/search_arxiv.py +0 -0
  123. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/tools/write_csv.py +0 -0
  124. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm/utils.py +0 -0
  125. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm.egg-info/SOURCES.txt +0 -0
  126. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm.egg-info/dependency_links.txt +0 -0
  127. {beswarm-0.2.78 → beswarm-0.2.80}/beswarm.egg-info/top_level.txt +0 -0
  128. {beswarm-0.2.78 → beswarm-0.2.80}/setup.cfg +0 -0
  129. {beswarm-0.2.78 → beswarm-0.2.80}/test/test_TaskManager.py +0 -0
  130. {beswarm-0.2.78 → beswarm-0.2.80}/test/test_broker.py +0 -0
  131. {beswarm-0.2.78 → beswarm-0.2.80}/test/test_graph.py +0 -0
  132. {beswarm-0.2.78 → beswarm-0.2.80}/test/test_new_TaskManager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.78
3
+ Version: 0.2.80
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -16,7 +16,7 @@ Requires-Dist: msgspec>=0.19.0
16
16
  Requires-Dist: networkx>=3.4.2
17
17
  Requires-Dist: numpy>=2.2.5
18
18
  Requires-Dist: pdfminer-six==20240706
19
- Requires-Dist: pillow>=11.2.1
19
+ Requires-Dist: pillow>=10.4.0
20
20
  Requires-Dist: pyautogui>=0.9.54
21
21
  Requires-Dist: pygments>=2.19.1
22
22
  Requires-Dist: pyperclip>=1.9.0
@@ -12,6 +12,7 @@ broker = MessageBroker()
12
12
  mcp_manager = MCPManager()
13
13
  kgm = KnowledgeGraphManager(broker=broker)
14
14
  current_task_manager = contextvars.ContextVar('current_task_manager')
15
+ current_work_dir = contextvars.ContextVar('current_work_dir', default=None)
15
16
 
16
17
  def get_task_manager():
17
18
  """Creates a new, isolated TaskManager instance."""
@@ -1,10 +1,14 @@
1
1
  import re
2
2
  import os
3
+ import csv
4
+ import time
3
5
  import json
4
6
  import httpx
5
7
  import threading
8
+ from pathlib import Path
6
9
 
7
10
  from ..aient.aient.plugins import register_tool, get_url_content # Assuming a similar plugin structure
11
+ from ..core import current_work_dir
8
12
 
9
13
  class ThreadWithReturnValue(threading.Thread):
10
14
  def run(self):
@@ -19,6 +23,7 @@ class ThreadWithReturnValue(threading.Thread):
19
23
  async def search_web(query: str):
20
24
  """
21
25
  获取 Google 搜索结果。
26
+ 搜索结果将保存在 csv 文件到 .beswarm/cache 目录下
22
27
 
23
28
  参数:
24
29
  query (str): 要在 Google 上搜索的查询字符串。
@@ -289,13 +294,45 @@ async def search_web(query: str):
289
294
  # with open(output_filename, "w", encoding="utf-8") as f:
290
295
  # json.dump(final_web_content, f, indent=2, ensure_ascii=False)
291
296
  # print(f"Filtered web content saved to {output_filename}")
292
- final_result = ""
293
- for item in final_web_content:
294
- final_result += item["content"]
295
- final_result += "\n\n"
296
- if not final_result:
297
- return "No web content"
298
- return final_result
297
+
298
+ if final_web_content:
299
+ work_dir = current_work_dir.get()
300
+ if work_dir:
301
+ output_path = Path(work_dir) / ".beswarm" / "cache"
302
+ else:
303
+ output_path = Path(".")
304
+
305
+ output_path.mkdir(parents=True, exist_ok=True)
306
+
307
+ # 使用时间戳生成唯一的文件名
308
+ timestamp = time.strftime("%Y%m%d-%H%M%S")
309
+ csv_filename = f"web_content_{timestamp}.csv"
310
+ csv_filepath = output_path / csv_filename
311
+
312
+ with open(csv_filepath, "w", newline="", encoding="utf-8") as csvfile:
313
+ # 根据字典中的键定义字段名
314
+ fieldnames = ["query", "url", "content"]
315
+ writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
316
+
317
+ # 写入标题行
318
+ writer.writeheader()
319
+
320
+ # 写入数据行
321
+ for item in final_web_content:
322
+ item['query'] = query
323
+ if 'content' in item and isinstance(item['content'], str):
324
+ item['content'] = item['content'].replace('\r', '\\r').replace('\n', '\\n')
325
+ writer.writerow(item)
326
+ return f"已将筛选后的网页内容保存到 {csv_filepath.absolute()}"
327
+ return "No web content"
328
+
329
+
330
+ # for item in final_web_content:
331
+ # final_result += item["content"]
332
+ # final_result += "\n\n"
333
+ # if not final_result:
334
+ # return "No web content"
335
+ # return final_result
299
336
 
300
337
  import difflib
301
338
 
@@ -153,7 +153,7 @@ def create_tasks_from_csv(goal_template: str, csv_file_path: str, tools_json_str
153
153
  csv_file_path (str): 输入的CSV文件的完整路径。CSV文件的第一行必须是列标题。
154
154
  tools_json_str (str): 一个JSON格式的字符串,表示所有子任务可用的工具列表。
155
155
  例如: '["read_file", "write_to_file"]'。
156
- base_work_dir (str): 所有子任务工作目录的根路径。每个子任务将在此目录下
156
+ base_work_dir (str): 所有子任务工作目录的根路径。每个子任务将在此目录下,**必须**使用绝对路径。
157
157
  创建一个以其唯一标识(如CSV中的id列)命名的子目录。base_work_dir **禁止** 设置为主任务目录本身。
158
158
 
159
159
  Returns:
@@ -1,7 +1,7 @@
1
1
  from datetime import datetime
2
2
  from typing import List, Dict, Union
3
3
 
4
- from ..core import mcp_manager, broker, kgm, get_task_manager, current_task_manager
4
+ from ..core import mcp_manager, broker, kgm, get_task_manager, current_task_manager, current_work_dir
5
5
  from ..agents.planact import BrokerWorker
6
6
  from ..agents.chatgroup import ChatGroupWorker
7
7
  from ..aient.aient.plugins import register_tool
@@ -12,6 +12,7 @@ async def worker(goal: str, tools: List[Union[str, Dict]], work_dir: str, cache_
12
12
  start_time = datetime.now()
13
13
  task_manager = get_task_manager()
14
14
  current_task_manager.set(task_manager)
15
+ current_work_dir.set(work_dir)
15
16
  worker_instance = BrokerWorker(goal, tools, work_dir, cache_messages, broker, mcp_manager, task_manager, kgm)
16
17
  result = await worker_instance.run()
17
18
  end_time = datetime.now()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.78
3
+ Version: 0.2.80
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -16,7 +16,7 @@ Requires-Dist: msgspec>=0.19.0
16
16
  Requires-Dist: networkx>=3.4.2
17
17
  Requires-Dist: numpy>=2.2.5
18
18
  Requires-Dist: pdfminer-six==20240706
19
- Requires-Dist: pillow>=11.2.1
19
+ Requires-Dist: pillow>=10.4.0
20
20
  Requires-Dist: pyautogui>=0.9.54
21
21
  Requires-Dist: pygments>=2.19.1
22
22
  Requires-Dist: pyperclip>=1.9.0
@@ -10,7 +10,7 @@ msgspec>=0.19.0
10
10
  networkx>=3.4.2
11
11
  numpy>=2.2.5
12
12
  pdfminer-six==20240706
13
- pillow>=11.2.1
13
+ pillow>=10.4.0
14
14
  pyautogui>=0.9.54
15
15
  pygments>=2.19.1
16
16
  pyperclip>=1.9.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beswarm"
3
- version = "0.2.78"
3
+ version = "0.2.80"
4
4
  description = "MAS"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -17,7 +17,7 @@ dependencies = [
17
17
  "networkx>=3.4.2",
18
18
  "numpy>=2.2.5",
19
19
  "pdfminer-six==20240706",
20
- "pillow>=11.2.1",
20
+ "pillow>=10.4.0",
21
21
  "pyautogui>=0.9.54",
22
22
  "pygments>=2.19.1",
23
23
  "pyperclip>=1.9.0",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes