auto-coder 0.1.239__py3-none-any.whl → 0.1.242__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.

Potentially problematic release.


This version of auto-coder might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.239
3
+ Version: 0.1.242
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -26,7 +26,7 @@ Requires-Dist: tabulate
26
26
  Requires-Dist: jupyter-client
27
27
  Requires-Dist: prompt-toolkit
28
28
  Requires-Dist: tokenizers
29
- Requires-Dist: byzerllm[saas] >=0.1.155
29
+ Requires-Dist: byzerllm[saas] >=0.1.158
30
30
  Requires-Dist: patch
31
31
  Requires-Dist: diff-match-patch
32
32
  Requires-Dist: GitPython
@@ -1,5 +1,5 @@
1
1
  autocoder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- autocoder/auto_coder.py,sha256=u2SzAIpYXwhFfcyZyI-td6M3-JFWC9fCS2wyrytNE8s,61172
2
+ autocoder/auto_coder.py,sha256=jbfgZoO9EguLjFifzl0Ea4QHiRh75WMoZ5LBEfhLHMs,61858
3
3
  autocoder/auto_coder_lang.py,sha256=Rtupq6N3_HT7JRhDKdgCBcwRaiAnyCOR_Gsp4jUomrI,3229
4
4
  autocoder/auto_coder_rag.py,sha256=illKgzP2bv-Tq50ujsofJnOHdI4pzr0ALtfR8NHHWdQ,22351
5
5
  autocoder/auto_coder_rag_client_mcp.py,sha256=WV7j5JUiQge0x4-B7Hp5-pSAFXLbvLpzQMcCovbauIM,6276
@@ -11,7 +11,7 @@ autocoder/chat_auto_coder_lang.py,sha256=rS6hD5ZiNLaQZx36WO4LohRBEN8uZfsgv3QEM7a
11
11
  autocoder/command_args.py,sha256=9aYJ-AmPxP1sQh6ciw04FWHjSn31f2W9afXFwo8wgx4,30441
12
12
  autocoder/lang.py,sha256=U6AjVV8Rs1uLyjFCZ8sT6WWuNUxMBqkXXIOs4S120uk,14511
13
13
  autocoder/models.py,sha256=FlBrF6HhGao_RiCSgYhCmP7vs0KlG4hI_BI6dyZiL9s,5292
14
- autocoder/version.py,sha256=j7YWi2R0m8z1BhnRCtjTv5OpNTuweHgVjU1iwDeVSSY,23
14
+ autocoder/version.py,sha256=FFFI0ll8Bfzd8j7JSYymsgRmF-NwiONXrIeZWd_8lvQ,23
15
15
  autocoder/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  autocoder/agent/auto_demand_organizer.py,sha256=NWSAEsEk94vT3lGjfo25kKLMwYdPcpy9e-i21txPasQ,6942
17
17
  autocoder/agent/auto_filegroup.py,sha256=CW7bqp0FW1GIEMnl-blyAc2UGT7O9Mom0q66ITz1ckM,6635
@@ -28,7 +28,7 @@ autocoder/common/__init__.py,sha256=vpfo3RctksezDoraVSpHtfnxpspVNiYh8OmQhqQvcfE,
28
28
  autocoder/common/anything2images.py,sha256=0ILBbWzY02M-CiWB-vzuomb_J1hVdxRcenAfIrAXq9M,25283
29
29
  autocoder/common/anything2img.py,sha256=4TREa-sOA-iargieUy7MpyCYVUE-9Mmq0wJtwomPqnE,7662
30
30
  autocoder/common/audio.py,sha256=Kn9nWKQddWnUrAz0a_ZUgjcu4VUU_IcZBigT7n3N3qc,7439
31
- autocoder/common/auto_coder_lang.py,sha256=Vaem55aJKVnaAmXrSV8JVrmcDUXdQgkluJ3WEveYYAU,11316
31
+ autocoder/common/auto_coder_lang.py,sha256=Bs_jxhVcmvVnTGD2pNsS7r46i39ZPGT62fErfaC33EE,11850
32
32
  autocoder/common/buildin_tokenizer.py,sha256=L7d5t39ZFvUd6EoMPXUhYK1toD0FHlRH1jtjKRGokWU,1236
33
33
  autocoder/common/chunk_validation.py,sha256=BrR_ZWavW8IANuueEE7hS8NFAwEvm8TX34WnPx_1hs8,3030
34
34
  autocoder/common/cleaner.py,sha256=NU72i8C6o9m0vXExab7nao5bstBUsfJFcj11cXa9l4U,1089
