add metaprogramming to python