It isn't really stringiness that matters, it is that you have to terminate even though you still have an iterable container.
Guido had at least a start in Searchable, back when ABC were still in the sandbox:
Have to disagree here. An object cannot know in general whether a flattener wants to split it or not. That is an application dependent decision. A better answer is be able to tell the flattener what should be considered atomic in a given circumstance.