Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r68588:6839528d381c
Date: 2014-01-06 16:37 -0800
http://bitbucket.org/pypy/pypy/changeset/6839528d381c/
Log: py3ify unicode's __iter__ check
diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -57,6 +57,13 @@
return w_iter
tuple_iter._annspecialcase_ = 'specialize:memo'
+def unicode_iter(space):
+ "Utility that returns the app-level descriptor str.__iter__."
+ w_src, w_iter = space.lookup_in_type_where(space.w_unicode,
+ '__iter__')
+ return w_iter
+unicode_iter._annspecialcase_ = 'specialize:memo'
+
def raiseattrerror(space, w_obj, w_name, w_descr=None):
# space.repr always returns an encodable string.
if w_descr is None:
diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py
--- a/pypy/objspace/std/objspace.py
+++ b/pypy/objspace/std/objspace.py
@@ -487,7 +487,7 @@
return w_obj.listview_unicode()
if type(w_obj) is W_SetObject or type(w_obj) is W_FrozensetObject:
return w_obj.listview_unicode()
- if isinstance(w_obj, W_UnicodeObject) and self._uses_no_iter(w_obj):
+ if isinstance(w_obj, W_UnicodeObject) and
self._uses_unicode_iter(w_obj):
return w_obj.listview_unicode()
if isinstance(w_obj, W_ListObject) and self._uses_list_iter(w_obj):
return w_obj.getitems_unicode()
@@ -526,8 +526,9 @@
from pypy.objspace.descroperation import tuple_iter
return self.lookup(w_obj, '__iter__') is tuple_iter(self)
- def _uses_no_iter(self, w_obj):
- return self.lookup(w_obj, '__iter__') is None
+ def _uses_unicode_iter(self, w_obj):
+ from pypy.objspace.descroperation import unicode_iter
+ return self.lookup(w_obj, '__iter__') is unicode_iter(self)
def sliceindices(self, w_slice, w_length):
if isinstance(w_slice, W_SliceObject):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit