Error with mixing str and pathlib.Path in command line arguments list
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 raises error if list of command line arguments (passing to subprocess.call) contains items of different types (for example, str and pathlib.Path). It can be fixed by adding type hint to variable, but it's too annoying.
To Reproduce
import pathlib
import subprocess
cmd = [pathlib.Path('bash'), '-c', 'echo Hello']
subprocess.call(cmd)
Expected Behavior
mypy should not raise any error.
Actual Behavior
main.py:5: error: Argument 1 to "check_call" has incompatible type "List[object]"; expected "Union[Union[str, bytes, PathLike[str], PathLike[bytes]], Sequence[Union[str, bytes, PathLike[str], PathLike[bytes]]]]"
Found 1 error in 1 file (checked 1 source file)
Why can't mypy recognize cmd type as List[Union[pathlib.Path, str]], not List[object]?
Environment
- Mypy version used: 0.961
- Python version used: 3.10
- Operating system: Linux
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
Comience con el reproductor de Python proporcionado y el tipado de subprocess.call; después, siga cómo mypy infiere el tipo de una lista mixta que contiene pathlib.Path y str. Confirme el cambio con una prueba de regresión que use la lista de argumentos de línea de comandos mostrada y verifique que mypy no informe ningún error, mientras las comprobaciones existentes de argumentos de subprocess sigan intactas.
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
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100