python / python/cpython

`KeyError` hides the exception raised by str(key)

Offen
#135,660 12 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Bug report

Bug description:
>>>a = object.__new__(type(exit))
>>>b = {}
>>>b[a]
Traceback (most recent call last):
  File "<python-input-2>", line 1, in <module>
    b[a]
    ~^^^
KeyError: <exception str() failed>

The exception AttributeError was hidden:

Traceback (most recent call last):
  File "<python-input-2>", line 1, in <module>
    b[a]
    ~^^^
AttributeError: 'Quitter' object has no attribute 'name'

The exception in str() shouldn't be ignore. May because of the lack of the attribute or the wrong type that __str__ return.

CPython versions tested on:

3.13

Operating systems tested on:

Windows

Linked PRs
  • gh-139961

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 damit, das Beispiel b[a] aus dem Bericht unter CPython 3.13 zu reproduzieren, und untersuche, wie die KeyError-Nachricht str(key) aufruft. Sieh dir den verknüpften PR gh-139961 an, um die aktuelle Richtung nachzuvollziehen; abgeschlossen ist die Arbeit, wenn die beim Formatieren des Schlüssels ausgelöste Exception erhalten bleibt, anstatt von der KeyError-Darstellung verborgen zu werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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