Special-case .pop() on TypedDict
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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)
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza reproduciendo los dos ejemplos de TypedDict con mypy, centrándote en .pop() seguido de desempaquetado de keywords y en el manejo de Unpack. Traza las rutas existentes de seguimiento de claves de TypedDict y de diagnóstico de claves duplicadas; el trabajo estará terminado cuando el código válido que use la clave eliminada ya no informe de un argumento keyword duplicado, mientras que los casos no válidos sigan siendo diagnosticados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100