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.
@@ -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 '长时间任务完成!'"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.1.5
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=aUhszsXK-x6IOtQEu-kpRb8V10eyy2s6PUXqE1BZ028,7871
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.5.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
41
- aient-1.1.5.dist-info/METADATA,sha256=vhRceQwCI5GvuEi900uKSzD6U9RRemCwdXvdVLEq6i4,4967
42
- aient-1.1.5.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
43
- aient-1.1.5.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
44
- aient-1.1.5.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