aient 1.1.4__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.
@@ -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:
@@ -127,6 +158,10 @@ def excute_command(command):
127
158
  print(line, end='', flush=True)
128
159
  if "pip install" in command and '━━' in line:
129
160
  continue
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):
162
+ continue
163
+ if compare_line(line):
164
+ continue
130
165
  output_lines.append(line)
131
166
  process.stdout.close()
132
167
  # print(f"\n--- 命令实时输出结束 (PIPE) ---")
@@ -139,6 +174,7 @@ def excute_command(command):
139
174
  stderr_output = process.stderr.read()
140
175
  process.stderr.close()
141
176
 
177
+ output_lines.append(last_line)
142
178
  final_output_log = "".join(output_lines)
143
179
 
144
180
  if process.returncode == 0:
@@ -169,6 +205,18 @@ if __name__ == "__main__":
169
205
  # print('\\n-------TQDM 任务完成.')
170
206
  # """
171
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))
172
220
  # tqdm_script = """
173
221
  # import time
174
222
  # from tqdm import tqdm
@@ -182,9 +230,9 @@ if __name__ == "__main__":
182
230
  # print(excute_command(tqdm_command))
183
231
 
184
232
 
185
- tqdm_command = f"pip install requests"
186
- # print(f"执行: {tqdm_command}")
187
- print(excute_command(tqdm_command))
233
+ # tqdm_command = f"pip install requests"
234
+ # # print(f"执行: {tqdm_command}")
235
+ # print(excute_command(tqdm_command))
188
236
 
189
237
 
190
238
  # long_running_command_unix = "echo '开始长时间任务...' && for i in 1 2 3; do echo \"正在处理步骤 $i/3...\"; sleep 1; done && echo '长时间任务完成!'"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -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=dwm9DEbXDYbSCbAYOagn0qoGGv8Ak2qAI3mbOVAa9KY,7664
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.4.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
41
- aient-1.1.4.dist-info/METADATA,sha256=L1TDoq_HxvzaIMWdSVDxdOzj6ex8W-R3CNc1KoSXWO8,4967
42
- aient-1.1.4.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
43
- aient-1.1.4.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
44
- aient-1.1.4.dist-info/RECORD,,
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