MCPcopy Create free account
hub / github.com/easy-graph/Easy-Graph / add_edge

Method add_edge

easygraph/readwrite/graphml.py:924–963  ·  view source on GitHub ↗

Add an edge to the graph.

(self, G, edge_element, graphml_keys)

Source from the content-addressed store, hash-verified

922 self.make_graph(graph_xml, graphml_keys, defaults, G)
923
924 def add_edge(self, G, edge_element, graphml_keys):
925 """Add an edge to the graph."""
926 # warn on finding unsupported ports tag
927 ports = edge_element.find(f"{{{self.NS_GRAPHML}}}port")
928 if ports is not None:
929 warnings.warn("GraphML port tag not supported.")
930
931 # raise error if we find mixed directed and undirected edges
932 directed = edge_element.get("directed")
933 if G.is_directed() and directed == "false":
934 msg = "directed=false edge found in directed graph."
935 raise eg.EasyGraphError(msg)
936 if (not G.is_directed()) and directed == "true":
937 msg = "directed=true edge found in undi rected graph."
938 raise eg.EasyGraphError(msg)
939
940 source = self.node_type(edge_element.get("source"))
941 target = self.node_type(edge_element.get("target"))
942 data = self.decode_data_elements(graphml_keys, edge_element)
943 # GraphML stores edge ids as an attribute
944 # EasyGraph uses them as keys in multigraphs too if no key
945 # attribute is specified
946 edge_id = edge_element.get("id")
947 if edge_id:
948 # self.edge_ids is used by `make_graph` method for non-multigraphs
949 self.edge_ids[source, target] = edge_id
950 try:
951 edge_id = self.edge_key_type(edge_id)
952 except ValueError: # Could not convert.
953 pass
954 else:
955 edge_id = data.get("key")
956
957 if G.has_edge(source, target):
958 # mark this as a multigraph
959 self.multigraph = True
960
961 # Use add_edges_from to avoid error with add_edge when `'key' in data`
962 # Note there is only one edge here...
963 G.add_edges_from([(source, target, edge_id, data)])
964
965 def decode_data_elements(self, graphml_keys, obj_xml):
966 """Use the key information to decode the data XML if present."""

Callers 1

make_graphMethod · 0.95

Calls 4

decode_data_elementsMethod · 0.95
is_directedMethod · 0.45
has_edgeMethod · 0.45
add_edges_fromMethod · 0.45

Tested by

no test coverage detected