New submission from Eric Snow:

While the dict/OrderedDict iterators already check for additions and deletions, 
using the OrderedDict.move_to_end during iteration can lead to surprising 
results.

The following results in an infinite loop:

    od = OrderedDict.fromkeys('abc')
    last = None
    for k in od:
        if last is not None:
            od.move_to_end(last)
        last = k

Ideally we could disallow changing order during iteration, just like we 
disallow deletion.  Since we've gone 3 minor versions already, would it be too 
late to break backward compatibility on this point?

----------
components: Library (Lib)
messages: 244718
nosy: eric.snow, rhettinger
priority: high
severity: normal
stage: test needed
status: open
title: Using OrderedDict.move_to_end during iteration is problematic.
type: behavior
versions: Python 3.4, Python 3.5, Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue24369>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to