@@ -41,7 +41,7 @@ autocoder/common/code_auto_merge.py,sha256=8dtnz61l0B5gNbQmx26TZ4_jD825dsnnWtAFD
41
41
  autocoder/common/code_auto_merge_diff.py,sha256=yocfe8s3Pz6hTGDUl9wRIewY3NcTize_gEla64lsGT0,15331
42
42
  autocoder/common/code_auto_merge_editblock.py,sha256=B-zDKGEJ7uRFPLIasnX7w2I2DXe5UAj1T-rDSjL4xes,17477
43
43
  autocoder/common/code_auto_merge_strict_diff.py,sha256=9rm0NJ_n6M3LohEX7xl1Jym0xmm8UEYqj_ZTSO3oSlM,9519
44
- autocoder/common/code_modification_ranker.py,sha256=E3TuI2_KuX3PiR-V3atB2wmXkZUzhNFhuWz3ztg2QDc,6198
44
+ autocoder/common/code_modification_ranker.py,sha256=7xHrNO4fXmWcrPXTCjZGZhE2FIn0ZnL7nEpZgP6-mq4,6120
45
45
  autocoder/common/command_completer.py,sha256=SSeb8MDH0JPvfdyW-S2uaHnui4VBDfSQvQPLbv3ORPA,9314
46
46
  autocoder/common/command_generator.py,sha256=v4LmU7sO-P7jEZIXCWHUC6P-vT7AvBi_x_PTwCqBAE8,1323
47
47
  autocoder/common/command_templates.py,sha256=mnB3n8i0yjH1mqzyClEg8Wpr9VbZV44kxky66Zu6OJY,8557
@@ -55,7 +55,7 @@ autocoder/common/mcp_hub.py,sha256=2ZyJv3Aiv4Y97UHut49oYhIFcu7ICR-mptDEBSgT3uE,1
55
55
  autocoder/common/mcp_server.py,sha256=QCFa-15kx7rbNsinwdGFFX2y47pww0fVdI-ldKFSSWI,12267
56
56
  autocoder/common/mcp_tools.py,sha256=KsLvRrB6pvmebqd-lDaSH6IBJR0AIxWRE-dtCEG_w9k,12485
57
57
  autocoder/common/memory_manager.py,sha256=2ZjYG7BPyvbYalZBF6AM_G5e10Qkw_zrqtD4Zd7GSsQ,3663
58
- autocoder/common/printer.py,sha256=heFhcI_Qdc3lfHquL-9ys66N7drGBxRDF6QXbBmh76o,1905
58
+ autocoder/common/printer.py,sha256=h4AK7e_y8wlnlUYjckcv1qr4vBXRPBWXumlQN0izJ0I,1906
59
59
  autocoder/common/recall_validation.py,sha256=Avt9Q9dX3kG6Pf2zsdlOHmsjd-OeSj7U1PFBDp_Cve0,1700
60
60
  autocoder/common/screenshots.py,sha256=_gA-z1HxGjPShBrtgkdideq58MG6rqFB2qMUJKjrycs,3769
61
61
  autocoder/common/search.py,sha256=245iPFgWhMldoUK3CqCP89ltaxZiNPK73evoG6Fp1h8,16518
@@ -78,7 +78,7 @@ autocoder/dispacher/actions/plugins/action_regex_project.py,sha256=ht_HWzZt84IEo
78
78
  autocoder/dispacher/actions/plugins/action_translate.py,sha256=nVAtRSQpdGNmZxg1R_9zXG3AuTv3CHf2v7ODgj8u65c,7727
79
79
  autocoder/index/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  autocoder/index/entry.py,sha256=KJaxqtaKgL27w8-j7OiAqI0anPpmrJSl7PkfeVF2ipE,11713
81
- autocoder/index/for_command.py,sha256=LGnz-OWogT8rd24m4Zcan7doLaijxqorAuiMk7WuRq0,3125
81
+ autocoder/index/for_command.py,sha256=BFvljE4t6VaMBGboZAuhUCzVK0EitCy_n5D_7FEnihw,3204
82
82
  autocoder/index/index.py,sha256=8AcaELR1FS___7VlNyxPnJsDVQ4wjORbqXvcA6TifCE,20337
83
83
  autocoder/index/symbols_utils.py,sha256=CjcjUVajmJZB75Ty3a7kMv1BZphrm-tIBAdOJv6uo-0,2037
84
84
  autocoder/index/types.py,sha256=a2s_KV5FJlq7jqA2ELSo9E1sjuLwDB-JJYMhSpzBAhU,596
