MyPy es la herramienta estándar en Python para validación estática de tipos: detecta errores antes de ejecutar el código, mejora la calidad y refuerza la mantenibilidad. Aquí verás cómo configurarla en Platzi News, interpretar sus mensajes, corregir tipados reales y generar un reporte HTML para tu equipo.
¿Qué es MyPy y por qué mejora la validación estática de tipos en Python?
MyPy permite encontrar incompatibilidades de tipos sin correr la aplicación. Con esto, el código se vuelve más robusto, fácil de mantener y confiable en equipos grandes. La clave: leer el error, entender el contexto y aplicar el tipado correcto.
Detecta errores antes de tiempo y evita bugs en producción.
Ayuda a documentar contratos de funciones y estructuras.
Acelera el refactor con confianza.
Permite reportes para ver cobertura de tipado por archivo.
¿Cómo instalar y ejecutar MyPy en Platzi News?
Primero se instala como dependencia de desarrollo y luego se ejecuta sobre el directorio de código fuente para ver los errores detectados.
¿Cómo instalar MyPy y los tipos para requests?
Instala MyPy como dev dependency.
vadd --dev mypy
Si usas requests sin tipados, instala los stubs para eliminar el error de “Stub not installed”.
vadd --dev types-requests
¿Cómo ejecutar el análisis y leer los errores de tipos?
Corre MyPy sobre el código fuente.
mypy src
Interpreta el resultado: archivo, dos puntos, número de línea y descripción del problema.
Ten en cuenta que versiones cambian y los mensajes pueden variar; lo importante es interpretar el tipo esperado vs. el recibido.
¿Cómo solucionar errores comunes y generar reportes HTML?
A continuación, ajustes reales de tipado, mejoras a parámetros y una forma de ignorar validaciones puntuales cuando conoces la intención del código.
¿Cómo tipar params compatibles en requests.get?
El error indica que params no coincide con la firma esperada. La causa: una clave como api_key con tipo desconocido. Solución: tipar el diccionario para que las llaves sean strings y los valores sean string o int.
Versión con typing clásico.
from typing import Union
params:dict[str, Union[str,int]]={"query": query,"api_key": api_key,}