> This doesn't require this much discussion.

I started all this with that exact thought, ironically.
 
> Just explain why it's beneficial (and we can discuss it) or revert it. Simple as that.

Well, well, it is quite simple (and in the issue report): `array.array`, or anything with the buffer interface, are not supported while they should.

Looking at the code to write a patch, it appeared that the test was unnecessarily restrictive.

> I'm curious why you feel so strong about this.

I could certainly make the same comment, couldn't I ?

I am actually not feeling strong about it. I was initially looking at exposing `rpy2`'s `DataFrame` as a panda `DataFrame`, and while I found a workaround it I thought that the restriction to `list`, `tuple`, `np.ndarray` was not a necessity.

On this end it is looking like the sole mention of the module `array`, or that sequences can exist outside of `list`, `tuple`, or `np.array` triggers a knee-jerk reaction, which made me quite curious (scientist here, can't help poking things when they look unusual). The idea of sequence and mapping protocols, as well as the buffer interface for vector/matrix data, are quite good ideas, I think. Here there was an opportunity to collect empirical evidence about while testing fixed types seems to be preferred, I just happened to have just a little time for it while on the road.

> Maybe using the word "guarantee" was bit too strong on my part. Sorry about that.
>
> I could just as easily write a list class that deletes my entire hard drive on a call to __getitem__ as well or one that segfaults the interpreter. pandas cannot deal with that kind of nonsense nor should it have to. If a user wants to pass those kinds of sequences to pandas then they must deal with the consequences.

Well, the argument was seemingly around guarantees (repeated in the comment), and this called for a counter-example.
Then if we agree that the Python principle that users are consenting adults is followed, the enforcement does not have to be that restrictive. The function `extract_index()` tolerates the mixture of `dict` and sequence, while it does not make much sense, hinting that the initial intent might have been to be on the permissive side (otherwise /why/ this is beneficial would have to be demonstrated).

> I'm not trying to prove anything here and I never said anything about persistence.

The note about persistence concerns generators with `__len__`. While they are sequences (in the sense of ordered collections of items), they do not persist (going through a generator /empties/ it). Nothing consequential but suggesting that a constructor of `DataFrame` could also take such objects.

> Type testing using the ABCs in collections is the equivalent of those two C API calls you mentioned above.

Thanks. I did not know. That's convenient. May be `_is_sequence()` should use them.

> You could add to the documention what you mention above, that would be nice!

Better if someone else than me does it. I am granting (non-exclusive) rights to use the text the documentation.
I can only return to this in a few weeks from now at the earliest.