[Python-Dev] Breaking undocumented API

Michael Foord fuzzyman at voidspace.org.uk
Thu Nov 18 13:48:57 CET 2010


On 18/11/2010 12:37, Georg Brandl wrote:
> Am 18.11.2010 11:47, schrieb Michael Foord:
>> On 17/11/2010 21:16, Éric Araujo wrote:
>>>> Excluding a builtin name from __all__ sounds like a perfectly sensible
>>>> idea, so even if it wasn't deliberate, I'd say it qualifies as
>>>> fortuitous :)
>>> But then, a tool that looks into __all__ to find for example what
>>> objects to document will miss open.  I’d put open in __all__.
>>>
>> "import *" would then override the builtin open. A good reason not to
>> use "import *" I guess, but also a good reason not to create names that
>> shadow builtins.
> Heh.  Instead have fun with io.ioopen(), gzip.gzipopen(),
> webbrowser.webbrowseropen(), etc.?  We do have namespace support for a reason.

Or urllib2.urlopen, oh wait - that's real...

If I was importing from those namespaces I probably *would* import and 
rename to have unambiguous names (and you would *have* to if there was 
any possibility of you using the builtin open). io.open is arguably an 
exception to this as it does the same as the builtin open...

Using meaningful names is *good*. This is a reason I dislike modules 
that just call their base exception class "Error". You *have* to use it 
from the namespace (or import with import as and give it a good name) 
for it to have any meaning.

Michael

> Georg
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk


-- 

http://www.voidspace.org.uk/

READ CAREFULLY. By accepting and reading this email you agree,
on behalf of your employer, to release me from all obligations
and waivers arising from any and all NON-NEGOTIATED agreements,
licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap,
confidentiality, non-disclosure, non-compete and acceptable use
policies (”BOGUS AGREEMENTS”) that I have entered into with your
employer, its partners, licensors, agents and assigns, in
perpetuity, without prejudice to my ongoing rights and privileges.
You further represent that you have the authority to release me
from any BOGUS AGREEMENTS on behalf of your employer.



More information about the Python-Dev mailing list