This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Julian
Recipients Julian
Date 2011-06-30.00:03:09
SpamBayes Score 1.5590048e-09
Marked as misclassified No
Message-id <1309392190.89.0.80399053449.issue12445@psf.upfronthosting.co.za>
In-reply-to
Content
dict view values() objects are missing tp_richcmp and tp_as_sequence, and the tests for those were incomplete, which means that on 2.7 and 3.2 (and on current head) viewvalues / values objects don't compare correctly. Without indication, I assume this is not the desired behavior.

Looks like the cause is that the dictview_richcompare function was written to expect a set-like object, and nothing was written for values. I've modified it to accept any view object and do the appropriate check.

One thing I'm unsure of, which I'm sure one of you will help with, is what the desired behavior is on what values() view objects actually *should* be equal to. Being that there isn't a multiset object, and that I couldn't find any resource, I assumed that they only should be equal to other values() objects, not any of the other (ordered) containers. If that's incorrect, or if I need to discuss that on the mailing list, please let me know.

A patch to fix both is attached with the correction to the unit test, hope I did this correctly. I assume this needs to be backported to 2.7, but I figured I'd ask about that first. (Test suite runs without errors on current 3.3 head with this patch for me).

dictview_richcompare also needs unit tests for the NotImplemented error that it should return, but I didn't want to convolute this patch, please let me know if I should put that in here, or file another ticket, or neither.

Thanks!
History
Date User Action Args
2011-06-30 00:03:11Juliansetrecipients: + Julian
2011-06-30 00:03:10Juliansetmessageid: <1309392190.89.0.80399053449.issue12445@psf.upfronthosting.co.za>
2011-06-30 00:03:10Julianlinkissue12445 messages
2011-06-30 00:03:09Juliancreate