[Python-checkins] r76831 - in python/trunk: Lib/test/test_unicode.py Misc/NEWS Objects/unicodeobject.c
r.david.murray
python-checkins at python.org
Mon Dec 14 17:28:26 CET 2009
Author: r.david.murray
Date: Mon Dec 14 17:28:26 2009
New Revision: 76831
Log:
Issue #1680159: unicode coercion during an 'in' operation was masking
any errors that might occur during coercion of the left operand and
turning them into a TypeError with a message text that was confusing in
the given context. This patch lets any errors through, as was already
done during coercion of the right hand side.
Modified:
python/trunk/Lib/test/test_unicode.py
python/trunk/Misc/NEWS
python/trunk/Objects/unicodeobject.c
Modified: python/trunk/Lib/test/test_unicode.py
==============================================================================
--- python/trunk/Lib/test/test_unicode.py (original)
+++ python/trunk/Lib/test/test_unicode.py Mon Dec 14 17:28:26 2009
@@ -344,7 +344,8 @@
# If the following fails either
# the contains operator does not propagate UnicodeErrors or
# someone has changed the default encoding
- self.assertRaises(UnicodeError, 'g\xe2teau'.__contains__, u'\xe2')
+ self.assertRaises(UnicodeDecodeError, 'g\xe2teau'.__contains__, u'\xe2')
+ self.assertRaises(UnicodeDecodeError, u'g\xe2teau'.__contains__, '\xe2')
self.assertTrue(u'' in '')
self.assertTrue('' in u'')
@@ -375,6 +376,7 @@
self.assertTrue(u'asdf' not in u'')
self.assertRaises(TypeError, u"abc".__contains__)
+ self.assertRaises(TypeError, u"abc".__contains__, object())
def test_formatting(self):
string_tests.MixinStrUnicodeUserStringTest.test_formatting(self)
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Mon Dec 14 17:28:26 2009
@@ -12,6 +12,9 @@
Core and Builtins
-----------------
+- Issue #1680159: unicode coercion during an 'in' operation no longer masks
+ the underlying error when the coercion fails for the left hand operand.
+
- Issue #7491: Metaclass's __cmp__ method was ignored.
- Issue #7466: segmentation fault when the garbage collector is called
Modified: python/trunk/Objects/unicodeobject.c
==============================================================================
--- python/trunk/Objects/unicodeobject.c (original)
+++ python/trunk/Objects/unicodeobject.c Mon Dec 14 17:28:26 2009
@@ -6502,8 +6502,6 @@
/* Coerce the two arguments */
sub = PyUnicode_FromObject(element);
if (!sub) {
- PyErr_SetString(PyExc_TypeError,
- "'in <string>' requires string as left operand");
return -1;
}
More information about the Python-checkins
mailing list