mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-13 08:15:59 +00:00
Merge pull request #769 from oraios/global-indexing-loop
Use a single loop over source files to index project
This commit is contained in:
1 file changed
+20
-17
+20
-17
@@ -1,3 +1,4 @@
|
||||
import collections
|
||||
import glob
|
||||
import json
|
||||
import os
|
||||
@@ -11,6 +12,7 @@ from typing import Any, Literal
|
||||
import click
|
||||
from sensai.util import logging
|
||||
from sensai.util.logging import FileLoggerContext, datetime_tag
|
||||
from sensai.util.string import dict_string
|
||||
from tqdm import tqdm
|
||||
|
||||
from serena.agent import SerenaAgent
|
||||
@@ -529,23 +531,24 @@ class ProjectCommands(AutoRegisteringGroup):
|
||||
|
||||
files = proj.gather_source_files()
|
||||
|
||||
servers = list(ls_mgr.iter_language_servers())
|
||||
for k, ls in enumerate(servers, start=1):
|
||||
click.echo(f"Indexing for language {ls.language.value} ({k}/{len(servers)}) …")
|
||||
collected_exceptions: list[Exception] = []
|
||||
files_failed = []
|
||||
for i, f in enumerate(tqdm(files, desc="Indexing")):
|
||||
try:
|
||||
ls.request_document_symbols(f, include_body=False)
|
||||
ls.request_document_symbols(f, include_body=True)
|
||||
except Exception as e:
|
||||
log.error(f"Failed to index {f}, continuing.")
|
||||
collected_exceptions.append(e)
|
||||
files_failed.append(f)
|
||||
if (i + 1) % 10 == 0:
|
||||
ls.save_cache()
|
||||
ls.save_cache()
|
||||
click.echo(f"Symbols saved to {ls.cache_path}")
|
||||
collected_exceptions: list[Exception] = []
|
||||
files_failed = []
|
||||
language_file_counts = collections.defaultdict(lambda: 0)
|
||||
for i, f in enumerate(tqdm(files, desc="Indexing")):
|
||||
try:
|
||||
ls = ls_mgr.get_language_server(f)
|
||||
ls.request_document_symbols(f, include_body=False)
|
||||
ls.request_document_symbols(f, include_body=True)
|
||||
language_file_counts[ls.language] += 1
|
||||
except Exception as e:
|
||||
log.error(f"Failed to index {f}, continuing.")
|
||||
collected_exceptions.append(e)
|
||||
files_failed.append(f)
|
||||
if (i + 1) % 10 == 0:
|
||||
ls_mgr.save_all_caches()
|
||||
language_file_counts = {k.value: v for k, v in language_file_counts.items()}
|
||||
click.echo(f"Indexed files per language: {dict_string(language_file_counts, brackets=None)}")
|
||||
ls_mgr.save_all_caches()
|
||||
|
||||
if len(files_failed) > 0:
|
||||
os.makedirs(os.path.dirname(log_file), exist_ok=True)
|
||||
|
||||
Reference in new issue
Block a user