aient 1.2.16__py3-none-any.whl → 1.2.17__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.
- aient/architext/architext/core.py +37 -19
- aient/architext/test/test.py +23 -0
- {aient-1.2.16.dist-info → aient-1.2.17.dist-info}/METADATA +1 -1
- {aient-1.2.16.dist-info → aient-1.2.17.dist-info}/RECORD +7 -7
- {aient-1.2.16.dist-info → aient-1.2.17.dist-info}/WHEEL +0 -0
- {aient-1.2.16.dist-info → aient-1.2.17.dist-info}/licenses/LICENSE +0 -0
- {aient-1.2.16.dist-info → aient-1.2.17.dist-info}/top_level.txt +0 -0
@@ -672,30 +672,48 @@ class Messages:
|
|
672
672
|
return Messages(*self._messages[index])
|
673
673
|
return self._messages[index]
|
674
674
|
|
675
|
-
def __setitem__(self, index: slice, value: 'Messages'):
|
676
|
-
if
|
677
|
-
|
675
|
+
def __setitem__(self, index: Union[int, slice], value: Union[Message, 'Messages']):
|
676
|
+
if isinstance(index, int):
|
677
|
+
if not isinstance(value, Message):
|
678
|
+
raise TypeError("When assigning to an index, the value must be a Message.")
|
678
679
|
|
679
|
-
|
680
|
-
|
681
|
-
start, stop, step = index.indices(len(self._messages))
|
680
|
+
if not (-len(self._messages) <= index < len(self._messages)):
|
681
|
+
raise IndexError("Messages assignment index out of range")
|
682
682
|
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
# Remove old providers from the index
|
687
|
-
for i in range(start, stop):
|
688
|
-
for provider in self._messages[i].provider():
|
683
|
+
# Get old message to remove its providers
|
684
|
+
old_message = self._messages[index]
|
685
|
+
for provider in old_message.provider():
|
689
686
|
self._notify_provider_removed(provider)
|
690
687
|
|
691
|
-
|
692
|
-
|
688
|
+
# Assign new message
|
689
|
+
self._messages[index] = value
|
690
|
+
value._parent_messages = self
|
691
|
+
for provider in value.provider():
|
692
|
+
self._notify_provider_added(provider, value)
|
693
|
+
|
694
|
+
elif isinstance(index, slice):
|
695
|
+
if not isinstance(value, Messages):
|
696
|
+
raise TypeError("When assigning to a slice, the value must be a Messages object.")
|
693
697
|
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
698
|
+
start, stop, step = index.indices(len(self._messages))
|
699
|
+
if step != 1:
|
700
|
+
raise ValueError("Slice assignment with step is not supported.")
|
701
|
+
|
702
|
+
# Remove old providers from the index
|
703
|
+
for i in range(start, stop):
|
704
|
+
for provider in self._messages[i].provider():
|
705
|
+
self._notify_provider_removed(provider)
|
706
|
+
|
707
|
+
# Replace the slice in the list
|
708
|
+
self._messages[start:stop] = value._messages
|
709
|
+
|
710
|
+
# Add new providers to the index and set parent
|
711
|
+
for msg in value:
|
712
|
+
msg._parent_messages = self
|
713
|
+
for provider in msg.provider():
|
714
|
+
self._notify_provider_added(provider, msg)
|
715
|
+
else:
|
716
|
+
raise TypeError("Unsupported operand type(s) for assignment")
|
699
717
|
|
700
718
|
def __len__(self) -> int: return len(self._messages)
|
701
719
|
def __iter__(self): return iter(self._messages)
|
aient/architext/test/test.py
CHANGED
@@ -1386,6 +1386,29 @@ Files: {Files(visible=True, name="files")}
|
|
1386
1386
|
if os.path.exists(test_file):
|
1387
1387
|
os.remove(test_file)
|
1388
1388
|
|
1389
|
+
async def test_zh_provider_plus_message_assignment(self):
|
1390
|
+
"""测试 ContextProvider + Message 的结果可以赋值回 Messages 列表"""
|
1391
|
+
# 1. 准备 provider 和 messages
|
1392
|
+
text_provider = Texts("Prefix text.")
|
1393
|
+
messages = Messages(
|
1394
|
+
UserMessage("Initial user message.")
|
1395
|
+
)
|
1396
|
+
|
1397
|
+
# 2. 执行操作
|
1398
|
+
# 这行代码在修改 __setitem__ 之前应该会失败
|
1399
|
+
messages[0] = text_provider + messages[0]
|
1400
|
+
|
1401
|
+
# 3. 验证结果
|
1402
|
+
self.assertEqual(len(messages), 1)
|
1403
|
+
self.assertEqual(len(messages[0]), 2) # Now UserMessage has two providers
|
1404
|
+
|
1405
|
+
# 4. 验证内容
|
1406
|
+
rendered = await messages.render_latest()
|
1407
|
+
self.assertEqual(rendered[0]['content'], "Prefix text.Initial user message.")
|
1408
|
+
|
1409
|
+
# 5. 验证 provider 索引
|
1410
|
+
self.assertIsNotNone(messages.provider(text_provider.name))
|
1411
|
+
|
1389
1412
|
|
1390
1413
|
# ==============================================================================
|
1391
1414
|
# 6. 演示
|
@@ -1,8 +1,8 @@
|
|
1
1
|
aient/__init__.py,sha256=SRfF7oDVlOOAi6nGKiJIUK6B_arqYLO9iSMp-2IZZps,21
|
2
2
|
aient/architext/architext/__init__.py,sha256=79Ih1151rfcqZdr7F8HSZSTs_iT2SKd1xCkehMsXeXs,19
|
3
|
-
aient/architext/architext/core.py,sha256=
|
3
|
+
aient/architext/architext/core.py,sha256=IHN1d8Pe1oqaFSS1EQ3OpxCJydiLB3goL5n2uohr5Q8,29737
|
4
4
|
aient/architext/test/openai_client.py,sha256=Dqtbmubv6vwF8uBqcayG0kbsiO65of7sgU2-DRBi-UM,4590
|
5
|
-
aient/architext/test/test.py,sha256=
|
5
|
+
aient/architext/test/test.py,sha256=o_lxUYqGnt3gAlIKBqxNe9OrqT5v7sjlPXKMVO6e5uw,65629
|
6
6
|
aient/architext/test/test_save_load.py,sha256=o8DqH6gDYZkFkQy-a7blqLtJTRj5e4a-Lil48pJ0V3g,3260
|
7
7
|
aient/core/__init__.py,sha256=NxjebTlku35S4Dzr16rdSqSTWUvvwEeACe8KvHJnjPg,34
|
8
8
|
aient/core/log_config.py,sha256=kz2_yJv1p-o3lUQOwA3qh-LSc3wMHv13iCQclw44W9c,274
|
@@ -35,8 +35,8 @@ aient/plugins/write_file.py,sha256=Jt8fOEwqhYiSWpCbwfAr1xoi_BmFnx3076GMhuL06uI,3
|
|
35
35
|
aient/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
36
|
aient/utils/prompt.py,sha256=UcSzKkFE4-h_1b6NofI6xgk3GoleqALRKY8VBaXLjmI,11311
|
37
37
|
aient/utils/scripts.py,sha256=VqtK4RFEx7KxkmcqG3lFDS1DxoNlFFGErEjopVcc8IE,40974
|
38
|
-
aient-1.2.
|
39
|
-
aient-1.2.
|
40
|
-
aient-1.2.
|
41
|
-
aient-1.2.
|
42
|
-
aient-1.2.
|
38
|
+
aient-1.2.17.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
|
39
|
+
aient-1.2.17.dist-info/METADATA,sha256=-LOxDUd1pKTfsD-gVU78tU_ureKlvYPxFjUeOYMFew8,4842
|
40
|
+
aient-1.2.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
41
|
+
aient-1.2.17.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
|
42
|
+
aient-1.2.17.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|