Skip to content

Commit

Permalink
Add LoC metadata to stitched nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
gdrosos committed Jun 5, 2022
1 parent 6233ff1 commit 4629d85
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 8 deletions.
7 changes: 6 additions & 1 deletion stitcher/cg.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,14 @@ def iterate_mods(d, internal):
for cls in info["metadata"]["superClasses"]:
super_cls.append(Node(cls, product=self.product,
version=self.version))
first = None
last = None
if info["metadata"].get("first", None) != None:
first = info["metadata"].get("first")
last = info["metadata"].get("last")

node = Node(info["namespace"], product=self.product,
super_cls=super_cls, version=self.version)
super_cls=super_cls, version=self.version, first=first, last=last)

self.id_to_node[id] = node
if node.get_modname():
Expand Down
9 changes: 8 additions & 1 deletion stitcher/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@
# under the License.
#
class Node:
def __init__(self, uri_str, product=None, super_cls=None, version=None):
def __init__(self, uri_str, product=None, super_cls=None, version=None, first=None, last=None):
self.uri_str = uri_str
self.product = product
self.version = version
self.super_cls = super_cls or []
self.first = first
self.last=last

if len(uri_str.split("/")) == 5:
self.internal = False
Expand Down Expand Up @@ -66,6 +68,11 @@ def get_callable(self):
def get_class_hier(self):
return self.super_cls

def get_metadata(self):
return {"first": self.first,
"last":self.last
}

def to_string(self, simple=False):
uri = ""
if not simple:
Expand Down
14 changes: 8 additions & 6 deletions stitcher/stitcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def __init__(self, call_graph_paths, simple):
"edges": [],
"nodes": {}
}
self.node_to_metadata = {}

self.nodes_cnt = 0
self.edges_cnt = 0
Expand All @@ -53,8 +54,8 @@ def stitch(self):
self.resolved_cnt += len(internal_calls)

for src, dst in internal_calls:
self._assign_id(src.to_string(self.simple))
self._assign_id(dst.to_string(self.simple))
self._assign_id(src.to_string(self.simple), src.get_metadata())
self._assign_id(dst.to_string(self.simple), dst.get_metadata())
self.stitched["edges"].append([
self.node_to_id[src.to_string(self.simple)],
self.node_to_id[dst.to_string(self.simple)],
Expand All @@ -65,16 +66,16 @@ def stitch(self):
self.edges_cnt_no_builtin -= 1
for resolved in self._resolve(dst):
self.resolved_cnt += 1
self._assign_id(src.to_string(self.simple))
self._assign_id(resolved.to_string(self.simple))
self._assign_id(src.to_string(self.simple), src.get_metadata())
self._assign_id(resolved.to_string(self.simple), resolved.get_metadata())
self.stitched["edges"].append([
self.node_to_id[src.to_string(self.simple)],
self.node_to_id[resolved.to_string(self.simple)],
])

self.nodes_cnt = self.id_cnt
for node, id in self.node_to_id.items():
self.stitched["nodes"][id] = {"URI": node, "metadata": {}}
self.stitched["nodes"][id] = {"URI": node, "metadata": self.node_to_metadata[node]}

def output(self):
return self.stitched
Expand Down Expand Up @@ -148,7 +149,8 @@ def _err_and_exit(self, msg):
print (msg)
sys.exit(1)

def _assign_id(self, node_str):
def _assign_id(self, node_str, metadata):
if self.node_to_id.get(node_str, None) is None:
self.node_to_id[node_str] = self.id_cnt
self.node_to_metadata[node_str] = metadata
self.id_cnt += 1

0 comments on commit 4629d85

Please sign in to comment.