The use case is to run tens of thousands of images without having to keep the entire list of patterns in memory. The experience has shown that even if the images are not cached, there is a significant memory being used by the patterns being maintained in memory. A circular list (which i also have) do not do the trick. So of course I raise an exception from my generator and stop when all patterns have been pushed, but anybody that is experimenting with generators, and make a mistake of messing up the number of patterns or runs to do in a topo.sim.run(), will have the weights (which may have taken hours or days to train) to be wiped-out and become NaN which is an extremely frustrating experience and will have to dig deep to find out why. So the issue i would most care about is not necessarily returning the None, as much as that the network state is completely and silently wiped out by the existing assignment.