@@ -140,9 +140,9 @@ autocoder/utils/types.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  autocoder/utils/auto_coder_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
141
  autocoder/utils/auto_coder_utils/chat_stream_out.py,sha256=6D_SIa5hHSwIHC1poO_ztK7IVugAqNHu-jQySd7EnfQ,4181
142
142
  autocoder/utils/chat_auto_coder_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
- auto_coder-0.1.239.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
144
- auto_coder-0.1.239.dist-info/METADATA,sha256=n-LqaKcmPld-eI1EeuQjDSrJd556ZGhxYLiOONL0w5U,2616
145
- auto_coder-0.1.239.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
146
- auto_coder-0.1.239.dist-info/entry_points.txt,sha256=0nzHtHH4pNcM7xq4EBA2toS28Qelrvcbrr59GqD_0Ak,350
147
- auto_coder-0.1.239.dist-info/top_level.txt,sha256=Jqc0_uJSw2GwoFQAa9iJxYns-2mWla-9ok_Y3Gcznjk,10
148
- auto_coder-0.1.239.dist-info/RECORD,,
143
+ auto_coder-0.1.242.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
144
+ auto_coder-0.1.242.dist-info/METADATA,sha256=FWP2bnOYAaDc-zY3f72Tcfadcnv8vk_v1p-4cQ2yWPU,2616
145
+ auto_coder-0.1.242.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
146
+ auto_coder-0.1.242.dist-info/entry_points.txt,sha256=0nzHtHH4pNcM7xq4EBA2toS28Qelrvcbrr59GqD_0Ak,350
147
+ auto_coder-0.1.242.dist-info/top_level.txt,sha256=Jqc0_uJSw2GwoFQAa9iJxYns-2mWla-9ok_Y3Gcznjk,10
148
+ auto_coder-0.1.242.dist-info/RECORD,,
autocoder/auto_coder.py CHANGED
@@ -14,7 +14,7 @@ from autocoder.utils.queue_communicate import (
14
14
 
15
15
  import yaml
16
16
  import os
17
- import uuid
17
+ import time
18
18
  from byzerllm.utils.client import EventCallbackResult, EventName
19
19
  from prompt_toolkit import prompt
20
20
  from prompt_toolkit.formatted_text import FormattedText
@@ -1310,6 +1310,9 @@ def main(input_args: Optional[List[str]] = None):
1310
1310
  printer = Printer()
1311
1311
  printer.print_in_terminal("memory_save_success")
1312
1312
  return {}
1313
+
1314
+ # 计算耗时
1315
+ start_time = time.time()
1313
1316
 
1314
1317
  if "rag" in args.action:
1315
1318
  args.enable_rag_search = True
@@ -1335,12 +1338,23 @@ def main(input_args: Optional[List[str]] = None):
1335
1338
  conversations=loaded_conversations,
1336
1339
  llm_config={}
1337
1340
  )
1341
+
1342
+
1338
1343
 
1339
1344
  assistant_response, last_meta = stream_out(
1340
1345
  v,
1341
1346
  request_id=args.request_id,
1342
1347
  console=console
1343
1348
  )
1349
+
1350
+ # 打印耗时和token统计
1351
+ if last_meta:
1352
+ elapsed_time = time.time() - start_time
1353
+ printer = Printer()
1354
+ printer.print_in_terminal("stream_out_stats",
1355
+ elapsed_time=elapsed_time,
1356
+ input_tokens=last_meta.input_tokens_count,
1357
+ output_tokens=last_meta.generated_tokens_count)
1344
1358
 
