On Tue, Jun 25, 2002, Skip Montanaro wrote:
>> If in 2004 certain Python programs written in 2000 or earlier would >> start raising ImportError exceptions on 'from types import *' after >> upgrading to a new system which may come with the latest version of >> Python, this will certainly cause damage. aahz> This can be solved by a combination of changing the documentation aahz> and using __all__ (which I think is in part precisely the point of aahz> creating __all__).
I don't think __all__ would help here. The problem as I see it is that the docs say "from types import *" is safe. If you add new names to the types module, they would presumably be added to __all__ as well, and then "from types import *" could clobber local variables or hide globals or builtins the programmer didn't anticipate.
The point is that we could change the docs -- but Peter would still have his problem with import * unless we also used __all__ to retain the old behavior. Overall, I agree with your point about upgrading applications four years old; I'm just suggesting a possible mechanism for minimizing damage.