Skip to content

Commit 4a5b9f7

Browse files
feat: Improved error handling for index, bumped SDK to 0.15.0 (#15)
Improved error handling for index, bumped SDK to 0.15.0
1 parent 0d9dc47 commit 4a5b9f7

File tree

6 files changed

+72
-68
lines changed

6 files changed

+72
-68
lines changed

pdm.lock

Lines changed: 38 additions & 38 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ dependencies = [
1515
"python-magic~=0.4.27",
1616
"python-dotenv==1.0.0",
1717
# LLM Triad
18-
"unstract-adapters~=0.4.0",
18+
"unstract-adapters~=0.4.1",
1919
"llama-index==0.9.28",
2020
"tiktoken~=0.4.0",
2121
"transformers==4.37.0",

src/unstract/sdk/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "0.14.0"
1+
__version__ = "0.15.0"
22

33

44
def get_sdk_version():

src/unstract/sdk/exceptions.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
from typing import Any, Optional
1+
class SdkError(Exception):
2+
DEFAULT_MESSAGE = "Something went wrong"
23

4+
def __init__(self, message: str = DEFAULT_MESSAGE):
5+
super().__init__(message)
6+
# Make it user friendly wherever possible
7+
self.message = message
38

4-
class SdkException(Exception):
5-
def __init__(
6-
self, *args: Any, user_message: Optional[str] = None, **kwargs: Any
7-
) -> None:
8-
super().__init__(*args, **kwargs)
9-
self._user_message = user_message
10-
11-
@property
12-
def user_message(self) -> Optional[str]:
13-
return self._user_message
9+
def __str__(self) -> str:
10+
return self.message

src/unstract/sdk/index.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
from llama_index import Document, StorageContext, VectorStoreIndex
44
from llama_index.node_parser import SimpleNodeParser
55
from llama_index.vector_stores import VectorStoreQuery, VectorStoreQueryResult
6+
from unstract.adapters.exceptions import AdapterError
67
from unstract.adapters.x2text.x2text_adapter import X2TextAdapter
78

89
from unstract.sdk.constants import LogLevel, ToolEnv
910
from unstract.sdk.embedding import ToolEmbedding
10-
from unstract.sdk.exceptions import SdkException
11+
from unstract.sdk.exceptions import SdkError
1112
from unstract.sdk.tool.base import BaseTool
1213
from unstract.sdk.utils import ToolUtils
1314
from unstract.sdk.utils.service_context import ServiceContext
@@ -30,7 +31,7 @@ def get_text_from_index(
3031
self.tool.stream_log(
3132
f"Error loading {embedding_type}", level=LogLevel.ERROR
3233
)
33-
raise SdkException(f"Error loading {embedding_type}")
34+
raise SdkError(f"Error loading {embedding_type}")
3435
embedding_dimension = embedd_helper.get_embedding_length(embedding_li)
3536

3637
vdb_helper = ToolVectorDB(
@@ -45,7 +46,7 @@ def get_text_from_index(
4546
self.tool.stream_log(
4647
f"Error loading {vector_db}", level=LogLevel.ERROR
4748
)
48-
raise SdkException(f"Error loading {vector_db}")
49+
raise SdkError(f"Error loading {vector_db}")
4950

5051
try:
5152
self.tool.stream_log(f">>> Querying {vector_db}...")
@@ -59,7 +60,7 @@ def get_text_from_index(
5960
self.tool.stream_log(
6061
f"Error querying {vector_db}: {e}", level=LogLevel.ERROR
6162
)
62-
raise SdkException(f"Error querying {vector_db}: {e}")
63+
raise SdkError(f"Error querying {vector_db}: {e}")
6364

6465
n: VectorStoreQueryResult = vector_db_li.query(query=q)
6566
if len(n.nodes) > 0:
@@ -134,13 +135,18 @@ def index_file(
134135

135136
self.tool.stream_log("Extracting text from input file")
136137
full_text = []
137-
x2text = X2Text(tool=self.tool)
138-
x2text_adapter_inst: X2TextAdapter = x2text.get_x2text(
139-
adapter_instance_id=x2text_adapter
140-
)
141-
extracted_text = x2text_adapter_inst.process(
142-
input_file_path=file_path, output_file_path=output_file_path
143-
)
138+
extracted_text = ""
139+
try:
140+
x2text = X2Text(tool=self.tool)
141+
x2text_adapter_inst: X2TextAdapter = x2text.get_x2text(
142+
adapter_instance_id=x2text_adapter
143+
)
144+
extracted_text = x2text_adapter_inst.process(
145+
input_file_path=file_path, output_file_path=output_file_path
146+
)
147+
except AdapterError as e:
148+
# Wrapping AdapterErrors with SdkError
149+
raise SdkError(str(e)) from e
144150
full_text.append(
145151
{
146152
"section": "full",
@@ -173,7 +179,7 @@ def index_file(
173179
self.tool.stream_log(
174180
f"Error loading {embedding_type}", level=LogLevel.ERROR
175181
)
176-
raise SdkException(f"Error loading {embedding_type}")
182+
raise SdkError(f"Error loading {embedding_type}")
177183

178184
embedding_dimension = embedd_helper.get_embedding_length(embedding_li)
179185
vector_db_li = vdb_helper.get_vector_db(
@@ -184,7 +190,7 @@ def index_file(
184190
self.tool.stream_log(
185191
f"Error loading {vector_db}", level=LogLevel.ERROR
186192
)
187-
raise SdkException(f"Error loading {vector_db}")
193+
raise SdkError(f"Error loading {vector_db}")
188194

189195
q = VectorStoreQuery(
190196
query_embedding=embedding_li.get_query_embedding(" "),
@@ -214,7 +220,7 @@ def index_file(
214220
f"Error deleting nodes for {doc_id}: {e}",
215221
level=LogLevel.ERROR,
216222
)
217-
raise SdkException(f"Error deleting nodes for {doc_id}: {e}")
223+
raise SdkError(f"Error deleting nodes for {doc_id}: {e}")
218224
doc_id_not_found = True
219225

220226
if doc_id_not_found:
@@ -271,7 +277,7 @@ def index_file(
271277
f"Error adding nodes to vector db: {e}",
272278
level=LogLevel.ERROR,
273279
)
274-
raise SdkException(f"Error adding nodes to vector db: {e}")
280+
raise SdkError(f"Error adding nodes to vector db: {e}")
275281
self.tool.stream_log("Added nodes to vector db")
276282

277283
self.tool.stream_log("Done indexing file")

src/unstract/sdk/vector_db.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
from unstract.adapters.constants import Common
66
from unstract.adapters.vectordb import adapters
77
from unstract.adapters.vectordb.constants import VectorDbConstants
8+
89
from unstract.sdk.adapters import ToolAdapter
910
from unstract.sdk.constants import LogLevel, ToolEnv, ToolSettingsKey
10-
from unstract.sdk.exceptions import SdkException
11+
from unstract.sdk.exceptions import SdkError
1112
from unstract.sdk.platform import PlatformHelper
1213
from unstract.sdk.tool.base import BaseTool
1314

@@ -34,7 +35,7 @@ def __get_org_id(self) -> str:
3435
platform_details = platform_helper.get_platform_details()
3536
if not platform_details:
3637
# Errors are logged by the SDK itself
37-
raise SdkException("Error getting platform details")
38+
raise SdkError("Error getting platform details")
3839
account_id = platform_details.get("organization_id")
3940
return account_id
4041

0 commit comments

Comments
 (0)