mypy flags "overlap between argument names and ** TypedDict items" with total=False
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
Bug Report
mypy complains about explicit kwargs of a function appearing in the Unpacked TypedDict used for the ** parameter, even if the TypedDict is total=False.
To Reproduce
from typing import TypedDict, Unpack
class Opts(TypedDict, total=False):
verbose: bool
other: str
def do_a(*, verbose: bool = False, **_kwargs: Unpack[Opts]) -> None:
pass
def do_b(**kwargs: Unpack[Opts]) -> None:
pass
def do_thing(cmd: str, **kwargs: Unpack[Opts]) -> None:
match cmd:
case 'a':
do_a(**kwargs)
case 'b':
do_b(**kwargs)
https://mypy-play.net/?mypy=latest&python=3.12&gist=a7836435f32a3fab9c3e671b73897370
Expected Behavior
I expect that this should be completely fine. Yes, verbose might end up being "stolen" away from the **kwargs in do_a() but that's quite fine, since total=False there anyway. There is no promise/expectation that verbose will be included.
Actual Behavior
main.py:9: error: Overlap between argument names and ** TypedDict items: "verbose" [misc]
Your Environment
I'm running on Fedora 42 (mypy 1.15.0 (compiled: no)), but the playground gets exactly the same error.
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
Comienza con el reproductor mínimo en main.py, o ejecútalo en el mypy playground enlazado, y confirma el diagnóstico de solapamiento en la línea 9. Sigue el punto de entrada de comprobación de tipos de mypy que informa de «Overlap between argument names and ** TypedDict items» para un Unpack’ed total=False TypedDict. La tarea estará terminada cuando el reproductor ya no informe de este error, mientras el resto del comportamiento de tipado siga comprobándose.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 52/100