И это всё МОЁ

Сабж. Есть некоторый фрагмент питоньего кода (строка), есть словарь замен. Надо в строке кода некоторые переменные поменять согласно словарю на то что в словаре и получить код после преобразования.

Словарь имеет вид

table = {'A':1.2, 'B':3.14, 'X':'Y'}

подразумевается что переменная X должна быть заменена на переменную Y и т.д.

Вроде я могу при помощи модуля ast конвертнуть код в дерево и провести в нем замены. Но как мне обратно собрать код? Все что я попытался сделать с codegen, sourcecodegen пока не работает.

Код для теста

#!/usr/bin/python
import ast, sourcecodegen

table = {'A':123, 'X':'Y'}

class Repl(ast.NodeTransformer):
def visit_Name(self, node):
if node.id in table: return ast.parse(str(table[node.id]))

E = 'sin(X)*A'

P = ast.parse(E, 'eval')
R = Repl().visit(P)

#print astor.codegen.to_source(R)
print sourcecodegen.generate_code(R)

ЗЫ Хотелось бы что бы решение было на основе стандартных модулей, не требующих установки чего то дополнительного