birkenfeld / karnickel. Quite a weird thing: Macros at AST level for Python. However, in a form that rather reminds of C macros - so simple expression macros (and quite limited block macros). Above all, you get all the nasty problems of such an unhygienic macro system - like name conflicts between macro-local variables and outer variables. It's also rather just proof that it works and what you can do with the AST module delivered with Python.