code: def test_graph_edit_distance_node_match(self):
      G1 = cycle_graph(5)
      G2 = cycle_graph(5)
      for n, attr in G1.nodes.items():
          attr["color"] = "red" if n % 2 == 0 else "blue"
      for n, attr in G2.nodes.items():
          attr["color"] = "red" if n % 2 == 1 else "blue"
      assert graph_edit_distance(G1, G2) == 0
      assert (
          graph_edit_distance(
              G1,
              G2,
              node_match=lambda n1, n2: n1["color"] == n2["color"],
          )
          == 1
      )
  
imports: import pytest
  import networkx
  from networkx.algorithms.similarity import graph_edit_distance, optimal_edit_paths, optimize_graph_edit_distance
  from networkx.generators.classic import circular_ladder_graph, cycle_graph, path_graph, wheel_graph
label_desc: Use image node_id 4 for calling the TestSimilarity obj's underlying member method code with example usage: obj.test_graph_edit_distance_node_match() without return types