in src/graph_notebook/network/gremlin/GremlinNetwork.py [0:0]
def insert_path_element(self, path, i):
if i == 0:
self.add_vertex(path[i], path_index=0)
return
if type(path[i]) is Edge:
edge = path[i]
path_left = get_id(path[i - 1])
path_right = get_id(path[i + 1])
# If the edge is an object type but its vertices aren't, then the ID contained
# in the edge won't be the same as the ids used to store those two vertices.
# For example, g.V().inE().outV().path().by(valueMap()).by().by(valueMap(true)
# will yield a V, E, V pattern where the first vertex is a dict without T.id, the edge
# will be an Edge object, and the second vertex will be a dict with T.id.
if edge.outV.id == path_left or edge.inV.id == path_right:
from_id = path_left
to_id = path_right
self.add_path_edge(path[i], from_id, to_id)
elif edge.inV.id == path_left or edge.outV.id == path_right:
from_id = path_right
to_id = path_left
self.add_path_edge(path[i], from_id, to_id)
else:
from_id = path_left
to_id = path_right
self.add_blank_edge(from_id, to_id, edge.id, label=edge.label)
return
else:
from_id = get_id(path[i - 1])
self.add_vertex(path[i], path_index=i)
last_path = path[i - 1]
if type(last_path) is not Edge:
if type(last_path) is dict:
if Direction.IN not in last_path and 'IN' not in last_path:
self.add_blank_edge(from_id, get_id(path[i]))
else:
self.add_blank_edge(from_id, get_id(path[i]))