aient 1.1.5__py3-none-any.whl → 1.1.6__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/plugins/excute_command.py +49 -3
- {aient-1.1.5.dist-info → aient-1.1.6.dist-info}/METADATA +1 -1
- {aient-1.1.5.dist-info → aient-1.1.6.dist-info}/RECORD +6 -6
- {aient-1.1.5.dist-info → aient-1.1.6.dist-info}/WHEEL +0 -0
- {aient-1.1.5.dist-info → aient-1.1.6.dist-info}/licenses/LICENSE +0 -0
- {aient-1.1.5.dist-info → aient-1.1.6.dist-info}/top_level.txt +0 -0
aient/plugins/excute_command.py
CHANGED
@@ -12,6 +12,31 @@ IS_UNIX = hasattr(os, 'fork')
|
|
12
12
|
if IS_UNIX:
|
13
13
|
import pty
|
14
14
|
|
15
|
+
import difflib
|
16
|
+
|
17
|
+
last_line = ""
|
18
|
+
def calculate_similarity(string1: str, string2: str) -> float:
|
19
|
+
"""Calculates the similarity ratio between two strings.
|
20
|
+
|
21
|
+
Args:
|
22
|
+
string1: The first string.
|
23
|
+
string2: The second string.
|
24
|
+
|
25
|
+
Returns:
|
26
|
+
A float between 0 and 1, where 1 means the strings are identical
|
27
|
+
and 0 means they are completely different.
|
28
|
+
"""
|
29
|
+
return difflib.SequenceMatcher(None, string1, string2).ratio()
|
30
|
+
|
31
|
+
def compare_line(line: str) -> bool:
|
32
|
+
global last_line
|
33
|
+
if last_line == "":
|
34
|
+
last_line = line
|
35
|
+
return False
|
36
|
+
similarity = calculate_similarity(line, last_line)
|
37
|
+
last_line = line
|
38
|
+
return similarity > 0.9
|
39
|
+
|
15
40
|
def unescape_html(input_string: str) -> str:
|
16
41
|
"""
|
17
42
|
将字符串中的 HTML 实体(例如 &)转换回其原始字符(例如 &)。
|
@@ -101,6 +126,12 @@ def excute_command(command):
|
|
101
126
|
data_str = repr(data_bytes) + " (decode error)\n"
|
102
127
|
|
103
128
|
print(data_str, end='', flush=True)
|
129
|
+
if "pip install" in command and '━━' in data_str:
|
130
|
+
continue
|
131
|
+
if "git clone" in command and ('Counting objects' in data_str or 'Resolving deltas' in data_str or 'Receiving objects' in data_str or 'Compressing objects' in data_str):
|
132
|
+
continue
|
133
|
+
if compare_line(data_str):
|
134
|
+
continue
|
104
135
|
output_lines.append(data_str)
|
105
136
|
# 检查进程是否已结束,避免在进程已退出后 select 仍然阻塞
|
106
137
|
if process.poll() is not None and not r:
|
@@ -129,6 +160,8 @@ def excute_command(command):
|
|
129
160
|
continue
|
130
161
|
if "git clone" in command and ('Counting objects' in line or 'Resolving deltas' in line or 'Receiving objects' in line or 'Compressing objects' in line):
|
131
162
|
continue
|
163
|
+
if compare_line(line):
|
164
|
+
continue
|
132
165
|
output_lines.append(line)
|
133
166
|
process.stdout.close()
|
134
167
|
# print(f"\n--- 命令实时输出结束 (PIPE) ---")
|
@@ -141,6 +174,7 @@ def excute_command(command):
|
|
141
174
|
stderr_output = process.stderr.read()
|
142
175
|
process.stderr.close()
|
143
176
|
|
177
|
+
output_lines.append(last_line)
|
144
178
|
final_output_log = "".join(output_lines)
|
145
179
|
|
146
180
|
if process.returncode == 0:
|
@@ -171,6 +205,18 @@ if __name__ == "__main__":
|
|
171
205
|
# print('\\n-------TQDM 任务完成.')
|
172
206
|
# """
|
173
207
|
|
208
|
+
tqdm_script = """
|
209
|
+
import time
|
210
|
+
print("Hello, World!1")
|
211
|
+
print("Hello, World!2")
|
212
|
+
for i in range(10):
|
213
|
+
print(f"TQDM 进度条测试: {i}")
|
214
|
+
time.sleep(1)
|
215
|
+
"""
|
216
|
+
processed_tqdm_script = tqdm_script.replace('"', '\\"')
|
217
|
+
tqdm_command = f"python -c \"{processed_tqdm_script}\""
|
218
|
+
# print(f"执行: {tqdm_command}")
|
219
|
+
print(excute_command(tqdm_command))
|
174
220
|
# tqdm_script = """
|
175
221
|
# import time
|
176
222
|
# from tqdm import tqdm
|
@@ -184,9 +230,9 @@ if __name__ == "__main__":
|
|
184
230
|
# print(excute_command(tqdm_command))
|
185
231
|
|
186
232
|
|
187
|
-
tqdm_command = f"pip install requests"
|
188
|
-
# print(f"执行: {tqdm_command}")
|
189
|
-
print(excute_command(tqdm_command))
|
233
|
+
# tqdm_command = f"pip install requests"
|
234
|
+
# # print(f"执行: {tqdm_command}")
|
235
|
+
# print(excute_command(tqdm_command))
|
190
236
|
|
191
237
|
|
192
238
|
# long_running_command_unix = "echo '开始长时间任务...' && for i in 1 2 3; do echo \"正在处理步骤 $i/3...\"; sleep 1; done && echo '长时间任务完成!'"
|
@@ -23,7 +23,7 @@ aient/models/vertex.py,sha256=qVD5l1Q538xXUPulxG4nmDjXE1VoV4yuAkTCpIeJVw0,16795
|
|
23
23
|
aient/plugins/__init__.py,sha256=p3KO6Aa3Lupos4i2SjzLQw1hzQTigOAfEHngsldrsyk,986
|
24
24
|
aient/plugins/arXiv.py,sha256=yHjb6PS3GUWazpOYRMKMzghKJlxnZ5TX8z9F6UtUVow,1461
|
25
25
|
aient/plugins/config.py,sha256=Vp6CG9ocdC_FAlCMEGtKj45xamir76DFxdJVvURNtog,6539
|
26
|
-
aient/plugins/excute_command.py,sha256=
|
26
|
+
aient/plugins/excute_command.py,sha256=w8KV_udnh9pmg9fK9ttMqvoWMkGVFpXhYem5Sxb7Kfw,9472
|
27
27
|
aient/plugins/get_time.py,sha256=Ih5XIW5SDAIhrZ9W4Qe5Hs1k4ieKPUc_LAd6ySNyqZk,654
|
28
28
|
aient/plugins/image.py,sha256=ZElCIaZznE06TN9xW3DrSukS7U3A5_cjk1Jge4NzPxw,2072
|
29
29
|
aient/plugins/list_directory.py,sha256=5ubm-mfrj-tanGSDp4M_Tmb6vQb3dx2-XVfQ2yL2G8A,1394
|
@@ -37,8 +37,8 @@ aient/prompt/agent.py,sha256=6f5ZB66Rb8y0iQScHMRhvXZ1qMM3YsKpCBPCTAAw2rg,24917
|
|
37
37
|
aient/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
38
|
aient/utils/prompt.py,sha256=UcSzKkFE4-h_1b6NofI6xgk3GoleqALRKY8VBaXLjmI,11311
|
39
39
|
aient/utils/scripts.py,sha256=NXmTxcZqHoRv3S13isLsv7kvqktXnA5ej7uMsxCJUe0,26656
|
40
|
-
aient-1.1.
|
41
|
-
aient-1.1.
|
42
|
-
aient-1.1.
|
43
|
-
aient-1.1.
|
44
|
-
aient-1.1.
|
40
|
+
aient-1.1.6.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
|
41
|
+
aient-1.1.6.dist-info/METADATA,sha256=aMpvAuMoIMSzN7RcdmEMhTKbUE1iLa1HQYKgcbRmU34,4967
|
42
|
+
aient-1.1.6.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
43
|
+
aient-1.1.6.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
|
44
|
+
aient-1.1.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|