final TypedDict with total=False does not allow clear/popitem
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
PEP-589 disallows clear and popitem on TypedDicts, even if all known keys are not required, as there may be other required keys due to structural subtyping. However, a @final-decorated TypedDict cannot be structurally subtyped, so these methods should be available.
To Reproduce
https://mypy-play.net/?mypy=latest&python=3.11&gist=7d42af8206cb1e25a53673bdf4e99df1
from typing import TypedDict, final
@final
class A(TypedDict, total=False):
k: int
a: A = {"k": 1}
a.clear()
Expected Behavior
No errors
Actual Behavior
error: "A" has no attribute "clear" [attr-defined]
Your Environment
- Mypy version used: 1.0.0
- Python version used: 3.11
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der verknüpften mypy-play-Reproduktion unter Verwendung von Python 3.11 und mypy 1.0.0 und untersuche dann, wie der Type Checker clear und popitem für ein finales TypedDict mit total=False behandelt. Als erledigt gilt die Aufgabe, wenn das Beispiel keine Fehler erzeugt und die bestehenden Einschränkungen für strukturell subtypeable TypedDicts intakt bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100