ast.parse() convierte código fuente en un árbol sintáctico abstracto. Linters, migraciones y analizadores recorren sus nodos para entender la estructura sin importar el módulo.

Ejemplo práctico

import ast

source = "{'retries': 3, 'tags': ['api', 'stable']}"
value = ast.literal_eval(source)

if not isinstance(value, dict):
    raise TypeError("expected a dictionary")
print(value["retries"])

literal_eval no es eval

ast.literal_eval() acepta solo estructuras literales como cadenas, números, listas y diccionarios. Después valida tipo y esquema; JSON suele ser mejor para intercambiar datos entre sistemas.

No ejecutar no elimina todo riesgo

Una entrada muy profunda o grande puede consumir memoria y pila. Limita bytes y profundidad antes de analizar contenido externo. Nunca compiles o ejecutes un AST recibido sin una política estricta y aislamiento adecuado.

Sigue aprendiendo

Consulta también Python JSON: Guía Completa para Manipulación de Datos y Type Hints en Python: Guía Completa de Tipado. A documentación oficial de Python, consultada el 22 de julio de 2026, detalla la API y el comportamiento entre versiones.