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.