Guido, can you please, for our enlightenment, tell us what are the reasons you feel %(foo)s was a mistake?
Because of the trailing 's'. It's very easy to leave it out by mistake
How about introducing a new format
which is defined to be the same as %(foo)s.
Maybe too subtle (you'd really have to explain the history to make people understand why there's both %() and %()), and doesn't solve the compile time / run time issue IMO.
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)