_update(): Commented the new obscurity. Materialized into a tuple

instead of into a list for a bit of speed/space savings.  Reopened the
bug report too (628246), as I'm unclear on why we don't sort out the
cause of the TypeError instead.
This commit is contained in:
Tim Peters 2002-11-08 05:26:52 +00:00
parent 1eb1fb814b
commit 0ec1ddcdcf

View file

@ -319,10 +319,16 @@ def _update(self, iterable):
data.update(iterable)
return
value = True
# If the mere process of iterating may raise TypeError, materialize
# the iterable into a tuple first. Then the TypeError will get
# raised here and propagated back to the caller. Once we get into
# the loop following, TypeError is assumed to mean that element
# can't be used as a dict key.
if type(iterable) not in (list, tuple, dict, file, xrange, str):
iterable = list(iterable)
iterable = tuple(iterable)
it = iter(iterable)
value = True
while True:
try:
for element in it: