python / python/cpython

`shlex.push_source()` fails to reset lexer state, causing new stream to be ignored if called after EOF

Offen
#140,950 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stdlib type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:

Calling shlex.push_source() after the current input has reached EOF leaves the lexer in state == None, so the newly pushed source is never read. Subsequent get_token() calls immediately return EOF instead of consuming the new input.

from shlex import shlex

lexer = shlex('a')
print(lexer.get_token())
print(lexer.get_token())  # EOF -> state is None

lexer.push_source('b', None)
print(lexer.get_token())  # actural '' (EOF), expected: 'b'
a


CPython versions tested on:

3.12

Operating systems tested on:

Linux

Linked PRs
  • gh-144560
  • gh-150172

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem Einstiegspunkt shlex.shlex und reproduziere die gemeldete Abfolge: Verbrauche die anfängliche Eingabe bis EOF, rufe push_source('b', None) auf und lies dann das nächste Token. Als erledigt gilt die Aufgabe, wenn die neu hinzugefügte Quelle konsumiert wird, statt EOF zurückzugeben; füge Regressionstests für diese Abfolge hinzu oder aktualisiere sie und führe die relevanten shlex-Tests aus.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
cli
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.