Introduction to Metaprogramming in Python