auto-coder 0.1.212__py3-none-any.whl → 0.1.213__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.
- {auto_coder-0.1.212.dist-info → auto_coder-0.1.213.dist-info}/METADATA +1 -1
- {auto_coder-0.1.212.dist-info → auto_coder-0.1.213.dist-info}/RECORD +10 -10
- autocoder/auto_coder.py +14 -3
- autocoder/common/code_modification_ranker.py +17 -15
- autocoder/index/index.py +95 -33
- autocoder/version.py +1 -1
- {auto_coder-0.1.212.dist-info → auto_coder-0.1.213.dist-info}/LICENSE +0 -0
- {auto_coder-0.1.212.dist-info → auto_coder-0.1.213.dist-info}/WHEEL +0 -0
- {auto_coder-0.1.212.dist-info → auto_coder-0.1.213.dist-info}/entry_points.txt +0 -0
- {auto_coder-0.1.212.dist-info → auto_coder-0.1.213.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
autocoder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
autocoder/auto_coder.py,sha256=
|
|
2
|
+
autocoder/auto_coder.py,sha256=fnm1dhTj5AidkYf65qt4XjrXZz0D3OrkHW8y7QOMjmQ,41765
|
|
3
3
|
autocoder/auto_coder_lang.py,sha256=Rtupq6N3_HT7JRhDKdgCBcwRaiAnyCOR_Gsp4jUomrI,3229
|
|
4
4
|
autocoder/auto_coder_rag.py,sha256=hU7NmCUIM__918p1RbGFlJKPVEqdr4NXjD6b1dBgEVU,21743
|
|
5
5
|
autocoder/auto_coder_server.py,sha256=XU9b4SBH7zjPPXaTWWHV4_zJm-XYa6njuLQaplYJH_c,20290
|
|
@@ -8,7 +8,7 @@ autocoder/chat_auto_coder.py,sha256=WhaS6uiG5lIBrnif_Sa_M4aTBMTiVn8-eGhlDWjtdBc,
|
|
|
8
8
|
autocoder/chat_auto_coder_lang.py,sha256=zU9VRY-l80fZnLJ0Op8A3wq27UhQHh9WcpSYU4SmnqU,8708
|
|
9
9
|
autocoder/command_args.py,sha256=BpMbPceBzjCftPB0yOVsSmTmt61xS3gtc1WGKtcDHQs,30449
|
|
10
10
|
autocoder/lang.py,sha256=U6AjVV8Rs1uLyjFCZ8sT6WWuNUxMBqkXXIOs4S120uk,14511
|
|
11
|
-
autocoder/version.py,sha256=
|
|
11
|
+
autocoder/version.py,sha256=V-hdG0k1-v5-WK9KQgzySDX22RDvdwG4vsIdj8042Cg,24
|
|
12
12
|
autocoder/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
autocoder/agent/auto_demand_organizer.py,sha256=NWSAEsEk94vT3lGjfo25kKLMwYdPcpy9e-i21txPasQ,6942
|
|
14
14
|
autocoder/agent/auto_filegroup.py,sha256=CW7bqp0FW1GIEMnl-blyAc2UGT7O9Mom0q66ITz1ckM,6635
|
|
@@ -36,7 +36,7 @@ autocoder/common/code_auto_merge.py,sha256=1tiKrram8GCCuPYrNvHFbr-Tic-f84Y8H13fD
|
|
|
36
36
|
autocoder/common/code_auto_merge_diff.py,sha256=5SI6ggklJ0QDHvsS0cpNXFuIkFRQxp1i08k6iwWbPJc,15242
|
|
37
37
|
autocoder/common/code_auto_merge_editblock.py,sha256=l6yEiZqXyIlUNIIPXvkHOnLCIInXR78TzSjF-jtJkkg,17035
|
|
38
38
|
autocoder/common/code_auto_merge_strict_diff.py,sha256=ABYOTDUQYA4Bn4BwT1Rw812y49cHW3UH_JSpM9uJ6ig,9399
|
|
39
|
-
autocoder/common/code_modification_ranker.py,sha256=
|
|
39
|
+
autocoder/common/code_modification_ranker.py,sha256=DFlbwgdg8GK47zVcvfZSzkyniEKmTVLTOWejjcVIgaw,5121
|
|
40
40
|
autocoder/common/command_completer.py,sha256=Eo3V9fRIIX74YdLxz1pZ3wAqdXhFirWoQ0zXkB5R198,8999
|
|
41
41
|
autocoder/common/command_generator.py,sha256=v4LmU7sO-P7jEZIXCWHUC6P-vT7AvBi_x_PTwCqBAE8,1323
|
|
42
42
|
autocoder/common/command_templates.py,sha256=3G-pCNbL6iHbnkG6v1JZpbIK3Mc9d373_RYGmCcDPMY,8548
|
|
@@ -67,7 +67,7 @@ autocoder/dispacher/actions/plugins/action_regex_project.py,sha256=ZvU3hsxFPSZTf
|
|
|
67
67
|
autocoder/dispacher/actions/plugins/action_translate.py,sha256=nVAtRSQpdGNmZxg1R_9zXG3AuTv3CHf2v7ODgj8u65c,7727
|
|
68
68
|
autocoder/index/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
69
|
autocoder/index/for_command.py,sha256=zfbvQnhHjsAqBc4Ce1kMGIu0jPEk_rtH7fntg89_4z0,3092
|
|
70
|
-
autocoder/index/index.py,sha256=
|
|
70
|
+
autocoder/index/index.py,sha256=X9pAQj-rZar-OhYrx3BGAxNfM1hObz_SG3bQdz5efQg,34145
|
|
71
71
|
autocoder/index/symbols_utils.py,sha256=CjcjUVajmJZB75Ty3a7kMv1BZphrm-tIBAdOJv6uo-0,2037
|
|
72
72
|
autocoder/pyproject/__init__.py,sha256=7ZuIxD2QBYIwhjmpva8eL2knorKo03yNqUhSyecpt7c,14448
|
|
73
73
|
autocoder/rag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -119,9 +119,9 @@ autocoder/utils/request_event_queue.py,sha256=r3lo5qGsB1dIjzVQ05dnr0z_9Z3zOkBdP1
|
|
|
119
119
|
autocoder/utils/request_queue.py,sha256=nwp6PMtgTCiuwJI24p8OLNZjUiprC-TsefQrhMI-yPE,3889
|
|
120
120
|
autocoder/utils/rest.py,sha256=HawagAap3wMIDROGhY1730zSZrJR_EycODAA5qOj83c,8807
|
|
121
121
|
autocoder/utils/tests.py,sha256=BqphrwyycGAvs-5mhH8pKtMZdObwhFtJ5MC_ZAOiLq8,1340
|
|
122
|
-
auto_coder-0.1.
|
|
123
|
-
auto_coder-0.1.
|
|
124
|
-
auto_coder-0.1.
|
|
125
|
-
auto_coder-0.1.
|
|
126
|
-
auto_coder-0.1.
|
|
127
|
-
auto_coder-0.1.
|
|
122
|
+
auto_coder-0.1.213.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
|
|
123
|
+
auto_coder-0.1.213.dist-info/METADATA,sha256=7JrELvSZVoZAD3daumw7vNKywrDnYZaqtw8QkuFczEE,2590
|
|
124
|
+
auto_coder-0.1.213.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
125
|
+
auto_coder-0.1.213.dist-info/entry_points.txt,sha256=0nzHtHH4pNcM7xq4EBA2toS28Qelrvcbrr59GqD_0Ak,350
|
|
126
|
+
auto_coder-0.1.213.dist-info/top_level.txt,sha256=Jqc0_uJSw2GwoFQAa9iJxYns-2mWla-9ok_Y3Gcznjk,10
|
|
127
|
+
auto_coder-0.1.213.dist-info/RECORD,,
|
autocoder/auto_coder.py
CHANGED
|
@@ -295,9 +295,20 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
295
295
|
llm.setup_sub_client("code_model", code_model)
|
|
296
296
|
|
|
297
297
|
if args.generate_rerank_model:
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
298
|
+
if "," in args.generate_rerank_model:
|
|
299
|
+
# Multiple rerank models specified
|
|
300
|
+
model_names = args.generate_rerank_model.split(",")
|
|
301
|
+
models = []
|
|
302
|
+
for _, model_name in enumerate(model_names):
|
|
303
|
+
rerank_model = byzerllm.ByzerLLM()
|
|
304
|
+
rerank_model.setup_default_model_name(model_name.strip())
|
|
305
|
+
models.append(rerank_model)
|
|
306
|
+
llm.setup_sub_client("generate_rerank_model", models)
|
|
307
|
+
else:
|
|
308
|
+
# Single rerank model
|
|
309
|
+
rerank_model = byzerllm.ByzerLLM()
|
|
310
|
+
rerank_model.setup_default_model_name(args.generate_rerank_model)
|
|
311
|
+
llm.setup_sub_client("generate_rerank_model", rerank_model)
|
|
301
312
|
|
|
302
313
|
if args.inference_model:
|
|
303
314
|
inference_model = byzerllm.ByzerLLM()
|
|
@@ -14,10 +14,9 @@ class CodeModificationRanker:
|
|
|
14
14
|
def __init__(self, llm: byzerllm.ByzerLLM, args: AutoCoderArgs):
|
|
15
15
|
self.llm = llm
|
|
16
16
|
self.args = args
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
self.rerank_llm = self.llm
|
|
17
|
+
self.llms = self.llm.get_sub_client("generate_rerank_model") or [self.llm]
|
|
18
|
+
if not isinstance(self.llms, list):
|
|
19
|
+
self.llms = [self.llms]
|
|
21
20
|
|
|
22
21
|
@byzerllm.prompt()
|
|
23
22
|
def _rank_modifications(self, s:CodeGenerateResult) -> str:
|
|
@@ -63,17 +62,20 @@ class CodeModificationRanker:
|
|
|
63
62
|
|
|
64
63
|
logger.info(f"Start ranking {len(generate_result.contents)} candidates")
|
|
65
64
|
generate_times = self.args.generate_times_same_model
|
|
66
|
-
|
|
65
|
+
total_tasks = len(self.llms) * generate_times
|
|
67
66
|
try:
|
|
68
|
-
# Create a thread pool with generate_times workers
|
|
69
|
-
with ThreadPoolExecutor(max_workers=
|
|
70
|
-
# Submit tasks
|
|
71
|
-
futures = [
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
# Create a thread pool with (number of models * generate_times) workers
|
|
68
|
+
with ThreadPoolExecutor(max_workers=total_tasks) as executor:
|
|
69
|
+
# Submit tasks for each model and generate_times
|
|
70
|
+
futures = []
|
|
71
|
+
for llm in self.llms:
|
|
72
|
+
for _ in range(generate_times):
|
|
73
|
+
futures.append(
|
|
74
|
+
executor.submit(
|
|
75
|
+
self._rank_modifications.with_llm(llm).with_return_type(RankResult).run,
|
|
76
|
+
generate_result
|
|
77
|
+
)
|
|
78
|
+
)
|
|
77
79
|
|
|
78
80
|
# Collect all results
|
|
79
81
|
results = []
|
|
@@ -104,7 +106,7 @@ class CodeModificationRanker:
|
|
|
104
106
|
elapsed = time.time() - start_time
|
|
105
107
|
# Format scores for logging
|
|
106
108
|
score_details = ", ".join([f"candidate {i}: {candidate_scores[i]:.2f}" for i in sorted_candidates])
|
|
107
|
-
logger.info(f"Ranking completed in {elapsed:.2f}s, best candidate index: {sorted_candidates[0]}, scores: {score_details}")
|
|
109
|
+
logger.info(f"Ranking completed in {elapsed:.2f}s, total voters: {total_tasks}, best candidate index: {sorted_candidates[0]}, scores: {score_details}")
|
|
108
110
|
|
|
109
111
|
rerank_contents = [generate_result.contents[i] for i in sorted_candidates]
|
|
110
112
|
rerank_conversations = [generate_result.conversations[i] for i in sorted_candidates]
|
autocoder/index/index.py
CHANGED
|
@@ -578,8 +578,18 @@ def build_index_and_filter_files(
|
|
|
578
578
|
"indexed_files": 0,
|
|
579
579
|
"level1_filtered": 0,
|
|
580
580
|
"level2_filtered": 0,
|
|
581
|
+
"verified_files": 0,
|
|
581
582
|
"final_files": 0,
|
|
582
|
-
"timings": {
|
|
583
|
+
"timings": {
|
|
584
|
+
"process_tagged_sources": 0.0,
|
|
585
|
+
"build_index": 0.0,
|
|
586
|
+
"level1_filter": 0.0,
|
|
587
|
+
"level2_filter": 0.0,
|
|
588
|
+
"relevance_verification": 0.0,
|
|
589
|
+
"file_selection": 0.0,
|
|
590
|
+
"prepare_output": 0.0,
|
|
591
|
+
"total": 0.0
|
|
592
|
+
}
|
|
583
593
|
}
|
|
584
594
|
|
|
585
595
|
def get_file_path(file_path):
|
|
@@ -597,7 +607,8 @@ def build_index_and_filter_files(
|
|
|
597
607
|
final_files[get_file_path(source.module_name)] = TargetFile(
|
|
598
608
|
file_path=source.module_name, reason="Rest/Rag/Search"
|
|
599
609
|
)
|
|
600
|
-
|
|
610
|
+
phase_end = time.monotonic()
|
|
611
|
+
stats["timings"]["process_tagged_sources"] = phase_end - phase_start
|
|
601
612
|
|
|
602
613
|
if not args.skip_build_index and llm:
|
|
603
614
|
# Phase 2: Build index
|
|
@@ -615,7 +626,8 @@ def build_index_and_filter_files(
|
|
|
615
626
|
index_manager = IndexManager(llm=llm, sources=sources, args=args)
|
|
616
627
|
index_data = index_manager.build_index()
|
|
617
628
|
stats["indexed_files"] = len(index_data) if index_data else 0
|
|
618
|
-
|
|
629
|
+
phase_end = time.monotonic()
|
|
630
|
+
stats["timings"]["build_index"] = phase_end - phase_start
|
|
619
631
|
|
|
620
632
|
if args.request_id and not args.skip_events:
|
|
621
633
|
queue_communicate.send_event(
|
|
@@ -650,7 +662,8 @@ def build_index_and_filter_files(
|
|
|
650
662
|
file_path = file.file_path.strip()
|
|
651
663
|
final_files[get_file_path(file_path)] = file
|
|
652
664
|
stats["level1_filtered"] = len(target_files.file_list)
|
|
653
|
-
|
|
665
|
+
phase_end = time.monotonic()
|
|
666
|
+
stats["timings"]["level1_filter"] = phase_end - phase_start
|
|
654
667
|
|
|
655
668
|
# Phase 4: Level 2 filtering - Related files
|
|
656
669
|
if target_files is not None and args.index_filter_level >= 2:
|
|
@@ -673,8 +686,8 @@ def build_index_and_filter_files(
|
|
|
673
686
|
file_path = file.file_path.strip()
|
|
674
687
|
final_files[get_file_path(file_path)] = file
|
|
675
688
|
stats["level2_filtered"] = len(related_files.file_list)
|
|
676
|
-
|
|
677
|
-
|
|
689
|
+
phase_end = time.monotonic()
|
|
690
|
+
stats["timings"]["level2_filter"] = phase_end - phase_start
|
|
678
691
|
|
|
679
692
|
if not final_files:
|
|
680
693
|
logger.warning("No related files found, using all files")
|
|
@@ -689,6 +702,28 @@ def build_index_and_filter_files(
|
|
|
689
702
|
phase_start = time.monotonic()
|
|
690
703
|
verified_files = {}
|
|
691
704
|
temp_files = list(final_files.values())
|
|
705
|
+
verification_results = []
|
|
706
|
+
|
|
707
|
+
def print_verification_results(results):
|
|
708
|
+
from rich.table import Table
|
|
709
|
+
from rich.console import Console
|
|
710
|
+
|
|
711
|
+
console = Console()
|
|
712
|
+
table = Table(title="File Relevance Verification Results", show_header=True, header_style="bold magenta")
|
|
713
|
+
table.add_column("File Path", style="cyan", no_wrap=True)
|
|
714
|
+
table.add_column("Score", justify="right", style="green")
|
|
715
|
+
table.add_column("Status", style="yellow")
|
|
716
|
+
table.add_column("Reason/Error")
|
|
717
|
+
|
|
718
|
+
for file_path, score, status, reason in results:
|
|
719
|
+
table.add_row(
|
|
720
|
+
file_path,
|
|
721
|
+
str(score) if score is not None else "N/A",
|
|
722
|
+
status,
|
|
723
|
+
reason
|
|
724
|
+
)
|
|
725
|
+
|
|
726
|
+
console.print(table)
|
|
692
727
|
|
|
693
728
|
def verify_single_file(file: TargetFile):
|
|
694
729
|
for source in sources:
|
|
@@ -700,13 +735,20 @@ def build_index_and_filter_files(
|
|
|
700
735
|
query=args.query
|
|
701
736
|
)
|
|
702
737
|
if result.relevant_score >= args.verify_file_relevance_score:
|
|
703
|
-
|
|
738
|
+
verified_files[file.file_path] = TargetFile(
|
|
704
739
|
file_path=file.file_path,
|
|
705
740
|
reason=f"Score:{result.relevant_score}, {result.reason}"
|
|
706
741
|
)
|
|
742
|
+
return file.file_path, result.relevant_score, "PASS", result.reason
|
|
743
|
+
else:
|
|
744
|
+
return file.file_path, result.relevant_score, "FAIL", result.reason
|
|
707
745
|
except Exception as e:
|
|
708
|
-
|
|
709
|
-
|
|
746
|
+
error_msg = str(e)
|
|
747
|
+
verified_files[file.file_path] = TargetFile(
|
|
748
|
+
file_path=file.file_path,
|
|
749
|
+
reason=f"Verification failed: {error_msg}"
|
|
750
|
+
)
|
|
751
|
+
return file.file_path, None, "ERROR", error_msg
|
|
710
752
|
return None
|
|
711
753
|
|
|
712
754
|
with ThreadPoolExecutor(max_workers=args.index_filter_workers) as executor:
|
|
@@ -715,15 +757,18 @@ def build_index_and_filter_files(
|
|
|
715
757
|
for future in as_completed(futures):
|
|
716
758
|
result = future.result()
|
|
717
759
|
if result:
|
|
718
|
-
|
|
719
|
-
verified_files[file_path] = target_file
|
|
760
|
+
verification_results.append(result)
|
|
720
761
|
time.sleep(args.anti_quota_limit)
|
|
721
762
|
|
|
763
|
+
# Print verification results in a table
|
|
764
|
+
print_verification_results(verification_results)
|
|
765
|
+
|
|
722
766
|
stats["verified_files"] = len(verified_files)
|
|
723
|
-
|
|
724
|
-
|
|
767
|
+
phase_end = time.monotonic()
|
|
768
|
+
stats["timings"]["relevance_verification"] = phase_end - phase_start
|
|
725
769
|
|
|
726
|
-
|
|
770
|
+
# Keep all files, not just verified ones
|
|
771
|
+
final_files = verified_files
|
|
727
772
|
|
|
728
773
|
def display_table_and_get_selections(data):
|
|
729
774
|
from prompt_toolkit.shortcuts import checkboxlist_dialog
|
|
@@ -755,7 +800,7 @@ def build_index_and_filter_files(
|
|
|
755
800
|
console = Console()
|
|
756
801
|
|
|
757
802
|
table = Table(
|
|
758
|
-
title="
|
|
803
|
+
title="Files Used as Context",
|
|
759
804
|
show_header=True,
|
|
760
805
|
header_style="bold magenta",
|
|
761
806
|
)
|
|
@@ -802,7 +847,8 @@ def build_index_and_filter_files(
|
|
|
802
847
|
if args.index_filter_file_num > 0:
|
|
803
848
|
final_filenames = final_filenames[: args.index_filter_file_num]
|
|
804
849
|
|
|
805
|
-
|
|
850
|
+
phase_end = time.monotonic()
|
|
851
|
+
stats["timings"]["file_selection"] = phase_end - phase_start
|
|
806
852
|
|
|
807
853
|
# Phase 7: Display results and prepare output
|
|
808
854
|
logger.info("Phase 7: Preparing final output...")
|
|
@@ -848,26 +894,42 @@ def build_index_and_filter_files(
|
|
|
848
894
|
)
|
|
849
895
|
|
|
850
896
|
stats["final_files"] = len(depulicated_sources)
|
|
851
|
-
|
|
897
|
+
phase_end = time.monotonic()
|
|
898
|
+
stats["timings"]["prepare_output"] = phase_end - phase_start
|
|
852
899
|
|
|
853
900
|
# Calculate total time and print summary
|
|
854
|
-
|
|
901
|
+
total_end_time = time.monotonic()
|
|
902
|
+
total_time = total_end_time - total_start_time
|
|
855
903
|
stats["timings"]["total"] = total_time
|
|
904
|
+
|
|
905
|
+
# Calculate total filter time
|
|
906
|
+
total_filter_time = (
|
|
907
|
+
stats["timings"]["level1_filter"] +
|
|
908
|
+
stats["timings"]["level2_filter"] +
|
|
909
|
+
stats["timings"]["relevance_verification"]
|
|
910
|
+
)
|
|
856
911
|
|
|
857
|
-
# Print final statistics
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
912
|
+
# Print final statistics in a more structured way
|
|
913
|
+
summary = f"""
|
|
914
|
+
=== Indexing and Filtering Summary ===
|
|
915
|
+
• Total files scanned: {stats['total_files']}
|
|
916
|
+
• Files indexed: {stats['indexed_files']}
|
|
917
|
+
• Files filtered:
|
|
918
|
+
- Level 1 (query-based): {stats['level1_filtered']}
|
|
919
|
+
- Level 2 (related files): {stats['level2_filtered']}
|
|
920
|
+
- Relevance verified: {stats.get('verified_files', 0)}
|
|
921
|
+
• Final files selected: {stats['final_files']}
|
|
922
|
+
|
|
923
|
+
=== Time Breakdown ===
|
|
924
|
+
• Index build: {stats['timings'].get('build_index', 0):.2f}s
|
|
925
|
+
• Level 1 filter: {stats['timings'].get('level1_filter', 0):.2f}s
|
|
926
|
+
• Level 2 filter: {stats['timings'].get('level2_filter', 0):.2f}s
|
|
927
|
+
• Relevance check: {stats['timings'].get('relevance_verification', 0):.2f}s
|
|
928
|
+
• File selection: {stats['timings'].get('file_selection', 0):.2f}s
|
|
929
|
+
• Total time: {total_time:.2f}s
|
|
930
|
+
====================================
|
|
931
|
+
"""
|
|
932
|
+
logger.info(summary)
|
|
871
933
|
|
|
872
934
|
if args.request_id and not args.skip_events:
|
|
873
935
|
queue_communicate.send_event(
|
|
@@ -876,7 +938,7 @@ def build_index_and_filter_files(
|
|
|
876
938
|
event_type=CommunicateEventType.CODE_INDEX_FILTER_END.value,
|
|
877
939
|
data=json.dumps({
|
|
878
940
|
"filtered_files": stats["final_files"],
|
|
879
|
-
"filter_time":
|
|
941
|
+
"filter_time": total_filter_time
|
|
880
942
|
})
|
|
881
943
|
)
|
|
882
944
|
)
|
autocoder/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.213"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|