Generate better error message for incompatible **kwargs
Abierto
Nadie ha tomado este issue todavía.
good-first-issue
priority-1-normal
topic-calls
topic-usability
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
This output is from #8772:
$ mypy test.py
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "bool"
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "Optional[Type[JSONEncoder]]"
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "Optional[Tuple[str, str]]"
test.py:6: error: Argument 2 to "dumps" has incompatible type "**Dict[str, int]"; expected "Optional[Callable[[Any], Any]]"
Found 4 errors in 1 file (checked 1 source file)
The error messages are pretty confusing. We should special case this and produce a customized error message that explains the situation better.
Here's the code that triggers the errors:
import json
json_kwargs = dict(indent=2)
json.dumps({}, **json_kwargs)
Some ideas about what to do:
- Generate a single error message instead of multiple ones.
- Add a note suggesting the use of
Dict[str, Any]or a TypedDict type for the**kwargsargument. - Maybe also explain that mypy matches the value type against all arguments, or add a link to documentation (add something to common issues, for example).
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 el ejemplo de test.py con json.dumps y compáralo con la salida de #8772. Rastrea los informes de errores existentes de **kwargs y convierte el resultado en un único diagnóstico claro con orientación sobre Dict[str, Any] o TypedDict, y verifica que los errores repetidos y confusos hayan desaparecido.
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
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100