Special-case .pop() on TypedDict
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Mypy doesn't respect TypedDict object changes. As an example, the following snippet
from typing import TypedDict
class A(TypedDict, total=False):
a: str
def func(a: str) -> None:
pass
data: A = {"a": "a"}
a = data.pop("a", "")
func(a, **data)
Raises the error:
error: "func" gets multiple values for keyword argument "a" [misc]
Formally, it is correctly, but it will be nice if mypy respects object keys changes. Especially in Unpack case:
from typing import Unpack, TypedDict
class A(TypedDict, total=False):
a: str
def func(a: str) -> None:
pass
def func2(**data: Unpack[A]) -> None:
a = data.pop("a", "")
func(a, **data)
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 damit, die beiden TypedDict-Beispiele mit mypy zu reproduzieren, wobei du dich auf .pop() gefolgt von Keyword-Unpacking und die Behandlung von Unpack konzentrierst. Verfolge die bestehenden Pfade zur TypedDict-Schlüsselverfolgung und zur Diagnose doppelter Schlüssel; abgeschlossen ist die Aufgabe, wenn gültiger Code, der den entfernten Schlüssel verwendet, keinen Fehler wegen eines doppelten Keyword-Arguments mehr meldet, während ungültige Fälle weiterhin diagnostiziert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100