Skip to content

Commit 480f9d2

Browse files
committed
fix: lazy load optional Oracle dependency
Signed-off-by: Sumanth Kamenani <skamenan@redhat.com>
1 parent 6d35450 commit 480f9d2

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

  • src/llama_stack/providers/remote/vector_io/oci

src/llama_stack/providers/remote/vector_io/oci/oci26ai.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
# the root directory of this source tree.
66

77
import heapq
8+
import importlib
89
import json
910
from array import array
1011
from typing import Any
1112

1213
import numpy as np
13-
import oracledb
1414
from numpy.typing import NDArray
1515

1616
from llama_stack.core.storage.kvstore import kvstore_impl
@@ -53,6 +53,13 @@
5353
OPENAI_VECTOR_STORES_FILES_CONTENTS_PREFIX = f"openai_vector_stores_files_contents:oci26ai:{VERSION}::"
5454

5555

56+
def _load_oracledb() -> Any:
57+
try:
58+
return importlib.import_module("oracledb")
59+
except ImportError as e:
60+
raise ImportError("Failed to import oracledb. Install the OCI extra to use the OCI vector IO provider.") from e
61+
62+
5663
def normalize_embedding(embedding: np.typing.NDArray) -> np.typing.NDArray:
5764
"""
5865
Normalize an embedding vector to unit length (L2 norm).
@@ -424,7 +431,7 @@ async def delete(self):
424431
with self.connection.cursor() as cursor:
425432
cursor.execute(f"DROP TABLE IF EXISTS {self.table_name}")
426433
logger.info("Dropped table: {self.table_name}")
427-
except oracledb.DatabaseError as e:
434+
except _load_oracledb().DatabaseError as e:
428435
logger.error(f"Error dropping table {self.table_name}: {e}")
429436
raise
430437

@@ -466,6 +473,7 @@ async def initialize(self) -> None:
466473
self.kvstore = await kvstore_impl(self.config.persistence)
467474
await self.initialize_openai_vector_stores()
468475

476+
oracledb = _load_oracledb()
469477
try:
470478
self.connection = oracledb.connect(
471479
user=self.config.user,

0 commit comments

Comments
 (0)