Hmm, I hadn't considered that use case.  I'm not really sure what the correct behavior is then.  I might expect request comparisons within a cassette to respect the cassette's match_on setting.  Maybe the best thing is to not implement it so that they have to manually compare the requests, since the equality of two requests is hard to define (the whole reason for the matcher system).  For example, the headers between two identical requests almost never match, thanks to the expires headers (timestamp).  In that case, the behavior defined in __eq__ would confuse me.