[pypy-svn] r15703 - in pypy/dist/pypy/objspace/std: . test
pedronis at codespeak.net
pedronis at codespeak.net
Fri Aug 5 18:46:34 CEST 2005
Author: pedronis
Date: Fri Aug 5 18:46:32 2005
New Revision: 15703
Modified:
pypy/dist/pypy/objspace/std/dicttype.py
pypy/dist/pypy/objspace/std/test/test_dictobject.py
Log:
dict.update now accepts iterables or no arguments at all
Modified: pypy/dist/pypy/objspace/std/dicttype.py
==============================================================================
--- pypy/dist/pypy/objspace/std/dicttype.py (original)
+++ pypy/dist/pypy/objspace/std/dicttype.py Fri Aug 5 18:46:32 2005
@@ -11,7 +11,7 @@
dict_pop = MultiMethod('pop', 2, w_varargs=True)
dict_popitem = MultiMethod('popitem', 1)
dict_setdefault = MultiMethod('setdefault', 3, defaults=(None,))
-dict_update = MultiMethod('update', 2)
+dict_update = MultiMethod('update', 2, defaults=((),))
dict_iteritems = MultiMethod('iteritems', 1)
dict_iterkeys = MultiMethod('iterkeys', 1)
dict_itervalues = MultiMethod('itervalues', 1)
@@ -24,8 +24,12 @@
app = gateway.applevel('''
def update(d, o):
- for k in o.keys():
- d[k] = o[k]
+ if hasattr(o, 'keys'):
+ for k in o.keys():
+ d[k] = o[k]
+ else:
+ for k,v in o:
+ d[k] = v
def popitem(d):
k = d.keys()
Modified: pypy/dist/pypy/objspace/std/test/test_dictobject.py
==============================================================================
--- pypy/dist/pypy/objspace/std/test/test_dictobject.py (original)
+++ pypy/dist/pypy/objspace/std/test/test_dictobject.py Fri Aug 5 18:46:32 2005
@@ -223,6 +223,18 @@
assert d == dd
d.update({3:5, 6:7})
assert d == {1:2, 3:5, 6:7}
+
+ def test_update_iterable(self):
+ d = {}
+ d.update((('a',1),))
+ assert d == {'a': 1}
+ d.update([('a',2), ('c',3)])
+ assert d == {'a': 2, 'c': 3}
+
+ def test_update_nop(self):
+ d = {}
+ d.update()
+ assert d == {}
def test_values(self):
d = {1:2, 3:4}
More information about the Pypy-commit
mailing list