Python ast (árboles de syntax abstracta): recupera la cadena fuente del subnodo

yo suelo

>>> import ast >>> T = ast.parse('a * (b + c)', mode='eval').body 

para obtener un árbol de syntax abstracta de algunas expresiones (que buscan matemáticamente; pero esto no debería importar).

Ahora quiero recuperar la cadena de origen de algún nodo en particular. Por ejemplo

 >>> get_source_back(T.right) '(b + c)' 

¿Hay alguna solución para esto en algún lugar?

(Por supuesto, podría usar .walk o NodeVisitor y especificar manualmente cómo construir una cadena a partir de un nodo. Pero esto no me da la fuente original y tengo que tener cuidado con los paréntesis, etc.)

No obtendrá la fuente original exacta de nuevo. Pero el paquete astor le devolverá la fuente que se volverá a comstackr de manera idéntica a la fuente original.

Editado para agregar La fuente reconstituida proporcionada por la versión en github es sustancialmente mejor que la fuente proporcionada por la versión más reciente (por ejemplo, menos paréntesis y mejor manejo de las cadenas de documentación). Un nuevo lanzamiento es inminente, creo.

(Y el paquete no analizado mencionado en los comentarios pone de forma pesimista los paréntesis de todo.)