Skip to content

Commit 78c110c

Browse files
committed
fix(cli): minor fixes.
1 parent ca5291b commit 78c110c

File tree

1 file changed

+32
-23
lines changed

1 file changed

+32
-23
lines changed

src/vectorcode/database/chroma0.py

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from vectorcode.database.utils import get_collection_id, hash_file
3737
from vectorcode.subcommands.vectorise import get_uuid
3838

39-
logger = logging.getLogger(name=__name__)
39+
_logger = logging.getLogger(name=__name__)
4040

4141

4242
def __convert_chroma_query_results(
@@ -80,7 +80,7 @@ async def _try_server(base_url: str):
8080
try:
8181
async with httpx.AsyncClient() as client:
8282
response = await client.get(url=heartbeat_url)
83-
logger.debug(f"Heartbeat {heartbeat_url} returned {response=}")
83+
_logger.debug(f"Heartbeat {heartbeat_url} returned {response=}")
8484
if response.status_code == 200:
8585
return True
8686
except (httpx.ConnectError, httpx.ConnectTimeout):
@@ -109,7 +109,7 @@ async def _start_server(configs: Config):
109109
if not os.path.isdir(db_log_path):
110110
os.makedirs(db_log_path)
111111
if not os.path.isdir(db_path):
112-
logger.warning(
112+
_logger.warning(
113113
f"Using local database at {os.path.expanduser('~/.local/share/vectorcode/chromadb/')}.",
114114
)
115115
db_path = os.path.expanduser("~/.local/share/vectorcode/chromadb/")
@@ -119,7 +119,7 @@ async def _start_server(configs: Config):
119119
port = int(s.getsockname()[1])
120120

121121
server_url = f"http://127.0.0.1:{port}"
122-
logger.warning(f"Starting bundled ChromaDB server at {server_url}.")
122+
_logger.warning(f"Starting bundled ChromaDB server at {server_url}.")
123123
env.update({"ANONYMIZED_TELEMETRY": "False"})
124124
process = await asyncio.create_subprocess_exec(
125125
sys.executable,
@@ -151,11 +151,11 @@ class _Chroma0ClientModel:
151151
process: Optional[Process] = None
152152

153153

154-
class Chroma0ClientManager:
155-
singleton: Optional["Chroma0ClientManager"] = None
154+
class _Chroma0ClientManager:
155+
singleton: Optional["_Chroma0ClientManager"] = None
156156
__clients: dict[str, _Chroma0ClientModel]
157157

158-
def __new__(cls) -> "Chroma0ClientManager":
158+
def __new__(cls) -> "_Chroma0ClientManager":
159159
if cls.singleton is None:
160160
cls.singleton = super().__new__(cls)
161161
cls.singleton.__clients = {}
@@ -171,7 +171,7 @@ async def get_client(self, configs: Config, need_lock: bool = True):
171171
if self.__clients.get(project_root) is None:
172172
process = None
173173
if not await _try_server(url):
174-
logger.info(f"Starting a new server at {url}")
174+
_logger.info(f"Starting a new server at {url}")
175175
process = await _start_server(configs)
176176
is_bundled = True
177177

@@ -183,11 +183,11 @@ async def get_client(self, configs: Config, need_lock: bool = True):
183183
lock = None
184184
if self.__clients[project_root].is_bundled and need_lock:
185185
lock = LockManager().get_lock(str(db_path))
186-
logger.debug(f"Locking {db_path}")
186+
_logger.debug(f"Locking {db_path}")
187187
await lock.acquire()
188188
yield self.__clients[project_root].client
189189
if lock is not None:
190-
logger.debug(f"Unlocking {db_log_path}")
190+
_logger.debug(f"Unlocking {db_log_path}")
191191
await lock.release()
192192

193193
def get_processes(self) -> list[Process]:
@@ -196,7 +196,7 @@ def get_processes(self) -> list[Process]:
196196
async def kill_servers(self):
197197
termination_tasks: list[asyncio.Task] = []
198198
for p in self.get_processes():
199-
logger.info(f"Killing bundled chroma server with PID: {p.pid}")
199+
_logger.info(f"Killing bundled chroma server with PID: {p.pid}")
200200
p.terminate()
201201
termination_tasks.append(asyncio.create_task(p.wait()))
202202
await asyncio.gather(*termination_tasks)
@@ -210,11 +210,19 @@ async def _create_client(self, configs: Config) -> AsyncClientAPI:
210210
}
211211
settings.update(valid_settings)
212212
parsed_url = urlparse(configs.db_params["db_url"])
213-
logger.debug(f"Creating chromadb0 client from {db_settings}")
214-
settings["chroma_server_host"] = parsed_url.hostname or "127.0.0.1"
215-
settings["chroma_server_http_port"] = parsed_url.port or 8000
216-
settings["chroma_server_ssl_enabled"] = parsed_url.scheme == "https"
217-
settings["chroma_server_api_default_path"] = parsed_url.path or APIVersion.V2
213+
_logger.debug(f"Creating chromadb0 client from {db_settings}")
214+
settings["chroma_server_host"] = settings.get(
215+
"chroma_server_host", parsed_url.hostname or "127.0.0.1"
216+
)
217+
settings["chroma_server_http_port"] = settings.get(
218+
"chroma_server_http_port", parsed_url.port or 8000
219+
)
220+
settings["chroma_server_ssl_enabled"] = settings.get(
221+
"chroma_server_ssl_enabled", parsed_url.scheme == "https"
222+
)
223+
settings["chroma_server_api_default_path"] = settings.get(
224+
"chroma_server_api_default_path", parsed_url.path or APIVersion.V2
225+
)
218226
settings_obj = Settings(**settings)
219227
return await chromadb.AsyncHttpClient(
220228
settings=settings_obj,
@@ -293,14 +301,15 @@ async def _create_or_get_collection(
293301
"embedding_function": self._configs.embedding_function,
294302
}
295303
db_params = self._configs.db_params
296-
for key in db_params.get("hnsw", {}).keys():
304+
user_hnsw = db_params.get("hnsw", {})
305+
for key in user_hnsw.keys():
297306
meta_field_name: str = key
298307
if not meta_field_name.startswith("hnsw:"):
299308
meta_field_name = f"hnsw:{meta_field_name}"
300-
if db_params.get(key) is not None:
301-
collection_meta[meta_field_name] = db_params[key]
309+
if user_hnsw.get(key) is not None:
310+
collection_meta[meta_field_name] = user_hnsw[key]
302311

303-
async with Chroma0ClientManager().get_client(self._configs, True) as client:
312+
async with _Chroma0ClientManager().get_client(self._configs, True) as client:
304313
collection_id = get_collection_id(collection_path)
305314
if not allow_create:
306315
try:
@@ -349,7 +358,7 @@ def chunk_to_meta(chunk: Chunk) -> chromadb.Metadata:
349358
meta["end"] = chunk.end.row
350359
return meta
351360

352-
async with Chroma0ClientManager().get_client(self._configs) as client:
361+
async with _Chroma0ClientManager().get_client(self._configs) as client:
353362
max_bs = await client.get_max_batch_size()
354363
for batch_start_idx in range(0, len(chunks), max_bs):
355364
batch_chunks = [
@@ -376,7 +385,7 @@ def chunk_to_meta(chunk: Chunk) -> chromadb.Metadata:
376385
return VectoriseStats(add=1)
377386

378387
async def list_collections(self):
379-
async with Chroma0ClientManager().get_client(
388+
async with _Chroma0ClientManager().get_client(
380389
self._configs, need_lock=False
381390
) as client:
382391
result: list[CollectionInfo] = []
@@ -456,6 +465,6 @@ async def delete(self, collection_path: str, file_path: str | Sequence[str]):
456465
)
457466

458467
async def drop(self, collection_path: str):
459-
async with Chroma0ClientManager().get_client(self._configs) as client:
468+
async with _Chroma0ClientManager().get_client(self._configs) as client:
460469
await self._create_or_get_collection(collection_path, False)
461470
await client.delete_collection(get_collection_id(collection_path))

0 commit comments

Comments
 (0)