aient 1.2.7__py3-none-any.whl → 1.2.8__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 +26 -0
- aient/architext/test/test.py +42 -0
- {aient-1.2.7.dist-info → aient-1.2.8.dist-info}/METADATA +1 -1
- {aient-1.2.7.dist-info → aient-1.2.8.dist-info}/RECORD +7 -7
- {aient-1.2.7.dist-info → aient-1.2.8.dist-info}/WHEEL +0 -0
- {aient-1.2.7.dist-info → aient-1.2.8.dist-info}/licenses/LICENSE +0 -0
- {aient-1.2.7.dist-info → aient-1.2.8.dist-info}/top_level.txt +0 -0
@@ -636,5 +636,31 @@ class Messages:
|
|
636
636
|
if isinstance(index, slice):
|
637
637
|
return Messages(*self._messages[index])
|
638
638
|
return self._messages[index]
|
639
|
+
|
640
|
+
def __setitem__(self, index: slice, value: 'Messages'):
|
641
|
+
if not isinstance(index, slice) or not isinstance(value, Messages):
|
642
|
+
raise TypeError("Unsupported operand type(s) for slice assignment")
|
643
|
+
|
644
|
+
# Basic slice assignment logic.
|
645
|
+
# A more robust implementation would handle step and negative indices.
|
646
|
+
start, stop, step = index.indices(len(self._messages))
|
647
|
+
|
648
|
+
if step != 1:
|
649
|
+
raise ValueError("Slice assignment with step is not supported.")
|
650
|
+
|
651
|
+
# Remove old providers from the index
|
652
|
+
for i in range(start, stop):
|
653
|
+
for provider in self._messages[i].provider():
|
654
|
+
self._notify_provider_removed(provider)
|
655
|
+
|
656
|
+
# Replace the slice in the list
|
657
|
+
self._messages[start:stop] = value._messages
|
658
|
+
|
659
|
+
# Add new providers to the index and set parent
|
660
|
+
for msg in value:
|
661
|
+
msg._parent_messages = self
|
662
|
+
for provider in msg.provider():
|
663
|
+
self._notify_provider_added(provider, msg)
|
664
|
+
|
639
665
|
def __len__(self) -> int: return len(self._messages)
|
640
666
|
def __iter__(self): return iter(self._messages)
|
aient/architext/test/test.py
CHANGED
@@ -1217,6 +1217,48 @@ Current time: {Texts(lambda: datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}
|
|
1217
1217
|
self.assertEqual(len(sliced_single), 1)
|
1218
1218
|
self.assertIs(sliced_single[0], m3)
|
1219
1219
|
|
1220
|
+
async def test_zd_slice_assignment(self):
|
1221
|
+
"""测试 Messages 对象的切片赋值功能"""
|
1222
|
+
# 1. Setup initial Messages objects
|
1223
|
+
m1 = SystemMessage("1")
|
1224
|
+
m2 = UserMessage("2")
|
1225
|
+
m3 = AssistantMessage("3")
|
1226
|
+
m4 = UserMessage("4")
|
1227
|
+
messages1 = Messages(m1, m2, m3, m4)
|
1228
|
+
|
1229
|
+
m5 = SystemMessage("5")
|
1230
|
+
m6 = UserMessage("6")
|
1231
|
+
messages2 = Messages(m5, m6)
|
1232
|
+
|
1233
|
+
# 2. Perform slice assignment
|
1234
|
+
# This should replace elements from index 1 onwards in messages1
|
1235
|
+
# with all elements from messages2
|
1236
|
+
messages1[1:] = messages2
|
1237
|
+
|
1238
|
+
# 3. Verify the result
|
1239
|
+
self.assertEqual(len(messages1), 3) # Should be m1, m5, m6
|
1240
|
+
self.assertIs(messages1[0], m1)
|
1241
|
+
self.assertIs(messages1[1], m5)
|
1242
|
+
self.assertIs(messages1[2], m6)
|
1243
|
+
|
1244
|
+
# 4. Test assigning from a slice, with different roles to prevent merging
|
1245
|
+
messages3 = Messages(UserMessage("A"), AssistantMessage("B"), UserMessage("C"))
|
1246
|
+
messages4 = Messages(SystemMessage("X"), AssistantMessage("Y"))
|
1247
|
+
|
1248
|
+
self.assertEqual(len(messages3), 3) # Verify length before assignment
|
1249
|
+
|
1250
|
+
messages3[1:2] = messages4[1:] # Replace AssistantMessage("B") with AssistantMessage("Y")
|
1251
|
+
|
1252
|
+
# We need to refresh to access .content property correctly
|
1253
|
+
await messages3.refresh()
|
1254
|
+
|
1255
|
+
self.assertEqual(len(messages3), 3)
|
1256
|
+
self.assertEqual(messages3[0].content, "A")
|
1257
|
+
self.assertEqual(messages3[1].content, "Y")
|
1258
|
+
self.assertEqual(messages3[2].content, "C")
|
1259
|
+
self.assertIsInstance(messages3[1], AssistantMessage)
|
1260
|
+
|
1261
|
+
|
1220
1262
|
# ==============================================================================
|
1221
1263
|
# 6. 演示
|
1222
1264
|
# ==============================================================================
|
@@ -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=83eouPWfZt9G6TGCQguoOxOZM_-HRfXIUwjGzbxPoxw,27164
|
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=26cQXXwCcCAVruM-ouM7ng8BQcE-glgmfkGa_EhPDU4,59388
|
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.8.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
|
39
|
+
aient-1.2.8.dist-info/METADATA,sha256=d-gqNwZ00IPMuuqj3sKECwiC1BS1H-M9hUaKi6I74aA,4841
|
40
|
+
aient-1.2.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
41
|
+
aient-1.2.8.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
|
42
|
+
aient-1.2.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|