Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

traitlets Dict with per_key_traits should be more specific in a TraitError

Offen
#920 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

@sap1110 arbeitet bereits daran.

Seit 17.8.2026.

  • #978 von @sap1110 — offen

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
38/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
tooling

Rechercherichtung

Beginne damit, das im Issue gezeigte Beispiel für ein verschachteltes Dict(per_key_traits) zu reproduzieren, und verfolge den Einstiegspunkt der Dict-Validierung für per_key_traits. Die Änderung ist abgeschlossen, wenn TraitError den fehlerhaften Schlüssel oder den Pfad des verschachtelten Schlüssels identifiziert und den tatsächlich ungültigen Wert eindeutig meldet; füge eine Regressionstestabdeckung für den gezeigten Fall hinzu, falls die vorhandene Teststruktur dies zulässt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

I'm using traitlets version 5.14.3 and Python 3.12.3...

  • The error raised by Dict() with per_key_traits should specify the offending key name in the error.
  • The error raised by Dict() with per_key_traits doesn't handle nested dicts well

Example:

from traitlets import HasTraits, Dict, Unicode

class Foo(HasTraits):
    bar = Dict(per_key_traits={"this": Unicode(), "that": Dict(per_key_traits={"that": Unicode()})})

foo = Foo()
# key that should be a Dict()...
foo.bar = {"this": "valid", "that": False}

The error raised is:

traitlets.traitlets.TraitError: Values of the 'bar' trait of a Foo instance must be a dict, but a value of False <class 'bool'> was specified.

It would be better if it specified the offending chain of keys in the error... Example:

traitlets.traitlets.TraitError: Value of bar['that'] for a Foo instance must be a dict, but the specified value at bar['that'] was False <class 'bool'>.
Vorherrschende Sprache
Python
Sterne
653
Forks
221
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus ipython/traitlets

Alle Issues in ipython/traitlets

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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