The attached patch is a first version of the change discussed on python-dev this and last week: It replaces UnicodeDecodeErrors raised during == and != compares of Unicode and other objects with a new UnicodeWarning. All other comparisons continue to raise exceptions. Exceptions other than UnicodeDecodeErrors are also left untouched. The documentation part of the patch is still incomplete. Suggestions are welcome. Due to the change to only the == and != comparison operators, Unicode objects had to grow an implementation for rich comparisons (which now replaces the old tp_compare slot). Tests all pass. Aside: During testing I found that the warning registry defaults to only issueing warnings once per module and line number. I suppose this is enough for debugging code, but it feels weird when trying things in the interactive session, as you only get the warnings once in that context (and for the whole session), regardless of the fact that you're entereing new lines of code all the time. Maybe something to change for Python 2.6.
Logged In: YES user_id=4771 Getting rid of the special case for unicodes in default_3way_compare() - this alone would give the whole patch a +1 from me :-) Looks good to me.
Logged In: YES user_id=33168 I don't know the intricasies of rich comparisons, but this looks pretty good. There are some typos: silcence (drop the first c, comment in unicodeobject.c). I think the doc (Doc/lib/libexcs.tex) is missing an \end{excdesc}. In Misc/NEWS, "can be then filtered" is awkward, drop the 'then'. Misc/NEWS should mention the new public API PyUnicode_RichCompare (and point out that UnicodeWarning is new). Please check this in ASAP and report to python-dev. That way if there are any issues, we can try to resolve them quickly. People are more likely to review the checkin the patch on SF. Improving warnings in 2.6 would definitely be nice.