code: def test_cut_same_labels(self):
      G1 = nx.Graph(
          [
              (0, 1),
              (1, 2),
              (10, 0),
              (10, 3),
              (10, 4),
              (10, 5),
              (10, 6),
              (4, 1),
              (5, 3),
          ]
      )
      mapped = {
          0: "a",
          1: "b",
          2: "c",
          3: "d",
          4: "e",
          5: "f",
          6: "g",
          10: "k",
      }
      G2 = nx.relabel_nodes(G1, mapped)
      l1 = {n: "blue" for n in G1.nodes()}
      l2 = {n: "blue" for n in G2.nodes()}
  
      gparams = _GraphParameters(
          G1, G2, l1, l2, nx.utils.groups(l1), nx.utils.groups(l2), None
      )
      sparams = _StateParameters(
          {0: "a", 1: "b", 2: "c", 3: "d"},
          {"a": 0, "b": 1, "c": 2, "d": 3},
          {4, 5},
          None,
          {6},
          None,
          {"e", "f"},
          None,
          {"g"},
          None,
      )
  
      u, v = 10, "k"
      assert not _cut_PT(u, v, gparams, sparams)
  
      # Change intersection between G1[u] and T1, so it's not the same as the one between G2[v] and T2
      G1.remove_edge(u, 4)
      assert _cut_PT(u, v, gparams, sparams)
  
      # Compensate in G2
      G2.remove_edge(v, mapped[4])
      assert not _cut_PT(u, v, gparams, sparams)
  
      # Change intersection between G2[v] and T2_tilde, so it's not the same as the one between G1[u] and T1_tilde
      G2.remove_edge(v, mapped[6])
      assert _cut_PT(u, v, gparams, sparams)
  
      # Compensate in G1
      G1.remove_edge(u, 6)
      assert not _cut_PT(u, v, gparams, sparams)
  
      # Add disconnected nodes, which will form the new Ti_out
      G1.add_nodes_from([6, 7, 8])
      G2.add_nodes_from(["g", "y", "z"])
      sparams.T1_tilde.update({6, 7, 8})
      sparams.T2_tilde.update({"g", "y", "z"})
  
      l1 = {n: "blue" for n in G1.nodes()}
      l2 = {n: "blue" for n in G2.nodes()}
      gparams = _GraphParameters(
          G1, G2, l1, l2, nx.utils.groups(l1), nx.utils.groups(l2), None
      )
  
      assert not _cut_PT(u, v, gparams, sparams)
  
      # Add some new nodes to the mapping
      sparams.mapping.update({6: "g", 7: "y"})
      sparams.reverse_mapping.update({"g": 6, "y": 7})
  
      # Add more nodes to T1, T2.
      G1.add_edges_from([(6, 20), (7, 20), (6, 21)])
      G2.add_edges_from([("g", "i"), ("g", "j"), ("y", "j")])
  
      sparams.mapping.update({20: "j", 21: "i"})
      sparams.reverse_mapping.update({"j": 20, "i": 21})
      sparams.T1.update({20, 21})
      sparams.T2.update({"i", "j"})
      sparams.T1_tilde.difference_update({6, 7})
      sparams.T2_tilde.difference_update({"g", "y"})
  
      assert not _cut_PT(u, v, gparams, sparams)
  
      # Add nodes from the new T1 and T2, as neighbors of u and v respectively
      G1.add_edges_from([(u, 20), (u, 21)])
      G2.add_edges_from([(v, "i"), (v, "j")])
      l1 = {n: "blue" for n in G1.nodes()}
      l2 = {n: "blue" for n in G2.nodes()}
      gparams = _GraphParameters(
          G1, G2, l1, l2, nx.utils.groups(l1), nx.utils.groups(l2), None
      )
  
      assert not _cut_PT(u, v, gparams, sparams)
  
      # Change the edges, maintaining the G1[u]-T1 intersection
      G1.remove_edge(u, 20)
      G1.add_edge(u, 4)
      assert not _cut_PT(u, v, gparams, sparams)
  
      # Connect u to 8 which is still in T1_tilde
      G1.add_edge(u, 8)
      assert _cut_PT(u, v, gparams, sparams)
  
      # Same for v and z, so that inters(G1[u], T1out) == inters(G2[v], T2out)
      G2.add_edge(v, "z")
      assert not _cut_PT(u, v, gparams, sparams)
  
imports: import itertools
  import pytest
  import networkx
  from networkx import vf2pp_is_isomorphic, vf2pp_isomorphism
  from networkx.algorithms.isomorphism.vf2pp import _consistent_PT, _cut_PT, _feasibility, _find_candidates, _find_candidates_Di, _GraphParameters, _initialize_parameters, _matching_order, _restore_Tinout, _restore_Tinout_Di, _StateParameters, _update_Tinout
label_desc: Use image node_id 7 for calling the TestGraphISOFeasibility obj's underlying member method code with example usage: obj.test_cut_same_labels() without return types