[Python-Dev] Re: Rationale behind removing kwdict from keyword.py?

Bob Ippolito bob at redivi.com
Wed Jul 28 06:20:42 CEST 2004


On Jul 28, 2004, at 12:09 AM, Fernando Perez wrote:

> Jeff Epler wrote:
>
>> In 2.3, __all__ = ["iskeyword", "kwlist"]
>>
>> In the absence of separate documentation, I think __all__ may be the
>> best hint you have about what the "external API" of a module is.
>
> Indeed, lesson learned.  In my slim defense, seeing in help(keyword):
>
> DATA
>     __all__ = ['iskeyword', 'kwlist']
>     keyword = 'yield'
>     kwdict = {'and': 1, 'assert': 1, 'break': 1, 'class': 1, 
> 'continue': 1...
>     kwlist = ['and', 'assert', 'break', 'class', 'continue', 'def', 
> 'del',...
>
> I (mistakenly) assumed kwdict was safe for usage.  Relying on help(), 
> while I
> acknowledge may have been mistaken, is not IMHO a completely 
> farfetched error.
> Oh well, live and learn :)
>
> Thanks to all for the clarifications.  I'll be far more careful in the 
> future
> with my usage of stuff from the stdlib.

FWIW, I think I've made the same mistake before for the same reasons.  
This sounds like a bug in pydoc.  If __all__ is defined, help should 
probably only be given for items in it (public API).

-bob
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3589 bytes
Desc: not available
Url : http://mail.python.org/pipermail/python-dev/attachments/20040728/53ebb933/smime.bin


More information about the Python-Dev mailing list