Python: Verificación de tipos falla con contenedores vacíos

Fuentes: Python Type Checker Comparison: Empty Container Inference | Pyrefly

Un nuevo análisis revela que los verificadores de tipos de Python tienen dificultades para manejar contenedores vacíos, lo que genera diferentes enfoques con implicaciones para la seguridad de tipos y la experiencia del desarrollador. Cuando una función crea un contenedor vacío (como una lista o diccionario) sin una anotación de tipo, los verificadores de tipos deben inferir el tipo de los elementos que se agregarán posteriormente. Pyre, Ty y Pyright generalmente infieren list[Any] o dict[Any], lo que es eficiente pero puede permitir errores de tiempo de ejecución. Pytype infiere el tipo basado en todos los usos, lo que proporciona una mejor seguridad de tipos pero puede generar errores en el momento de la lectura. Mypy y Pyrefly infieren el tipo solo del primer uso, lo que genera errores más tempranos pero puede requerir anotaciones adicionales. El estudio destaca los desafíos de equilibrar la seguridad de tipos, el rendimiento y la usabilidad en los verificadores de tipos de Python, y ofrece información valiosa para la selección y evaluación de herramientas de verificación de tipos.