We have decided to use a dialect of Python 2 that looks and works a little like Python 3. The only alternative I can think of is to catch SyntaxError exceptions from compile and retry with only flags=__future__.CO_FUTURE_ABSOLUTE_IMPORT|__future__.CO_FUTURE_DIVISION and dont_inherit=1, which would allow configs to use either style.
(Note: in my python 2.7.10, the documentation's claim that "The bitfield required to specify a given feature can be found as the compiler_flag attribute on the _Feature instance in the __future__ module" appears to be false.)
(This discussion should really have gone somewhere else, I think, but it's probably too late now.) Robert Lupton: It is approaching two years since we adopted from __future__ import print_function (see official policy and original adoption). Is there some technical or human-factors reason to make an exception here beyond "I don't think that's acceptable", "is a bad idea", and "I'd rather not force them"? Do we have a large external population of print-in-config-override writers, for example? (There are only 10 occurrences in our code base, many copies of the same original.)