Merge pull request #769 from oraios/global-indexing-loop

Use a single loop over source files to index project
This commit is contained in:
Dominik Jain authored and GitHub committed 2025-11-17 16:22:31 +01:00
commit 600080c68f
1 file changed
+20 -17
+20 -17
View File
@@ -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)