aient 1.2.26__tar.gz → 1.2.27__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 (56) hide show
  1. {aient-1.2.26 → aient-1.2.27}/PKG-INFO +1 -1
  2. {aient-1.2.26 → aient-1.2.27}/aient/architext/architext/core.py +9 -0
  3. {aient-1.2.26 → aient-1.2.27}/aient/architext/test/test.py +20 -0
  4. {aient-1.2.26 → aient-1.2.27}/aient.egg-info/PKG-INFO +1 -1
  5. {aient-1.2.26 → aient-1.2.27}/pyproject.toml +1 -1
  6. {aient-1.2.26 → aient-1.2.27}/LICENSE +0 -0
  7. {aient-1.2.26 → aient-1.2.27}/README.md +0 -0
  8. {aient-1.2.26 → aient-1.2.27}/aient/__init__.py +0 -0
  9. {aient-1.2.26 → aient-1.2.27}/aient/architext/architext/__init__.py +0 -0
  10. {aient-1.2.26 → aient-1.2.27}/aient/architext/test/openai_client.py +0 -0
  11. {aient-1.2.26 → aient-1.2.27}/aient/architext/test/test_save_load.py +0 -0
  12. {aient-1.2.26 → aient-1.2.27}/aient/core/__init__.py +0 -0
  13. {aient-1.2.26 → aient-1.2.27}/aient/core/log_config.py +0 -0
  14. {aient-1.2.26 → aient-1.2.27}/aient/core/models.py +0 -0
  15. {aient-1.2.26 → aient-1.2.27}/aient/core/request.py +0 -0
  16. {aient-1.2.26 → aient-1.2.27}/aient/core/response.py +0 -0
  17. {aient-1.2.26 → aient-1.2.27}/aient/core/test/test_base_api.py +0 -0
  18. {aient-1.2.26 → aient-1.2.27}/aient/core/test/test_geminimask.py +0 -0
  19. {aient-1.2.26 → aient-1.2.27}/aient/core/test/test_image.py +0 -0
  20. {aient-1.2.26 → aient-1.2.27}/aient/core/test/test_payload.py +0 -0
  21. {aient-1.2.26 → aient-1.2.27}/aient/core/utils.py +0 -0
  22. {aient-1.2.26 → aient-1.2.27}/aient/models/__init__.py +0 -0
  23. {aient-1.2.26 → aient-1.2.27}/aient/models/audio.py +0 -0
  24. {aient-1.2.26 → aient-1.2.27}/aient/models/base.py +0 -0
  25. {aient-1.2.26 → aient-1.2.27}/aient/models/chatgpt.py +0 -0
  26. {aient-1.2.26 → aient-1.2.27}/aient/plugins/__init__.py +0 -0
  27. {aient-1.2.26 → aient-1.2.27}/aient/plugins/arXiv.py +0 -0
  28. {aient-1.2.26 → aient-1.2.27}/aient/plugins/config.py +0 -0
  29. {aient-1.2.26 → aient-1.2.27}/aient/plugins/excute_command.py +0 -0
  30. {aient-1.2.26 → aient-1.2.27}/aient/plugins/get_time.py +0 -0
  31. {aient-1.2.26 → aient-1.2.27}/aient/plugins/image.py +0 -0
  32. {aient-1.2.26 → aient-1.2.27}/aient/plugins/list_directory.py +0 -0
  33. {aient-1.2.26 → aient-1.2.27}/aient/plugins/read_file.py +0 -0
  34. {aient-1.2.26 → aient-1.2.27}/aient/plugins/read_image.py +0 -0
  35. {aient-1.2.26 → aient-1.2.27}/aient/plugins/readonly.py +0 -0
  36. {aient-1.2.26 → aient-1.2.27}/aient/plugins/registry.py +0 -0
  37. {aient-1.2.26 → aient-1.2.27}/aient/plugins/run_python.py +0 -0
  38. {aient-1.2.26 → aient-1.2.27}/aient/plugins/websearch.py +0 -0
  39. {aient-1.2.26 → aient-1.2.27}/aient/plugins/write_file.py +0 -0
  40. {aient-1.2.26 → aient-1.2.27}/aient/utils/__init__.py +0 -0
  41. {aient-1.2.26 → aient-1.2.27}/aient/utils/prompt.py +0 -0
  42. {aient-1.2.26 → aient-1.2.27}/aient/utils/scripts.py +0 -0
  43. {aient-1.2.26 → aient-1.2.27}/aient.egg-info/SOURCES.txt +0 -0
  44. {aient-1.2.26 → aient-1.2.27}/aient.egg-info/dependency_links.txt +0 -0
  45. {aient-1.2.26 → aient-1.2.27}/aient.egg-info/requires.txt +0 -0
  46. {aient-1.2.26 → aient-1.2.27}/aient.egg-info/top_level.txt +0 -0
  47. {aient-1.2.26 → aient-1.2.27}/setup.cfg +0 -0
  48. {aient-1.2.26 → aient-1.2.27}/test/test_Web_crawler.py +0 -0
  49. {aient-1.2.26 → aient-1.2.27}/test/test_ddg_search.py +0 -0
  50. {aient-1.2.26 → aient-1.2.27}/test/test_google_search.py +0 -0
  51. {aient-1.2.26 → aient-1.2.27}/test/test_ollama.py +0 -0
  52. {aient-1.2.26 → aient-1.2.27}/test/test_plugin.py +0 -0
  53. {aient-1.2.26 → aient-1.2.27}/test/test_search.py +0 -0
  54. {aient-1.2.26 → aient-1.2.27}/test/test_url.py +0 -0
  55. {aient-1.2.26 → aient-1.2.27}/test/test_whisper.py +0 -0
  56. {aient-1.2.26 → aient-1.2.27}/test/test_yjh.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.2.26
