code: def rings_full_data(self):
          
          #close circuit breakers
          for circ_breaker in self.circuit_breakers():
              if not circ_breaker.status == 'closed':
                  circ_breaker.close()
                  logger.info('Circuit breakers were closed in order to find MV '
                              'rings')
          #find True rings (cycles from station through breaker and back to station)
          for ring_nodes in nx.cycle_basis(self._graph, root=self._station):
              edges_ring = []
              for node in ring_nodes:
                  for edge in self.graph_branches_from_node(node):
                      nodes_in_the_branch = self.graph_nodes_from_branch(edge[1]['branch'])
                      if (nodes_in_the_branch[0] in ring_nodes and
                          nodes_in_the_branch[1] in ring_nodes
                          ):
                          if not edge[1]['branch'] in edges_ring:
                              edges_ring.append(edge[1]['branch'])
              yield (edges_ring[0].ring,edges_ring,ring_nodes)
docs: Returns a generator for iterating over each ring
  
          Yields
          ------
              For each ring, tuple composed by ring ID, list of edges, list of nodes
          Notes
          -----
              Circuit breakers must be closed to find rings, this is done automatically.