Special-case .pop() on TypedDict
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
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)
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire les deux exemples de TypedDict avec mypy, en vous concentrant sur .pop() suivi d’un déballage de mots-clés et sur la gestion de Unpack. Suivez les chemins existants de suivi des clés de TypedDict et de diagnostic des clés dupliquées ; le travail est terminé lorsque le code valide utilisant la clé supprimée ne signale plus d’argument keyword dupliqué, tandis que les cas invalides continuent d’être diagnostiqués.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100