python / python/mypy

Way to support attributes for TypedDict

Offen
#15,598 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
Ø Merge
1 T. 18 Std.
Gemergte PRs (30 T.)
54

Beschreibung

Bug Report

Currently i am working with a typeddict that is transforming to AttributeDict and i dont have a way to preserve typings. I am implementing a custom plugin for this but the type is only available for get_type_analyze_hook.

To Reproduce

from typing import TypedDict

Test = TypedDict(
    "Test", 
    {
        "from": str,
        "test": str
    }
)

my_test: Test = {
    "from": "lorem",
    "test": "11"
}

my_test.test = "22"

Expected Behavior

There wont be any errors.

Actual Behavior

test.py:17: error: "Test" has no attribute "test"  [attr-defined]
Found 1 error in 1 file (checked 1 source file)

Your Environment

  • Mypy version used: 1.0.1
  • Mypy command-line flags:
  • Mypy configuration options from mypy.ini (and other config files):
  • Python version used: 3.10.9

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 bereitgestellte TypedDict-Beispiel mit mypy 1.0.1 auszuführen und den von einem benutzerdefinierten Plugin verwendeten get_type_analyze_hook-Pfad zu lesen. Als erledigt gilt, wenn definiert ist, wie in Attribute umgewandelte TypedDict-Schlüssel ihre Typen beibehalten sollen, und das Beispiel ohne den Fehler attr-defined erfolgreich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers, devtools
Issue-Typ
Bug
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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