Wow, I'm actually surprised at how unconvinced I am. Moving from a declarative config syntax to arbitrary Python is rarely a good idea, and "the point of this is to run commands" feels pretty flat to me - after all, the "point" of setup.py was to run commands, but we all know the problems that caused.