[Python-checkins] r82821 - in python/branches/py3k: Lib/_abcoll.py Lib/test/test_collections.py Misc/NEWS
mark.dickinson
python-checkins at python.org
Sun Jul 11 20:53:06 CEST 2010
Author: mark.dickinson
Date: Sun Jul 11 20:53:06 2010
New Revision: 82821
Log:
Issue #9137: Fix issue in MutableMapping.update, which incorrectly
treated keyword arguments called 'self' or 'other' specially.
Modified:
python/branches/py3k/Lib/_abcoll.py
python/branches/py3k/Lib/test/test_collections.py
python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/_abcoll.py
==============================================================================
--- python/branches/py3k/Lib/_abcoll.py (original)
+++ python/branches/py3k/Lib/_abcoll.py Sun Jul 11 20:53:06 2010
@@ -480,7 +480,15 @@
except KeyError:
pass
- def update(self, other=(), **kwds):
+ def update(*args, **kwds):
+ if len(args) > 2:
+ raise TypeError("update() takes at most 2 positional "
+ "arguments ({} given)".format(len(args)))
+ elif not args:
+ raise TypeError("update() takes at least 1 argument (0 given)")
+ self = args[0]
+ other = args[1] if len(args) >= 2 else ()
+
if isinstance(other, Mapping):
for key in other:
self[key] = other[key]
Modified: python/branches/py3k/Lib/test/test_collections.py
==============================================================================
--- python/branches/py3k/Lib/test/test_collections.py (original)
+++ python/branches/py3k/Lib/test/test_collections.py Sun Jul 11 20:53:06 2010
@@ -758,6 +758,19 @@
od.update([('a', 1), ('b', 2), ('c', 9), ('d', 4)], c=3, e=5)
self.assertEqual(list(od.items()), pairs) # mixed input
+ # Issue 9137: Named argument called 'other' or 'self'
+ # shouldn't be treated specially.
+ od = OrderedDict()
+ od.update(self=23)
+ self.assertEqual(list(od.items()), [('self', 23)])
+ od = OrderedDict()
+ od.update(other={})
+ self.assertEqual(list(od.items()), [('other', {})])
+ od = OrderedDict()
+ od.update(red=5, blue=6, other=7, self=8)
+ self.assertEqual(sorted(list(od.items())),
+ [('blue', 6), ('other', 7), ('red', 5), ('self', 8)])
+
# Make sure that direct calls to update do not clear previous contents
# add that updates items are not moved to the end
d = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 44), ('e', 55)])
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Sun Jul 11 20:53:06 2010
@@ -473,6 +473,9 @@
Library
-------
+- Issue #9137: Fix issue in MutableMapping.update, which incorrectly
+ treated keyword arguments called 'self' or 'other' specially.
+
- ``ast.literal_eval()`` now allows set literals.
- Issue #9164: Ensure that sysconfig handles duplicate -arch flags in CFLAGS.
More information about the Python-checkins
mailing list