code: def set_providers(cls, i):
      if i not in cls.providers:
          cls.providers[i] = set()
          for j in neighbors(cls.G, i):
              e = cls.G.edges[(i, j)]
              if e["type"] == "transit":
                  customer = int(e["customer"])
                  if i == customer:
                      cls.set_providers(j)
                      cls.providers[i] = cls.providers[i].union(
                          cls.providers[j]
                      )
                      cls.providers[i].add(j)
                  elif j != customer:
                      raise ValueError(
                          "Inconsistent data in the graph edge attributes"
                      )
  
file_path: networkx/networkx/generators/tests/test_internet_as_graphs.py
imports: from pytest import approx
  from networkx import is_connected, neighbors
  from networkx.generators.internet_as_graphs import random_internet_as_graph
label_desc: Use image node_id 3 for calling the TestInternetASTopology obj's underlying member method code with example usage: obj.set_providers(cls, i) without return types