Author: Armin Rigo <[email protected]>
Branch: py3.5-newtext
Changeset: r89205:f7ab12c69fc9
Date: 2016-12-20 15:39 +0100
http://bitbucket.org/pypy/pypy/changeset/f7ab12c69fc9/
Log: fix dict tests
diff --git a/pypy/interpreter/unicodehelper.py
b/pypy/interpreter/unicodehelper.py
--- a/pypy/interpreter/unicodehelper.py
+++ b/pypy/interpreter/unicodehelper.py
@@ -139,6 +139,7 @@
# i.e. surrogates are accepted and not treated specially at all.
# If there happen to be two 3-bytes encoding a pair of surrogates,
# you still get two surrogate unicode characters in the result.
+ assert isinstance(string, str)
result, consumed = runicode.str_decode_utf_8(
string, len(string), "strict",
final=True, errorhandler=decode_error_handler(space),
diff --git a/pypy/objspace/fake/objspace.py b/pypy/objspace/fake/objspace.py
--- a/pypy/objspace/fake/objspace.py
+++ b/pypy/objspace/fake/objspace.py
@@ -42,9 +42,9 @@
def buffer_w(self, space, flags):
return StringBuffer("foobar")
- def str_w(self, space):
+ def text_w(self, space):
return NonConstant("foobar")
- identifier_w = bytes_w = str_w
+ identifier_w = bytes_w = text_w
def unicode_w(self, space):
return NonConstant(u"foobar")
@@ -118,7 +118,7 @@
# ____________________________________________________________
-BUILTIN_TYPES = ['int', 'str', 'float', 'tuple', 'list', 'dict', 'bytes',
+BUILTIN_TYPES = ['int', 'float', 'tuple', 'list', 'dict', 'bytes',
'unicode', 'complex', 'slice', 'bool', 'text', 'object',
'set', 'frozenset', 'bytearray', 'memoryview']
diff --git a/pypy/objspace/std/dictmultiobject.py
b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -1016,7 +1016,7 @@
def is_correct_type(self, w_obj):
space = self.space
- return space.is_w(space.type(w_obj), space.w_str)
+ return space.is_w(space.type(w_obj), space.w_bytes)
def get_empty_storage(self):
res = {}
@@ -1167,7 +1167,7 @@
space = self.space
# XXX there are many more types
return (space.is_w(w_lookup_type, space.w_NoneType) or
- space.is_w(w_lookup_type, space.w_str) or
+ space.is_w(w_lookup_type, space.w_bytes) or
space.is_w(w_lookup_type, space.w_unicode)
)
diff --git a/pypy/objspace/std/test/test_dictmultiobject.py
b/pypy/objspace/std/test/test_dictmultiobject.py
--- a/pypy/objspace/std/test/test_dictmultiobject.py
+++ b/pypy/objspace/std/test/test_dictmultiobject.py
@@ -1131,6 +1131,8 @@
return l
def newlist_bytes(self, l):
return l
+ def newlist_text(self, l):
+ return l
def newlist_unicode(self, l):
return l
DictObjectCls = W_DictObject
@@ -1140,23 +1142,20 @@
if isinstance(w_obj, FakeUnicode):
return unicode
return type(w_obj)
- w_str = str
w_unicode = unicode
+ w_bytes = str
- def str_w(self, string):
- if isinstance(string, unicode):
- return string.encode('utf-8')
- assert isinstance(string, str)
- return string
- bytes_w = str_w
+ def text_w(self, u):
+ assert isinstance(u, unicode)
+ return u.encode('utf-8')
def bytes_w(self, string):
assert isinstance(string, str)
return string
- def unicode_w(self, string):
- assert isinstance(string, unicode)
- return string
+ def unicode_w(self, u):
+ assert isinstance(u, unicode)
+ return u
def int_w(self, integer, allow_conversion=True):
assert isinstance(integer, int)
@@ -1166,7 +1165,14 @@
if isinstance(obj, str):
return obj.decode('ascii')
return obj
- newtext = newbytes = wrap
+
+ def newunicode(self, u):
+ assert isinstance(u, unicode)
+ return u
+
+ def newtext(self, string):
+ assert isinstance(string, str)
+ return string.decode('utf-8')
def newbytes(self, obj):
return obj
@@ -1212,7 +1218,7 @@
StringObjectCls = FakeString
UnicodeObjectCls = FakeUnicode
w_dict = W_DictObject
- w_text = str
+ w_text = unicode
iter = iter
fixedview = list
listview = list
@@ -1355,7 +1361,7 @@
def test_devolve(self):
impl = self.impl
for x in xrange(100):
- impl.setitem(self.fakespace.str_w(str(x)), x)
+ impl.setitem(self.fakespace.text_w(unicode(x)), x)
impl.setitem(x, x)
assert type(impl.get_strategy()) is ObjectDictStrategy
@@ -1419,10 +1425,10 @@
assert self.fakespace.view_as_kwargs(self.impl) == (["fish", "fish2"],
[1000, 2000])
def test_setitem_str(self):
- self.impl.setitem_str(self.fakespace.str_w(self.string), 1000)
+ self.impl.setitem_str(self.fakespace.text_w(self.string), 1000)
assert self.impl.length() == 1
assert self.impl.getitem(self.string) == 1000
- assert self.impl.getitem_str(self.string) == 1000
+ assert self.impl.getitem_str(str(self.string)) == 1000
self.check_not_devolved()
class TestBytesDictImplementation(BaseTestRDictImplementation):
diff --git a/pypy/objspace/std/unicodeobject.py
b/pypy/objspace/std/unicodeobject.py
--- a/pypy/objspace/std/unicodeobject.py
+++ b/pypy/objspace/std/unicodeobject.py
@@ -326,8 +326,8 @@
def descr_repr(self, space):
chars = self._value
size = len(chars)
- s = _repr_function(chars, size, "strict")
- return space.newtext(s)
+ u = _repr_function(chars, size, "strict")
+ return space.newunicode(u)
def descr_str(self, space):
if space.is_w(space.type(self), space.w_unicode):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit