note that import * _already_ imports names which shadow builtins, so the only real change would be when the imported module does *not* shadow a builtin, but your own module does (and does so before the import, perhaps because of an earlier import *).
Phillip J. Eby:
I think you're missing the part where builtins change from one release to the next. I might have had a global named 'zip' or 'enumerate' in a Python 1.5 program, and when I upgrade to 2.4 I am now "shadowing a builtin".
How did you get that global? You either defined it or imported it (or had it added by another module). Any of these actions will still work, and will still replace the cached builtin.
The only problem is if you then do an import * _after_ that definition. Doing that was already risking a break; this change just makes the break a bit more likely.