In case anyone else runs into this. What it turns out it was is that to implement an iterable of any kind iter needs to return self and you also need to implement a next function that returns the actual data.
This may be clear to anyone familiar with iterators but wasn’t immediately obvious to me just from the iterable dataset documentation which only spoke of overwriting iter