-
Notifications
You must be signed in to change notification settings - Fork 25
Open
Description
Description
I was reading the source code of fixer_util.py and I noticed that one item enumerate was not like the others in consuming_calls because it does not actually consume the iterable in python 2 or python 3.
For example, fissix leaves this unchanged (without wrapping in list()) because it thinks that enumerate will consume the python 3 iterable: enumerate(d.items()). But it should wrap it in list because you might mutate d inside a loop: for i, x in enumerate(d.items()): del d[x] which will raise “RuntimeError: dictionary changed size during iteration” in python 3.
Instead, enumerate should be handled the same as iter.
Details
- OS: any
- Python version: any
- fissix version: 21.6.6
- Can you repro on master? yes
- Can you repro in a clean virtualenv? yes
Metadata
Metadata
Assignees
Labels
No labels