Not at all, I have also been trying to move reporting to a more componentised structure quite similar to what you have linked to above. I've already done this in the Unicef CVSU reports (though that needs to be cleaned up a bit).

To make that work here the `format` method could no longer be a generator, unless instead of returning a `dict` in `DictDataFormatter` we return a generator of `tuple(key, row)` which is much the same anyway.

I'll come back to this later. Thanks for the discussion!