aient 1.1.5__py3-none-any.whl → 1.1.7__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 +73 -4
- {aient-1.1.5.dist-info → aient-1.1.7.dist-info}/METADATA +1 -1
- {aient-1.1.5.dist-info → aient-1.1.7.dist-info}/RECORD +6 -6
- {aient-1.1.5.dist-info → aient-1.1.7.dist-info}/WHEEL +0 -0
- {aient-1.1.5.dist-info → aient-1.1.7.dist-info}/licenses/LICENSE +0 -0
- {aient-1.1.5.dist-info → aient-1.1.7.dist-info}/top_level.txt +0 -0
aient/plugins/excute_command.py
CHANGED
@@ -12,6 +12,32 @@ 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
|
+
# print(f"similarity: {similarity}")
|
39
|
+
return similarity > 0.89
|
40
|
+
|
15
41
|
def unescape_html(input_string: str) -> str:
|
16
42
|
"""
|
17
43
|
将字符串中的 HTML 实体(例如 &)转换回其原始字符(例如 &)。
|
@@ -101,6 +127,10 @@ def excute_command(command):
|
|
101
127
|
data_str = repr(data_bytes) + " (decode error)\n"
|
102
128
|
|
103
129
|
print(data_str, end='', flush=True)
|
130
|
+
if "pip install" in command and '━━' in data_str:
|
131
|
+
continue
|
132
|
+
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):
|
133
|
+
continue
|
104
134
|
output_lines.append(data_str)
|
105
135
|
# 检查进程是否已结束,避免在进程已退出后 select 仍然阻塞
|
106
136
|
if process.poll() is not None and not r:
|
@@ -141,7 +171,21 @@ def excute_command(command):
|
|
141
171
|
stderr_output = process.stderr.read()
|
142
172
|
process.stderr.close()
|
143
173
|
|
144
|
-
|
174
|
+
new_output_lines = []
|
175
|
+
output_lines = "".join(output_lines).strip().replace("\\u001b[A", "").replace("\\r", "\r").replace("\\\\", "").replace("\\n", "\n").replace("\r", "+++").replace("\n", "+++")
|
176
|
+
for line in output_lines.split("+++"):
|
177
|
+
if line.strip() == "":
|
178
|
+
continue
|
179
|
+
# aaa = last_line.strip()
|
180
|
+
is_same = compare_line(repr(line.strip()))
|
181
|
+
if not is_same:
|
182
|
+
# print(f"{repr(aaa)}", flush=True)
|
183
|
+
# print(f"{repr(line.strip())}", flush=True)
|
184
|
+
# print(f"is_same: {is_same}", flush=True)
|
185
|
+
# print(f"\n\n\n", flush=True)
|
186
|
+
new_output_lines.append(line)
|
187
|
+
final_output_log = "\n".join(new_output_lines)
|
188
|
+
# print(f"output_lines: {len(new_output_lines)}")
|
145
189
|
|
146
190
|
if process.returncode == 0:
|
147
191
|
return f"执行命令成功:\n{final_output_log}"
|
@@ -171,6 +215,31 @@ if __name__ == "__main__":
|
|
171
215
|
# print('\\n-------TQDM 任务完成.')
|
172
216
|
# """
|
173
217
|
|
218
|
+
# tqdm_script = """
|
219
|
+
# import time
|
220
|
+
# print("Hello, World!1")
|
221
|
+
# print("Hello, World!2")
|
222
|
+
# for i in range(10):
|
223
|
+
# print(f"TQDM 进度条测试: {i}")
|
224
|
+
# time.sleep(1)
|
225
|
+
# """
|
226
|
+
# processed_tqdm_script = tqdm_script.replace('"', '\\"')
|
227
|
+
# tqdm_command = f"python -c \"{processed_tqdm_script}\""
|
228
|
+
# # print(f"执行: {tqdm_command}")
|
229
|
+
# print(excute_command(tqdm_command))
|
230
|
+
|
231
|
+
tqdm_script = """
|
232
|
+
import time
|
233
|
+
with open("/Users/yanyuming/Downloads/GitHub/beswarm/1.txt", "r") as f:
|
234
|
+
content = f.read()
|
235
|
+
for i in content.split("\\n"):
|
236
|
+
print(i)
|
237
|
+
"""
|
238
|
+
processed_tqdm_script = tqdm_script.replace('"', '\\"')
|
239
|
+
tqdm_command = f"python -c \"{processed_tqdm_script}\""
|
240
|
+
# print(f"执行: {tqdm_command}")
|
241
|
+
print(excute_command(tqdm_command))
|
242
|
+
|
174
243
|
# tqdm_script = """
|
175
244
|
# import time
|
176
245
|
# from tqdm import tqdm
|
@@ -184,9 +253,9 @@ if __name__ == "__main__":
|
|
184
253
|
# print(excute_command(tqdm_command))
|
185
254
|
|
186
255
|
|
187
|
-
tqdm_command = f"pip install requests"
|
188
|
-
# print(f"执行: {tqdm_command}")
|
189
|
-
print(excute_command(tqdm_command))
|
256
|
+
# tqdm_command = f"pip install requests"
|
257
|
+
# # print(f"执行: {tqdm_command}")
|
258
|
+
# print(excute_command(tqdm_command))
|
190
259
|
|
191
260
|
|
192
261
|
# 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=A3WmfZboEikU1EHvtMWhBv-xHxCyMxbDddQ982I_8wE,10482
|
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.7.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
|
41
|
+
aient-1.1.7.dist-info/METADATA,sha256=E5vt-IeBPRrujR_c4oJPrm58dSm-hOX252wPmZ7QIYw,4967
|
42
|
+
aient-1.1.7.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
43
|
+
aient-1.1.7.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
|
44
|
+
aient-1.1.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|