On 5/27/08, Benji York wrote:
Guido van Rossum wrote:
Armin Ronacher wrote:
Basically the problematic situation
with iterable strings is something like
flatten function that flattens out every iterable object except of
I'm not against this, but so far I've not been able to come up with a good set of methods to endow the String ABC with. Another problem is that not everybody draws the line in the same place -- how should instances of bytes, bytearray, array.array, memoryview (buffer in 2.6) be treated?
Maybe the opposite approach would be more fruitful. Flattening is about removing nested "containers", so perhaps there should be an ABC that things like lists and tuples provide, but strings don't. No idea what that might be.
It isn't really stringiness that matters, it is that you have to terminate even though you still have an iterable container.
The test is roughly (1==len(v) and v==v), except that you want to stop a layer sooner.
Guido had at least a start in Searchable, back when ABC were still in the sandbox: http://svn.python.org/view/sandbox/trunk/abc/abc.py?rev=55321&view=auto
Searchable represented the fact that (x in c) =/=> (x in iter(c)) because of sequence searches like ("Error" in results)