Tentatively I think I would find a new iterator probably more easy to explain than one that changed forms (also we would need to note new behavior changes in a version).
How about a
with_dictionary:
This way it would be more explicit.
I would think most of our users wouldn’t know what an iterable was, nor would want to expect anyone to.
Making the conscious choice of how you want to iterate seems to be a good idea to avoid surprises, plus that way the return signature is always the same.