Skip to content

Commit 8ee011d

Browse files
committed
updated error handling for parser
1 parent 51b02b5 commit 8ee011d

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

src/utils/metakg/parser.py

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,17 @@ class MetaKGParser:
1313
get_url_timeout = 60
1414
metakg_errors = None
1515

16-
def get_non_TRAPI_metadatas(self, data=None, extra_data=None, url=None): # *** TEST THIS FOR BREAK POINTS ***
16+
def get_non_TRAPI_metadatas(self, data=None, extra_data=None, url=None):
17+
# Error Handling
18+
if not data and not url:
19+
raise ValueError("Either data or url must be provided.")
1720
if data:
1821
parser = API(smartapi_doc=data)
1922
elif url:
2023
parser = API(url=url)
21-
else:
22-
return [] # **** ERROR HANDLE THIS ****
24+
else:
25+
raise ValueError("Error getting metadata from provided data or url.")
26+
2327
mkg = self.extract_metakgedges(parser.metadata["operations"], extra_data=extra_data)
2428
no_nodes = len({x["subject"] for x in mkg} | {x["object"] for x in mkg})
2529
no_edges = len({x["predicate"] for x in mkg})
@@ -28,12 +32,14 @@ def get_non_TRAPI_metadatas(self, data=None, extra_data=None, url=None): # *** T
2832

2933
def get_TRAPI_metadatas(self, data=None, extra_data=None, url=None):
3034
ops = []
35+
if not data and not url:
36+
raise ValueError("Either data or url must be provided.")
3137
if data:
3238
metadata_list = self.get_TRAPI_with_metakg_endpoint(data=data)
3339
elif url:
3440
metadata_list = self.get_TRAPI_with_metakg_endpoint(url=url)
3541
else:
36-
return [] # **** ERROR HANDLE THIS ****
42+
raise ValueError("Error getting metadata from provided data or url.")
3743

3844
count_metadata_list = len(metadata_list)
3945
self.metakg_errors = {}
@@ -45,21 +51,24 @@ def get_TRAPI_metadatas(self, data=None, extra_data=None, url=None):
4551

4652
return self.extract_metakgedges(ops, extra_data=extra_data)
4753

48-
def get_TRAPI_with_metakg_endpoint(self, data=None, url=None): # TEST THIS FOR BREAK POINTS
49-
# Use the URL if provided, otherwise fall back to the 'data' argument
50-
if data:
51-
parser = API(data)
52-
elif url:
53-
parser = API(url=url)
54-
55-
metadatas = []
56-
parser = API(data)
57-
metadata = parser.metadata
58-
_paths = metadata.get("paths", {})
59-
_team = metadata.get("x-translator", {}).get("team")
60-
if "/meta_knowledge_graph" in _paths and "/query" in _paths and _team:
61-
metadatas.append(metadata)
62-
return metadatas
54+
def get_TRAPI_with_metakg_endpoint(self, data=None, url=None):
55+
if not data and not url:
56+
raise ValueError("Either data or url must be provided.")
57+
try:
58+
# Initialize API with either data or URL
59+
parser = API(smartapi_doc=data) if data else API(url=url)
60+
metadata = parser.metadata
61+
_paths = metadata.get("paths", {})
62+
_team = metadata.get("x-translator", {}).get("team")
63+
64+
# Check for required TRAPI paths
65+
if "/meta_knowledge_graph" in _paths and "/query" in _paths and _team:
66+
print("TRAPI metadata found.")
67+
return [metadata]
68+
else:
69+
return []
70+
except Exception as e:
71+
raise ValueError(f"Error getting TRAPI metadata: {e}")
6372

6473
def construct_query_url(self, server_url):
6574
if server_url.endswith("/"):

0 commit comments

Comments
 (0)