<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rings_full_data(self):
 """ 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. """

        #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)