3
+ Version: 1.2.27
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -315,6 +315,8 @@ class Message(ABC):
315
315
  self.role = role
316
316
  processed_items = []
317
317
  for item in initial_items:
318
+ if item is None:
319
+ continue
318
320
  if isinstance(item, str):
319
321
  # Check if the string contains placeholders from f-string rendering
320
322
  import re
@@ -471,6 +473,13 @@ class Message(ABC):
471
473
  def get(self, key: str, default: Any = None) -> Any:
472
474
  """提供类似字典的 .get() 方法来访问属性。"""
473
475
  return getattr(self, key, default)
476
+
477
+ async def render_latest(self) -> Optional[Dict[str, Any]]:
478
+ """Refreshes all providers in the message and returns the rendered dictionary."""
479
+ tasks = [provider.refresh() for provider in self._items]
480
+ await asyncio.gather(*tasks)
481
+ return self.to_dict()
482
+
474
483
  def to_dict(self) -> Optional[Dict[str, Any]]:
475
484
  is_multimodal = any(isinstance(p, Images) for p in self._items)
476
485
 
@@ -1434,6 +1434,26 @@ Files: {Files(visible=True, name="files")}
1434
1434
  self.assertTrue(message in messages_collection)
1435
1435
  self.assertFalse(UserMessage("not in collection") in messages_collection)
1436
1436
 
1437
+ async def test_zz_none_input_ignored(self):
1438
+ """测试在Message初始化时,None值是否被自动忽略"""
1439
+ # 1. 在初始化列表中包含 None
1440
+ message = UserMessage("Hello", None, "World")
1441
+ self.assertEqual(len(message.provider()), 2)
1442
+ self.assertIsInstance(message.provider()[0], Texts)
1443
+ self.assertIsInstance(message.provider()[1], Texts)
1444
+ rendered = await message.render_latest()
1445
+ self.assertEqual(rendered['content'], "HelloWorld")
1446
+
1447
+ # 2. 测试只有 None
1448
+ message_none = SystemMessage(None)
1449
+ self.assertEqual(len(message_none.provider()), 0)
1450
+ self.assertFalse(message_none)
1451
+
1452
+ # 3. 测试混合 provider 和 None
1453
+ message_mixed = SystemMessage(Texts("hi"), None)
1454
+ self.assertEqual(len(message_mixed.provider()), 1)
1455
+ self.assertIsInstance(message_mixed.provider()[0], Texts)
1456
+
1437
1457
 
1438
1458
  # ==============================================================================
1439
1459
  # 6. 演示
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.2.26
3
+ Version: 1.2.27
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aient"
3
- version = "1.2.26"
3
+ version = "1.2.27"
4
4
  description = "Aient: The Awakening of Agent."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
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
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
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
File without changes
File without changes
File without changes
File without changes
File without changes