These two bug reports are contradictory: I don't know how to fix one without breaking the other. If this bug is really causing paginate to fetch all records for everybody, it will have to take priority, but I'd like to find a better solution.
Refined solution in f6adc7aff8bf. I require .getitem, which is a necessary but not sufficient condition for a sliceable object. If the actual slicing fails with "TypeError: unhashable type". as reported in #59 and observed with some other unhashable types, I catch that and raise the incompatible-collection-type error so that the user will know what's wrong.