1345
1359
  chat_history["ask_conversation"].append(
1346
1360
  {"role": "assistant", "content": assistant_response}
@@ -1361,7 +1375,8 @@ def main(input_args: Optional[List[str]] = None):
1361
1375
  save_to_memory_file(ask_conversation=chat_history["ask_conversation"],
1362
1376
  query=args.query,
1363
1377
  response=assistant_response)
1364
- print("Saved to your memory")
1378
+ printer = Printer()
1379
+ printer.print_in_terminal("memory_save_success")
1365
1380
  return
1366
1381
 
1367
1382
  else:
@@ -60,7 +60,10 @@ MESSAGES = {
60
60
  "ranking_all_failed": "All ranking requests failed",
61
61
  "ranking_complete": "Ranking completed in {{ elapsed }}s, total voters: {{ total_tasks }}, best candidate index: {{ best_candidate }}, scores: {{ scores }}, input_tokens: {{ input_tokens }}, output_tokens: {{ output_tokens }}",
62
62
  "ranking_process_failed": "Ranking process failed: {{ error }}",
63
- "ranking_failed": "Ranking failed in {{ elapsed }}s, using original order"
63
+ "ranking_failed": "Ranking failed in {{ elapsed }}s, using original order",
64
+ "begin_index_source_code": "🚀 Begin to index source code in {{ source_dir }}",
65
+ "stream_out_stats": "Elapsed time {{ elapsed_time }} seconds, input tokens: {{ input_tokens }}, output tokens: {{ output_tokens }}",
66
+ "upsert_file": "✅ Updated file: {{ file_path }}",
64
67
  },
65
68
  "zh": {
66
69
  "memory_save_success": "✅ 已保存到您的记忆中",
@@ -108,6 +111,7 @@ MESSAGES = {
108
111
  "normal_filter_start": "开始查找上下文(normal_filter)...",
109
112
  "pylint_check_failed": "⚠️ Pylint 检查失败: {{ error_message }}",
110
113
  "pylint_error": "❌ 运行 Pylint 时出错: {{ error_message }}",
114
+ "begin_index_source_code": "🚀 开始为 {{ source_dir }} 中的源代码建立索引",
111
115
  "unmerged_blocks_warning": "⚠️ 发现 {{ num_blocks }} 个未合并的代码块,更改将不会被应用。请手动检查后重试。",
112
116
  "pylint_file_check_failed": "⚠️ {{ file_path }} 的 Pylint 检查失败。更改未应用。错误: {{ error_message }}",
113
117
  "merge_success": "✅ 成功合并了 {{ num_files }} 个文件中的更改 {{ num_changes }}/{{ total_blocks }} 个代码块。",
@@ -128,8 +132,9 @@ MESSAGES = {
128
132
  "ranking_all_failed": "所有排序请求都失败",
129
133
  "ranking_complete": "排序完成,耗时 {{ elapsed }} 秒,总投票数: {{ total_tasks }},最佳候选索引: {{ best_candidate }},得分: {{ scores }},输入token数: {{ input_tokens }},输出token数: {{ output_tokens }}",
130
134
  "ranking_process_failed": "排序过程失败: {{ error }}",
131
- "ranking_failed": "排序失败,耗时 {{ elapsed }} 秒,使用原始顺序"
132
- }
135
+ "ranking_failed": "排序失败,耗时 {{ elapsed }} 秒,使用原始顺序",
136
+ "stream_out_stats": "耗时 {{ elapsed_time }} 秒,输入token数: {{ input_tokens }}, 输出token数: {{ output_tokens }}"
137
+ },
133
138
  }
134
139
 
135
140
 
@@ -99,9 +99,7 @@ class CodeModificationRanker:
99
99
  results.append(v.rank_result)
100
100
  except Exception as e:
101
101
  self.printer.print_in_terminal(
102
- "ranking_failed_request", style="yellow", error=str(e))
103
- if self.args.debug:
104
- print(traceback.format_exc())
102
+ "ranking_failed_request", style="yellow", error=str(e))
105
103
  continue
106
104
 
107
105
  if not results:
@@ -5,6 +5,7 @@ from typing import Optional,Dict,Any
5
5
  from byzerllm.utils import format_str_jinja2
6
6
  from autocoder.common.auto_coder_lang import get_message
7
7
  from autocoder.chat_auto_coder_lang import get_message as get_chat_message
8
+
8
9
  class Printer:
9
10
  def __init__(self,console:Optional[Console]=None):
10
11
  if console is None:
@@ -5,7 +5,7 @@ from autocoder.tsproject import TSProject
5
5
  from autocoder.pyproject import PyProject
6
6
  import tabulate
7
7
  import textwrap
8
- from loguru import logger
8
+ from autocoder.common.printer import Printer
9
9
  import os
10
10
  from autocoder.utils.request_queue import (
11
11
  request_queue,
@@ -35,7 +35,8 @@ def wrap_text_in_table(data, max_width=60):
35
35
  def index_command(args, llm):
36
36
  source_dir = os.path.abspath(args.source_dir)
37
37
  args.source_dir = source_dir
38
- logger.info(f"Beging to index source code in {source_dir}")
38
+ printer = Printer()
39
+ printer.print_in_terminal("begin_index_source_code", style="bold green", source_dir=source_dir)
39
40
  if args.project_type == "ts":
40
41
  pp = TSProject(args=args, llm=llm)
41
42
  elif args.project_type == "py":
autocoder/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.1.239"
1
+ __version__ = "0.1.242"