autocoder-nano 0.1.28__py3-none-any.whl → 0.1.29__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.
- autocoder_nano/auto_coder_nano.py +210 -308
- autocoder_nano/edit/actions.py +19 -13
- autocoder_nano/edit/code/merge_editblock.py +35 -43
- autocoder_nano/git_utils.py +18 -14
- autocoder_nano/index/entry.py +30 -32
- autocoder_nano/index/index_manager.py +23 -15
- autocoder_nano/llm_client.py +20 -4
- autocoder_nano/utils/__init__.py +0 -0
- autocoder_nano/utils/printer_utils.py +455 -0
- autocoder_nano/version.py +1 -1
- {autocoder_nano-0.1.28.dist-info → autocoder_nano-0.1.29.dist-info}/METADATA +2 -3
- {autocoder_nano-0.1.28.dist-info → autocoder_nano-0.1.29.dist-info}/RECORD +16 -14
- {autocoder_nano-0.1.28.dist-info → autocoder_nano-0.1.29.dist-info}/LICENSE +0 -0
- {autocoder_nano-0.1.28.dist-info → autocoder_nano-0.1.29.dist-info}/WHEEL +0 -0
- {autocoder_nano-0.1.28.dist-info → autocoder_nano-0.1.29.dist-info}/entry_points.txt +0 -0
- {autocoder_nano-0.1.28.dist-info → autocoder_nano-0.1.29.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,455 @@
|
|
1
|
+
import time
|
2
|
+
from typing import Any, Optional, List, Union, Dict, Iterable, Generator
|
3
|
+
from contextlib import contextmanager
|
4
|
+
|
5
|
+
from rich import box
|
6
|
+
from rich.console import Console, Group
|
7
|
+
from rich.live import Live
|
8
|
+
from rich.markdown import Markdown
|
9
|
+
from rich.panel import Panel
|
10
|
+
from rich.syntax import Syntax
|
11
|
+
from rich.table import Table
|
12
|
+
from rich.text import Text
|
13
|
+
from rich.box import Box, ROUNDED
|
14
|
+
from rich.columns import Columns
|
15
|
+
from rich.emoji import Emoji
|
16
|
+
from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn
|
17
|
+
|
18
|
+
|
19
|
+
class Printer:
|
20
|
+
def __init__(self, console: Optional[Console] = None):
|
21
|
+
"""
|
22
|
+
增强版富文本打印机
|
23
|
+
:param console: 可传入自定义的Rich Console实例
|
24
|
+
"""
|
25
|
+
self.console = console or Console()
|
26
|
+
self._live: Optional[Live] = None
|
27
|
+
self._progress: Optional[Progress] = None
|
28
|
+
|
29
|
+
def print_table(
|
30
|
+
self, data: Iterable[Iterable[Any]], title: Optional[str] = None, headers: Optional[List[str]] = None,
|
31
|
+
show_lines: bool = False, expand: bool = False, caption: Optional[str] = None
|
32
|
+
) -> None:
|
33
|
+
"""
|
34
|
+
打印表格
|
35
|
+
:param data: 二维可迭代数据
|
36
|
+
:param title: 表格标题
|
37
|
+
:param headers: 列标题列表
|
38
|
+
:param show_lines: 是否显示行分隔线
|
39
|
+
:param expand: 是否扩展表格宽度
|
40
|
+
:param caption: 底部说明文字
|
41
|
+
"""
|
42
|
+
table = Table(
|
43
|
+
title=title, show_header=bool(headers), show_lines=show_lines, expand=expand,
|
44
|
+
caption=caption, padding=(0, 1)
|
45
|
+
)
|
46
|
+
|
47
|
+
if headers:
|
48
|
+
for header in headers:
|
49
|
+
table.add_column(header, style="cyan", header_style="bold magenta")
|
50
|
+
|
51
|
+
for row in data:
|
52
|
+
styled_row = [str(item) if not isinstance(item, Text) else item for item in row]
|
53
|
+
table.add_row(*styled_row)
|
54
|
+
|
55
|
+
self.console.print(table)
|
56
|
+
|
57
|
+
def print_table_compact(
|
58
|
+
self,
|
59
|
+
data: Iterable[Iterable[Any]],
|
60
|
+
title: Optional[str] = None,
|
61
|
+
headers: Optional[List[str]] = None,
|
62
|
+
show_lines: bool = False,
|
63
|
+
expand: bool = False,
|
64
|
+
caption: Optional[str] = None,
|
65
|
+
compact: bool = True,
|
66
|
+
center: bool = True # 新增居中参数
|
67
|
+
) -> None:
|
68
|
+
""" 打印表格(紧凑版本) """
|
69
|
+
table = Table(
|
70
|
+
title=title,
|
71
|
+
show_header=bool(headers),
|
72
|
+
show_lines=show_lines,
|
73
|
+
expand=expand,
|
74
|
+
caption=caption,
|
75
|
+
padding=(0, 0) if compact else (0, 1), # 紧凑模式减少内边距
|
76
|
+
box=box.SIMPLE if compact else box.ASCII # 紧凑模式使用简单边框
|
77
|
+
)
|
78
|
+
|
79
|
+
# 列样式调整
|
80
|
+
for header in (headers or []):
|
81
|
+
table.add_column(
|
82
|
+
header,
|
83
|
+
style="cyan",
|
84
|
+
header_style="bold magenta",
|
85
|
+
min_width=20 if compact else None,
|
86
|
+
justify="center" if center else "left" # 列内容居中
|
87
|
+
)
|
88
|
+
|
89
|
+
# 行内容处理 - 确保所有元素可渲染
|
90
|
+
for row in data:
|
91
|
+
styled_row = [str(item) if not isinstance(item, Text) else item for item in row]
|
92
|
+
table.add_row(*styled_row)
|
93
|
+
|
94
|
+
# 自动添加面板
|
95
|
+
self.print_panel(
|
96
|
+
table,
|
97
|
+
title=None,
|
98
|
+
border_style="cyan" if compact else "blue",
|
99
|
+
width=None if compact else 100,
|
100
|
+
center=center # 传递居中参数
|
101
|
+
)
|
102
|
+
|
103
|
+
def print_markdown(self, text: str, panel: bool = False) -> None:
|
104
|
+
"""打印Markdown文本"""
|
105
|
+
md = Markdown(text)
|
106
|
+
self._print_with_panel(md, panel)
|
107
|
+
|
108
|
+
def print_code(
|
109
|
+
self, code: str, lexer: str = "python", theme: str = "monokai",
|
110
|
+
line_numbers: bool = True, panel: bool = False
|
111
|
+
) -> None:
|
112
|
+
"""高亮打印代码块"""
|
113
|
+
syntax = Syntax(
|
114
|
+
code,
|
115
|
+
lexer,
|
116
|
+
theme=theme,
|
117
|
+
line_numbers=line_numbers,
|
118
|
+
padding=(0, 2)
|
119
|
+
)
|
120
|
+
# self.console.print(syntax)
|
121
|
+
self._print_with_panel(syntax, panel)
|
122
|
+
|
123
|
+
def print_panel(
|
124
|
+
self, content: Any, title: Optional[str] = None, border_style: str = "cyan",
|
125
|
+
width: Optional[int] = None, padding: tuple = (0, 1), center: bool = False # 新增居中参数
|
126
|
+
) -> None:
|
127
|
+
"""带边框的面板输出(支持居中版)"""
|
128
|
+
# 创建居中包装器
|
129
|
+
renderable = content
|
130
|
+
if center:
|
131
|
+
renderable = Columns([content], align="center", width=width)
|
132
|
+
|
133
|
+
panel = Panel(
|
134
|
+
renderable,
|
135
|
+
title=title,
|
136
|
+
border_style=border_style,
|
137
|
+
width=width,
|
138
|
+
padding=padding,
|
139
|
+
box=box.SQUARE
|
140
|
+
)
|
141
|
+
self.console.print(panel)
|
142
|
+
|
143
|
+
def print_text(
|
144
|
+
self, *texts: Union[str, Text], style: Optional[str] = None, justify: Optional[str] = "left"
|
145
|
+
) -> None:
|
146
|
+
"""灵活文本打印,支持样式和混合内容"""
|
147
|
+
rich_text = Group(*[
|
148
|
+
Text(str(t), style=style) if isinstance(t, str) else t
|
149
|
+
for t in texts
|
150
|
+
])
|
151
|
+
self.console.print(rich_text, justify=justify)
|
152
|
+
|
153
|
+
@contextmanager
|
154
|
+
def live_context(self, refresh_per_second: float = 4.0) -> Generator[None, Any, None]:
|
155
|
+
"""动态内容上下文管理器"""
|
156
|
+
with Live(console=self.console, refresh_per_second=refresh_per_second) as live:
|
157
|
+
self._live = live
|
158
|
+
try:
|
159
|
+
yield
|
160
|
+
finally:
|
161
|
+
self._live = None
|
162
|
+
|
163
|
+
def update_live(self, content: Any) -> None:
|
164
|
+
"""更新动态内容"""
|
165
|
+
if self._live:
|
166
|
+
self._live.update(content)
|
167
|
+
|
168
|
+
@contextmanager
|
169
|
+
def progress_context(self) -> Generator[Progress, Any, None]:
|
170
|
+
"""进度条上下文管理器"""
|
171
|
+
self._progress = Progress(
|
172
|
+
SpinnerColumn(),
|
173
|
+
TextColumn("[progress.description]{task.description}"),
|
174
|
+
BarColumn(),
|
175
|
+
TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
|
176
|
+
console=self.console
|
177
|
+
)
|
178
|
+
with self._progress:
|
179
|
+
yield self._progress
|
180
|
+
self._progress = None
|
181
|
+
|
182
|
+
@contextmanager
|
183
|
+
def progress_context_with_panel(
|
184
|
+
self, title: Optional[str] = None, border_style: str = "cyan"
|
185
|
+
) -> Generator[Progress, Any, None]:
|
186
|
+
self._progress = Progress(
|
187
|
+
SpinnerColumn(style="cyan"),
|
188
|
+
TextColumn("[progress.description]{task.description}", justify="right"),
|
189
|
+
BarColumn(bar_width=None, style="blue1", complete_style="bold blue", finished_style="bold green"),
|
190
|
+
TextColumn("[progress.percentage]{task.percentage:>3.0f}%", style="bold"),
|
191
|
+
TextColumn("•"),
|
192
|
+
TextColumn("[cyan]{task.completed}/{task.total}", justify="left"),
|
193
|
+
expand=True,
|
194
|
+
transient=True
|
195
|
+
)
|
196
|
+
|
197
|
+
# 创建包含进度条的面板
|
198
|
+
progress_panel = Panel(
|
199
|
+
self._progress,
|
200
|
+
title=title or "任务进度",
|
201
|
+
border_style=border_style,
|
202
|
+
padding=(1, 2),
|
203
|
+
box=box.ROUNDED
|
204
|
+
)
|
205
|
+
|
206
|
+
# 使用单个Live实例包装整个面板
|
207
|
+
with Live(progress_panel, console=self.console, refresh_per_second=10) as live:
|
208
|
+
# 手动将Progress的live替换为我们创建的live
|
209
|
+
self._progress.live = live
|
210
|
+
with self._progress:
|
211
|
+
yield self._progress
|
212
|
+
self._progress = None
|
213
|
+
|
214
|
+
def print_card(
|
215
|
+
self, content: Union[str, Text, Markdown, Syntax], title: Optional[str] = None,
|
216
|
+
border_style: str = "cyan", width: Optional[int] = None, icon: Optional[str] = None, box: Box = ROUNDED
|
217
|
+
) -> None:
|
218
|
+
"""
|
219
|
+
基础卡片输出
|
220
|
+
:param content: 内容(支持多种格式)
|
221
|
+
:param title: 卡片标题
|
222
|
+
:param border_style: 边框样式
|
223
|
+
:param width: 卡片宽度
|
224
|
+
:param icon: 标题前图标(支持Emoji)
|
225
|
+
:param box: 边框样式(来自rich.box)
|
226
|
+
"""
|
227
|
+
if icon:
|
228
|
+
title = f"{Emoji(icon)} {title}" if title else Emoji(icon)
|
229
|
+
|
230
|
+
panel = Panel(
|
231
|
+
content,
|
232
|
+
title=title,
|
233
|
+
box=box,
|
234
|
+
border_style=border_style,
|
235
|
+
width=width,
|
236
|
+
padding=(0, 1)
|
237
|
+
)
|
238
|
+
self.console.print(panel)
|
239
|
+
|
240
|
+
def multi_col_cards(
|
241
|
+
self, cards: List[Dict[str, Any]], equal: bool = True
|
242
|
+
) -> None:
|
243
|
+
"""
|
244
|
+
多列卡片布局
|
245
|
+
:param cards: 卡片参数列表
|
246
|
+
:param equal: 是否等宽
|
247
|
+
"""
|
248
|
+
rendered_cards = []
|
249
|
+
for card in cards:
|
250
|
+
content = card.get("content", "")
|
251
|
+
if isinstance(content, str):
|
252
|
+
# 自动识别Markdown
|
253
|
+
if content.strip().startswith(("#", "-", "*")):
|
254
|
+
content = Markdown(content)
|
255
|
+
|
256
|
+
rendered = Panel(
|
257
|
+
content,
|
258
|
+
title=card.get("title"),
|
259
|
+
box=card.get("box", ROUNDED),
|
260
|
+
border_style=card.get("border_style", "cyan"),
|
261
|
+
width=card.get("width")
|
262
|
+
)
|
263
|
+
rendered_cards.append(rendered)
|
264
|
+
|
265
|
+
self.console.print(Columns(rendered_cards, equal=equal))
|
266
|
+
|
267
|
+
def status_card(
|
268
|
+
self, message: str, status: str = "info", title: Optional[str] = None
|
269
|
+
) -> None:
|
270
|
+
"""
|
271
|
+
状态卡片(预设样式)
|
272
|
+
:param status: 状态类型(info/success/warning/error)
|
273
|
+
:param message: 主要内容
|
274
|
+
:param title: 可选标题
|
275
|
+
"""
|
276
|
+
config = {
|
277
|
+
"info": {"icon": "ℹ️", "color": "cyan"},
|
278
|
+
"success": {"icon": "✅", "color": "green"},
|
279
|
+
"warning": {"icon": "⚠️", "color": "yellow"},
|
280
|
+
"error": {"icon": "❌", "color": "red"}
|
281
|
+
}.get(status.lower(), {})
|
282
|
+
|
283
|
+
title_text = Text()
|
284
|
+
if config.get("icon"):
|
285
|
+
title_text.append(f"{config['icon']} ")
|
286
|
+
if title:
|
287
|
+
title_text.append(title, style=f"bold {config['color']}")
|
288
|
+
|
289
|
+
self.print_card(
|
290
|
+
content=Markdown(message),
|
291
|
+
title=title_text,
|
292
|
+
border_style=config.get("color", "cyan")
|
293
|
+
)
|
294
|
+
|
295
|
+
def print_key_value(
|
296
|
+
self, items: Dict[str, Any], key_style: str = "bold cyan",
|
297
|
+
value_style: str = "green", separator: str = ": ", panel: bool = True
|
298
|
+
) -> None:
|
299
|
+
"""
|
300
|
+
键值对格式化输出
|
301
|
+
:param items: 字典数据
|
302
|
+
:param key_style: 键的样式
|
303
|
+
:param value_style: 值的样式
|
304
|
+
:param separator: 键值分隔符
|
305
|
+
:param panel: 是否用面板包裹
|
306
|
+
"""
|
307
|
+
content = Group(*[
|
308
|
+
Text.assemble(
|
309
|
+
(f"{k}{separator}", key_style),
|
310
|
+
(str(v), value_style)
|
311
|
+
) for k, v in items.items()
|
312
|
+
])
|
313
|
+
self._print_with_panel(content, panel)
|
314
|
+
|
315
|
+
def context_aware_help(
|
316
|
+
self, help_content: Dict[str, str], current_context: str, width: int = 40
|
317
|
+
):
|
318
|
+
"""
|
319
|
+
上下文感知帮助面板
|
320
|
+
:param help_content: 帮助信息字典 {上下文关键字: 说明内容}
|
321
|
+
:param current_context: 当前分析出的上下文
|
322
|
+
:param width: 面板宽度
|
323
|
+
"""
|
324
|
+
matched_keys = [k for k in help_content if k in current_context]
|
325
|
+
if not matched_keys:
|
326
|
+
return
|
327
|
+
|
328
|
+
help_text = Text()
|
329
|
+
for key in matched_keys:
|
330
|
+
help_text.append(f"[bold]{key}[/]\n{help_content[key]}\n\n", style="dim")
|
331
|
+
|
332
|
+
self.print_panel(
|
333
|
+
help_text,
|
334
|
+
title="相关帮助信息",
|
335
|
+
border_style="cyan",
|
336
|
+
width=width
|
337
|
+
)
|
338
|
+
|
339
|
+
def _print_with_panel(self, content: Any, use_panel: bool) -> None:
|
340
|
+
"""内部方法:根据参数决定是否使用面板包装"""
|
341
|
+
if use_panel:
|
342
|
+
self.print_panel(content)
|
343
|
+
else:
|
344
|
+
self.console.print(content)
|
345
|
+
|
346
|
+
@staticmethod
|
347
|
+
def create_console(**kwargs) -> Console:
|
348
|
+
"""创建预配置的Console实例"""
|
349
|
+
return Console(record=True, **kwargs)
|
350
|
+
|
351
|
+
def get_console(self):
|
352
|
+
return self.console
|
353
|
+
|
354
|
+
|
355
|
+
if __name__ == '__main__':
|
356
|
+
printer = Printer()
|
357
|
+
# 表格示例
|
358
|
+
printer.print_table(
|
359
|
+
headers=["Name", "Age", "Country"],
|
360
|
+
data=[
|
361
|
+
["Alice", 28, "USA"],
|
362
|
+
["Bob", Text("32 (senior)", style="bold red"), "UK"],
|
363
|
+
["Charlie", 45, "Australia"]
|
364
|
+
],
|
365
|
+
title="User Info",
|
366
|
+
show_lines=False
|
367
|
+
)
|
368
|
+
|
369
|
+
printer.print_table_compact(
|
370
|
+
headers=["Name", "Age", "Country"],
|
371
|
+
data=[
|
372
|
+
["Alice", 28, "USA"],
|
373
|
+
["Bob", Text("32 (senior)", style="bold red"), "UK"],
|
374
|
+
["Charlie", 45, "Australia"]
|
375
|
+
],
|
376
|
+
title="User Info",
|
377
|
+
show_lines=True,
|
378
|
+
center=True,
|
379
|
+
compact=True
|
380
|
+
)
|
381
|
+
|
382
|
+
# 键值对示例
|
383
|
+
printer.print_key_value(
|
384
|
+
{"版本": "1.2.3", "作者": "Alice", "许可证": "MIT"},
|
385
|
+
panel=True
|
386
|
+
)
|
387
|
+
|
388
|
+
# Markdown示例
|
389
|
+
printer.print_markdown("# 这是标题\n- 列表项1\n- 列表项2", panel=True)
|
390
|
+
|
391
|
+
# 代码示例
|
392
|
+
printer.print_code('print("Hello World!")', line_numbers=False)
|
393
|
+
|
394
|
+
# Text示例
|
395
|
+
printer.print_text(Text("32 (senior)", style="bold red"))
|
396
|
+
printer.print_text(Text("32 (senior)", style="dim red"))
|
397
|
+
printer.print_text("32 (senior)", style="dim red")
|
398
|
+
|
399
|
+
# 动态内容示例
|
400
|
+
# with printer.live_context():
|
401
|
+
# for i in range(10):
|
402
|
+
# printer.update_live(f"Processing... [bold green]{i + 1}/10")
|
403
|
+
# time.sleep(0.1)
|
404
|
+
|
405
|
+
# 进度条示例
|
406
|
+
# with printer.progress_context() as progress:
|
407
|
+
# task = progress.add_task("Downloading", total=10)
|
408
|
+
# for i in range(10):
|
409
|
+
# progress.update(task, advance=1)
|
410
|
+
# time.sleep(0.1)
|
411
|
+
|
412
|
+
# with printer.progress_context_with_panel(title="数据处理进度") as progress:
|
413
|
+
# task = progress.add_task("[red]下载文件...", total=10)
|
414
|
+
#
|
415
|
+
# for i in range(10):
|
416
|
+
# time.sleep(0.1)
|
417
|
+
# progress.update(task, advance=1)
|
418
|
+
|
419
|
+
# 基础卡片
|
420
|
+
printer.print_card(
|
421
|
+
title="系统通知",
|
422
|
+
content="当前系统版本:v2.4.1 , 可用存储空间:128GB",
|
423
|
+
icon="package",
|
424
|
+
border_style="dim blue",
|
425
|
+
width=50
|
426
|
+
)
|
427
|
+
|
428
|
+
printer.print_card(
|
429
|
+
title="第一阶段",
|
430
|
+
content="处理 REST/RAG/Search 资源...",
|
431
|
+
border_style="dim cyan"
|
432
|
+
)
|
433
|
+
|
434
|
+
# # 多列卡片
|
435
|
+
# printer.multi_col_cards([
|
436
|
+
# {
|
437
|
+
# "title": "CPU使用率",
|
438
|
+
# "content": "```\n[██████ 75%]\n```",
|
439
|
+
# "border_style": "yellow"
|
440
|
+
# },
|
441
|
+
# {
|
442
|
+
# "title": "内存状态",
|
443
|
+
# "content": "已用:4.2/8.0 GB"
|
444
|
+
# },
|
445
|
+
# {
|
446
|
+
# "title": "网络状态",
|
447
|
+
# "content": Markdown("- Ping: 28ms\n- 带宽:↑1.2 ↓4.5 Mbps")
|
448
|
+
# }
|
449
|
+
# ])
|
450
|
+
|
451
|
+
# printer.status_card(
|
452
|
+
# status="error",
|
453
|
+
# message="无法连接到数据库:\n- 检查网络连接\n- 验证凭据有效性",
|
454
|
+
# title="严重错误"
|
455
|
+
# )
|
autocoder_nano/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: autocoder_nano
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.29
|
4
4
|
Summary: AutoCoder Nano
|
5
5
|
Author: moofs
|
6
6
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
@@ -10,7 +10,6 @@ Requires-Python: >=3.10
|
|
10
10
|
Description-Content-Type: text/markdown
|
11
11
|
License-File: LICENSE
|
12
12
|
Requires-Dist: loguru
|
13
|
-
Requires-Dist: tabulate
|
14
13
|
Requires-Dist: GitPython
|
15
14
|
Requires-Dist: jinja2
|
16
15
|
Requires-Dist: openai>=1.14.3
|
@@ -25,7 +24,7 @@ Requires-Dist: uvicorn
|
|
25
24
|
Requires-Dist: pathspec
|
26
25
|
Requires-Dist: fastapi
|
27
26
|
Requires-Dist: tokenizers
|
28
|
-
Requires-Dist: duckdb
|
27
|
+
Requires-Dist: duckdb==1.2.0
|
29
28
|
Requires-Dist: numpy
|
30
29
|
Requires-Dist: requests
|
31
30
|
Requires-Dist: beautifulsoup4
|
@@ -1,16 +1,16 @@
|
|
1
1
|
autocoder_nano/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
autocoder_nano/auto_coder_nano.py,sha256=
|
2
|
+
autocoder_nano/auto_coder_nano.py,sha256=5M5c7FblpbjOzV9h7j0raZxuYbFq_iEbpErhp_ZbDL0,101507
|
3
3
|
autocoder_nano/auto_coder_nano_rag.py,sha256=9BtNZ6nC5D5SPTIuziXZOfouCBLOMNzvJMTdDPQEgO8,10436
|
4
4
|
autocoder_nano/auto_coder_nano_ui.py,sha256=ZBskcIJMeTJY7_JipGJaee58G9fUJaOv3LV4hptLc6c,12669
|
5
5
|
autocoder_nano/file_utils.py,sha256=iGbkbQ191nKL4aNufdexYYYQSDM1XrDC9Uxp_PIbawY,661
|
6
|
-
autocoder_nano/git_utils.py,sha256=
|
6
|
+
autocoder_nano/git_utils.py,sha256=zDbQcfQ2hcdnL4PNWzVXSbc_ixPdPm-rgavhDnIrtH8,20685
|
7
7
|
autocoder_nano/helper.py,sha256=LbieDBKp408x9g4GHCvcujUgMgxDTV9owGHIBYpT1ww,6643
|
8
|
-
autocoder_nano/llm_client.py,sha256=
|
8
|
+
autocoder_nano/llm_client.py,sha256=C2h1uZ4cjsYxItlgDowBljAjNwJqdVhjAXptgkGd2-s,4360
|
9
9
|
autocoder_nano/llm_prompt.py,sha256=ViWUfCZp0gDESAAPHBhZc2WhHiFUHIxK6a2xbFu0sjU,10864
|
10
10
|
autocoder_nano/llm_types.py,sha256=LIvATT40K9A_NAMuaNUKZt-6fu9zZP39uU6-dFUZNHk,9521
|
11
11
|
autocoder_nano/sys_utils.py,sha256=Sn6kr5diaEkVWbYDBrtenr9zw32jVIWvsAReY7_uEd0,1638
|
12
12
|
autocoder_nano/templates.py,sha256=Sv61fSy8V7YsM_bSqDLFMX5tinleSZ6Z2hetCDXl6g8,4270
|
13
|
-
autocoder_nano/version.py,sha256=
|
13
|
+
autocoder_nano/version.py,sha256=d-XOCPQRy_qfLozchW1GNzQc1E0ggOGJNzVUb0V6t9k,79
|
14
14
|
autocoder_nano/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
autocoder_nano/agent/agent_base.py,sha256=aic_Od5owZEu-VJhyAfQiz9R4btfvgPLJGwtxH3WBno,16369
|
16
16
|
autocoder_nano/agent/new/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -37,15 +37,15 @@ autocoder_nano/app/templates/partials/input.html,sha256=8CY3JcHaA4nPZ2Vu4ragdYZz
|
|
37
37
|
autocoder_nano/app/templates/partials/message.html,sha256=HWEh_j_yJAbP7zFs6jt88BDzkP7dG6VgPUbS2MT5Ax4,1548
|
38
38
|
autocoder_nano/data/tokenizer.json,sha256=7Lb5_DaYlDRvBRH0B0ynXO5c1fOwbQLxujX805-OEh0,7847602
|
39
39
|
autocoder_nano/edit/__init__.py,sha256=QPMuW7tBTUe0Q00gUPJEmdxWqvunqko9_dsim0ncr7c,623
|
40
|
-
autocoder_nano/edit/actions.py,sha256=
|
40
|
+
autocoder_nano/edit/actions.py,sha256=N4qzSIE7Ifm7r6Sk-HbgWmbDqMP6jfrpByfpV7rbEo8,6480
|
41
41
|
autocoder_nano/edit/text.py,sha256=nC7VkQYHCDdT3ULpy0DIjkFwB9suhjIxK39AEzXqbno,1150
|
42
42
|
autocoder_nano/edit/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
43
|
autocoder_nano/edit/code/generate_editblock.py,sha256=s-VTZK0G1OhjEyZXqyjj4sY48fOo02EvHhaxTIw4ytY,13110
|
44
|
-
autocoder_nano/edit/code/merge_editblock.py,sha256=
|
44
|
+
autocoder_nano/edit/code/merge_editblock.py,sha256=Vk-FOVvaEzKcSRDMyMyR_M77kqj-s5-zejChn4QwLAY,17557
|
45
45
|
autocoder_nano/edit/code/modification_ranker.py,sha256=hnF1acqAzPYKm9hEFxobJHfGGDdM-GclZLxvtt83lGA,3431
|
46
46
|
autocoder_nano/index/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
-
autocoder_nano/index/entry.py,sha256=
|
48
|
-
autocoder_nano/index/index_manager.py,sha256=
|
47
|
+
autocoder_nano/index/entry.py,sha256=S71dfnYC201eQLXwqNCo_Y83ImI1ZxuJ0_m2hz5nCJc,7729
|
48
|
+
autocoder_nano/index/index_manager.py,sha256=ek7AqU8M-Snl5qZYhO_U0SEK3-y1u5OOxD9z-LdDesE,15619
|
49
49
|
autocoder_nano/index/symbols_utils.py,sha256=z_16X6BozTfmric1uU-r2GqzDabJ5ChfAOB4lo7i-_8,1450
|
50
50
|
autocoder_nano/project/__init__.py,sha256=8R90zhCcRTHWScAOYw20lkcHI4IhSm-ywCLcfezn0Oc,227
|
51
51
|
autocoder_nano/project/pyproject.py,sha256=UZqHBrUmsCW73YkG8shjeFSEYGB_zFDH1ezoPP_f33Q,4478
|
@@ -69,9 +69,11 @@ autocoder_nano/ss/__init__.py,sha256=jp9Az7c0uafZcC6qfxjyZnSnVLtgA_4UdakSOcp8osE
|
|
69
69
|
autocoder_nano/ss/search_engine.py,sha256=4_RcxF1almJX5XlLWB7d9UXM92YDK2bOqoCrkuGg5Mc,3720
|
70
70
|
autocoder_nano/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
71
|
autocoder_nano/tools/http_tools.py,sha256=04Tmg8BTwfsw7_-fKBDHv787XU4yQ5UtQSDj0zJBIUc,3189
|
72
|
-
autocoder_nano
|
73
|
-
autocoder_nano
|
74
|
-
autocoder_nano-0.1.
|
75
|
-
autocoder_nano-0.1.
|
76
|
-
autocoder_nano-0.1.
|
77
|
-
autocoder_nano-0.1.
|
72
|
+
autocoder_nano/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
|
+
autocoder_nano/utils/printer_utils.py,sha256=MohOZeihWQIj7ZpDo5TPT93hijIbjPWknNSyHf4ns_Q,15196
|
74
|
+
autocoder_nano-0.1.29.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
75
|
+
autocoder_nano-0.1.29.dist-info/METADATA,sha256=23Hie3PP50CJkT98hdfaJYx6FXMTEdrRi2eCQ-j5Gs4,13576
|
76
|
+
autocoder_nano-0.1.29.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
77
|
+
autocoder_nano-0.1.29.dist-info/entry_points.txt,sha256=Dj8gGZ_AgLy8ANqr2do_DJjpsR3JMh-ztsrUXo4Vn5Q,194
|
78
|
+
autocoder_nano-0.1.29.dist-info/top_level.txt,sha256=D7s34cwIs1F4EAjRRDvO_zTHtUz1Z7UVccFUNlJn7HI,15
|
79
|
+
autocoder_nano-0.1.29.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|