Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork34.3k
Open
Description
Bug report
Bug description:
For builtin types which support assignment to extended slices (i.e. slices with a step other than 1), the length of the iterable being assigned from must be equal to the length of the slice being assigned to. However, Python appears to determine the length of the iterable by repeatedly callingnext() untilStopIteration is raised.
In the event that an object never raises StopIteration, this creates an infinite evaluation loop, even though it should be apparent that the two sizes are not equal once the size of the slice has been exceeded. See the example below:
classMyGen:def__iter__(self):whileTrue:yield"foo"l= [0,1,2,3]l[::2]=range(10)# raises ValueError: attempt to assign sequence of size 10 to extended slice of size 2l[::2]=MyGen()# hangs indefinitely despite returning more than 2 values
CPython versions tested on:
3.14
Operating systems tested on:
macOS