☰ Menu

30.09.2026 · Signal Titans Editorial

El PEP 827 propone la manipulación de tipos inspirada en TypeScript para Python

El PEP 827 introduce manipulación de tipos, tipos condicionales y estrategias en tiempo de ejecución en Python, generando debate entre los desarrolladores.

Una ilustración conceptual horizontal y minimalista de un bloque geométrico sólido que se transforma en una rejilla luminosa de alambre en color cian sobre un fondo oscuro.

Durante el Python Language Summit 2026, Michael J. Sullivan presentó el PEP 827, una propuesta orientada a introducir potentes capacidades de manipulación de tipos inspiradas en los comportamientos dinámicos de tipos presentes en lenguajes como TypeScript.

Primitivas de manipulación de tipos

El PEP 827 introduce varias primitivas fundamentales en el sistema de tipos de Python, como tipos condicionales, tipos por comprensión con filtrado opcional y tipos de miembros que exponen un iterable de los miembros de un tipo junto con propiedades para sus nombres y tipos. Según la discusión, la propuesta evita añadir nuevas palabras clave e incluye un prototipo basado en mypy para las características sugeridas.

Un caso de uso principal implica simplificar las aplicaciones web CRUD donde los modelos de bases de datos requieren múltiples variaciones para diferentes operaciones. En lugar de mantener manualmente definiciones de modelos redundantes, los desarrolladores podrían aprovechar transformaciones como vistas públicas, modelos de creación y variaciones de actualización directamente a partir de un modelo base.

Compromisos en el almacenamiento de anotaciones en tiempo de ejecución

Un enfoque importante de la propuesta es determinar cómo deben almacenarse y evaluarse las anotaciones de tipos en tiempo de ejecución, dado que librerías modernas como Pydantic y FastAPI dependen en gran medida de esta información. El borrador se apoya en un evaluador que utiliza funciones __annotate__(), explorando opciones como usar el formato de cadena de annotationlib o combinar representaciones de texto con cierres de entorno para su evaluación mediante eval().

Durante los debates entre desarrolladores del núcleo, los participantes discutieron los costes en memoria y cómputo de almacenar cadenas de texto sin procesar frente a evaluar cierres. Łukasz Langa sugirió que internar cadenas de anotaciones comunes dentro de __annotate__() podría ahorrar memoria sin impactar significativamente en el rendimiento.

Turing-completitud intencionada y preocupaciones sintácticas

Al abordar las dudas sobre la complejidad del sistema de tipos, Sullivan señaló que aceptar la propuesta transformaría el sistema de tipos de Python de ser accidentalmente Turing-completo a ser intencionadamente Turing-completo, comparándolo con comportamientos genéricos similares en Java. Los desarrolladores también debatieron el impacto estético de los tipos derivados complejos para los usuarios habituales.

Łukasz Langa y David Hewitt plantearon su inquietud sobre si una sintaxis compleja podría abrumar a los usuarios al inspeccionar los tipos de retorno de una API, de manera similar a lo que ocurre en el ecosistema de TypeScript. El coautor Yury Selivanov reconoció que, aunque las transformaciones avanzadas añaden complejidad, son necesarias para estar a la altura de la expresividad de Python en tiempo de ejecución, respaldadas por futuras mejoras en IDEs y servidores de lenguaje.

Ilustración editorial generada con IA; no es una fotografía documental.

Fuente: PEP 827: Type Manipulation (Python Language Summit 2026)