[Python-Dev] okay to remove argparse.__all__?

Guido van Rossum guido at python.org
Mon Nov 1 15:57:13 CET 2010


On Mon, Nov 1, 2010 at 7:53 AM, Michael Foord <fuzzyman at voidspace.org.uk> wrote:
> On 01/11/2010 14:48, Steven Bethard wrote:
>>
>> I think the easiest and most sensible way to address
>> http://bugs.python.org/issue9353 is to simply remove the __all__
>> definition from argparse - everything that doesn't start with an
>> underscore in the module is already meant to be exposed.
>>
>> But then I wonder - is __all__ considered part of the public API of a
>> module? Or is it okay to just remove it and assume that no one should
>> have been accessing it directly anyway?
>
> Isn't it better to add the missing elements - what is the problem with that
> approach?

Agreed, that's what I would do.

> Not defining __all__ will mean that "from argparse import *" will also
> export all the modules you import (copy, os, re, sys, textwrap).

Well, the copy of argparse.py that I have carefully renames those to
_copy, _os etc. to avoid this.
You never know.

It is also possible to write automated tests that flag likely missing
symbols in __all__ (as well as symbols in __all__ missing from the
module).

-- 
--Guido van Rossum (python.org/~guido)


More information about the Python-Dev mailing list