Attempting to assign an infinte generator to an extended slice hangs indefinitely instead of raising ValueError
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
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 calling next() until StopIteration 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:
class MyGen:
def __iter__(self):
while True:
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 2
l[::2] = MyGen() # hangs indefinitely despite returning more than 2 values
CPython versions tested on:
3.14
Operating systems tested on:
macOS
Linked PRs
- gh-146272
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez le blocage avec les exemples d’affectation à des slices étendus dans l’issue, puis suivez le chemin d’affectation builtin à des slices étendus qui consomme l’itérable. Ajoutez un test de régression couvrant un générateur infini et vérifiez que l’affectation lève ValueError une fois la longueur du slice dépassée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100