
On 10/31/2015 4:14 AM, Steven D'Aprano wrote: A response to my already half-dead proposal. Literally 10 minutes after I posted it, Guido replied that half of what I wanted already existed as sys.builtin_module_names. I acknowledged that, two hours before Steven's post, by saying I would go ahead and use this tuple for IDLE. General comments: The possibility of name clashes arises because Python does not limit import to stdlib. As Steven noted, Python cannot prevent this. What it could do is search the all possible import sources with each import and report clashes before picking one. I am not proposing this. Whether python picks a user file or stdlib file when both have the same name depends on how the stdlib version is implemented. Specific comment: I limited the proposal to the stdlib because a) the stdlib is fixed for a given version of CPython on a particular OS*, and b) the reported problems of beginners that I have seen, where they are stuck on what to do, involve the stdlib. (I could have made this limitation clearer in my original first paragraph.) *Except as modules are omitted in a particular build. sys.builtin_module_names exists because the information is not otherwise exposed and because it is needed and used in several places. Revised and reduced proposal: If other people would find it useful, add all_stdlib_toplevel_module_names - builtin_module_names to sys as something equivalent to .other_stdlib_module_names or .python_coded_module_names. Anyone wanting all_toplevel_module names could add the two. Or add the latter, and let others subtract. In the meanwhile, I will adapt the code in test__all__ that creates such a list from the lib directory. -- Terry Jan Reedy