Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r64294:206e3e4d5b47
Date: 2013-05-18 14:32 -0700
http://bitbucket.org/pypy/pypy/changeset/206e3e4d5b47/
Log: kill py2's dict iter methods, and dicts are now unorderable
diff --git a/lib_pypy/_ctypes/pointer.py b/lib_pypy/_ctypes/pointer.py
--- a/lib_pypy/_ctypes/pointer.py
+++ b/lib_pypy/_ctypes/pointer.py
@@ -28,7 +28,7 @@
# XXX check if typedict['_type_'] is any sane
# XXX remember about paramfunc
obj = type.__new__(self, name, cls, typedict)
- for k, v in d.iteritems():
+ for k, v in d.items():
setattr(obj, k, v)
if '_type_' in typedict:
self.set_type(obj, typedict['_type_'])
diff --git a/lib_pypy/_functools.py b/lib_pypy/_functools.py
--- a/lib_pypy/_functools.py
+++ b/lib_pypy/_functools.py
@@ -60,7 +60,7 @@
return "{}({})".format(name, ', '.join(tmp))
def __reduce__(self):
- d = dict((k, v) for k, v in self.__dict__.iteritems() if k not in
+ d = dict((k, v) for k, v in self.__dict__.items() if k not in
('func', 'args', 'keywords'))
if len(d) == 0:
d = None
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
@@ -224,18 +224,6 @@
"""D.values() -> an object providing a view on D's values"""
return W_DictViewValuesObject(space, self)
- def descr_iteritems(self, space):
- """D.iteritems() -> an iterator over the (key, value) items of D"""
- return W_DictMultiIterItemsObject(space, self.iteritems())
-
- def descr_iterkeys(self, space):
- """D.iterkeys() -> an iterator over the keys of D"""
- return W_DictMultiIterKeysObject(space, self.iterkeys())
-
- def descr_itervalues(self, space):
- """D.itervalues() -> an iterator over the values of D"""
- return W_DictMultiIterValuesObject(space, self.itervalues())
-
def descr_clear(self, space):
"""D.clear() -> None. Remove all items from D."""
self.clear()
@@ -369,10 +357,6 @@
items = interp2app(W_DictMultiObject.descr_items),
keys = interp2app(W_DictMultiObject.descr_keys),
values = interp2app(W_DictMultiObject.descr_values),
- # XXX:
- iteritems = interp2app(W_DictMultiObject.descr_iteritems),
- iterkeys = interp2app(W_DictMultiObject.descr_iterkeys),
- itervalues = interp2app(W_DictMultiObject.descr_itervalues),
clear = interp2app(W_DictMultiObject.descr_clear),
get = interp2app(W_DictMultiObject.descr_get),
pop = interp2app(W_DictMultiObject.descr_pop),
@@ -1144,21 +1128,21 @@
raise OperationError(space.w_StopIteration, space.w_None)
W_DictMultiIterItemsObject.typedef = StdTypeDef(
- "dict_iteritems",
+ "dict_itemiterator",
__iter__ = interp2app(W_DictMultiIterItemsObject.descr_iter),
__next__ = interp2app(W_DictMultiIterItemsObject.descr_next),
__length_hint__ = interp2app(W_BaseDictMultiIterObject.descr_length_hint)
)
W_DictMultiIterKeysObject.typedef = StdTypeDef(
- "dict_iterkeys",
+ "dict_keyiterator",
__iter__ = interp2app(W_DictMultiIterKeysObject.descr_iter),
__next__ = interp2app(W_DictMultiIterKeysObject.descr_next),
__length_hint__ = interp2app(W_BaseDictMultiIterObject.descr_length_hint)
)
W_DictMultiIterValuesObject.typedef = StdTypeDef(
- "dict_itervalues",
+ "dict_valueiterator",
__iter__ = interp2app(W_DictMultiIterValuesObject.descr_iter),
__next__ = interp2app(W_DictMultiIterValuesObject.descr_next),
__length_hint__ = interp2app(W_BaseDictMultiIterObject.descr_length_hint)
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
@@ -238,7 +238,7 @@
def test_iteritems(self):
d = {1: 2, 3: 4}
dd = d.copy()
- for k, v in d.iteritems():
+ for k, v in d.items():
assert v == dd[k]
del dd[k]
assert not dd
@@ -246,14 +246,14 @@
def test_iterkeys(self):
d = {1: 2, 3: 4}
dd = d.copy()
- for k in d.iterkeys():
+ for k in d.keys():
del dd[k]
assert not dd
def test_itervalues(self):
d = {1: 2, 3: 4}
values = []
- for k in d.itervalues():
+ for k in d.values():
values.append(k)
assert values == list(d.values())
@@ -397,24 +397,6 @@
f = getattr(operator, op)
raises(TypeError, f, d1, d2)
- def test_other_rich_cmp(self):
- d1 = {1: 2, 3: 4}
- d2 = {1: 2, 3: 4}
- d3 = {1: 2, 3: 5}
- d4 = {1: 2}
-
- assert d1 <= d2
- assert d1 <= d3
- assert not d1 <= d4
-
- assert not d1 > d2
- assert not d1 > d3
- assert d1 > d4
-
- assert d1 >= d2
- assert not d1 >= d3
- assert d1 >= d4
-
def test_str_repr(self):
assert '{}' == str({})
assert '{1: 2}' == str({1: 2})
@@ -613,10 +595,6 @@
def test_bytes_keys(self):
assert isinstance(list({b'a': 1})[0], bytes)
-
- def test_cmp_with_noncmp(self):
- assert not {} > object()
-
class AppTest_DictMultiObject(AppTest_DictObject):
def test_emptydict_unhashable(self):
@@ -997,14 +975,14 @@
def test_iter_dict_length_change(self):
d = {1: 2, 3: 4, 5: 6}
- it = d.iteritems()
+ it = iter(d.items())
d[7] = 8
# 'd' is now length 4
- raises(RuntimeError, it.__next__)
+ raises(RuntimeError, next, it)
def test_iter_dict_strategy_only_change_1(self):
d = {1: 2, 3: 4, 5: 6}
- it = d.iteritems()
+ it = d.items()
class Foo(object):
def __eq__(self, other):
return False
@@ -1016,7 +994,7 @@
def test_iter_dict_strategy_only_change_2(self):
d = {1: 2, 3: 4, 5: 6}
- it = d.iteritems()
+ it = d.items()
d['foo'] = 'bar'
del d[1]
# on default the strategy changes and thus we get the RuntimeError
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit