[Python-checkins] r54825 - in python/trunk: Lib/test/test_descr.py Misc/NEWS Objects/typeobject.c

neal.norwitz python-checkins at python.org
Sat Apr 14 07:25:58 CEST 2007


Author: neal.norwitz
Date: Sat Apr 14 07:25:50 2007
New Revision: 54825

Modified:
   python/trunk/Lib/test/test_descr.py
   python/trunk/Misc/NEWS
   python/trunk/Objects/typeobject.c
Log:
When __slots__ are set to a unicode string, make it work the same as 
setting a plain string, ie don't expand to single letter identifiers.


Modified: python/trunk/Lib/test/test_descr.py
==============================================================================
--- python/trunk/Lib/test/test_descr.py	(original)
+++ python/trunk/Lib/test/test_descr.py	Sat Apr 14 07:25:50 2007
@@ -1225,13 +1225,29 @@
         raise TestFailed, "[''] slots not caught"
     class C(object):
         __slots__ = ["a", "a_b", "_a", "A0123456789Z"]
+    # XXX(nnorwitz): was there supposed to be something tested
+    # from the class above?
+
+    # Test a single string is not expanded as a sequence.
+    class C(object):
+        __slots__ = "abc"
+    c = C()
+    c.abc = 5
+    vereq(c.abc, 5)
 
     # Test unicode slot names
     try:
-        unichr
+        unicode
     except NameError:
         pass
     else:
+        # Test a single unicode string is not expanded as a sequence.
+        class C(object):
+            __slots__ = unicode("abc")
+        c = C()
+        c.abc = 5
+        vereq(c.abc, 5)
+
         # _unicode_to_string used to modify slots in certain circumstances 
         slots = (unicode("foo"), unicode("bar"))
         class C(object):

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sat Apr 14 07:25:50 2007
@@ -12,6 +12,9 @@
 Core and builtins
 -----------------
 
+- When __slots__ are set to a unicode string, make it work the same as 
+  setting a plain string, ie don't expand to single letter identifiers.
+
 - Request #1191699:  Slices can now be pickled.
 
 - Request #1193128:  str.translate() now allows a None argument for

Modified: python/trunk/Objects/typeobject.c
==============================================================================
--- python/trunk/Objects/typeobject.c	(original)
+++ python/trunk/Objects/typeobject.c	Sat Apr 14 07:25:50 2007
@@ -1816,7 +1816,7 @@
 		/* Have slots */
 
 		/* Make it into a tuple */
-		if (PyString_Check(slots))
+		if (PyString_Check(slots) || PyUnicode_Check(slots))
 			slots = PyTuple_Pack(1, slots);
 		else
 			slots = PySequence_Tuple(slots);


More information about the Python-checkins mailing list