[Python-ideas] Allow from foo import bar*

Giampaolo Rodola' g.rodola at gmail.com
Thu Oct 3 19:09:51 CEST 2013


I suppose this has already been proposed in past but couldn't find
any online  reference so here goes.
When it comes to module constant imports I usually like being explicit it's
OK with me as long as I have to do:

>>> from resource import (RLIMIT_CORE, RLIMIT_CPU, RLIMIT_FSIZE)

Nevertheless in case the existence of certain constants depends on the
platform in use I end up doing:

>>> if hasattr(resource, "RLIMIT_MSGQUEUE"):  # linux only
....         import resource.RLIMIT_MSGQUEUE
....
>>> if hasattr(resource, "RLIMIT_NICE"):  # linux only
....         import resource.RLIMIT_NICE
....


...or worse, if for simplicity I'm willing to simply import all RLIMIT_*
constants I'll have to do this:

>>> import resource
>>> import sys
>>> for name in dir(resource):
....    if name.startswith('RLIMIT_'):
....        setattr(sys.modules[__name__], name, getattr(resource, name))

...or just give up and use:

from resource import *

...which of course will pollute the namespace with unnecessary stuff.
So why not just allow "from resource import RLIMIT_*" syntax?
Another interesting variation might be:


>>> from socket import AF_*, SOCK_*
>>> AF_INET, AF_INET6, SOCK_STREAM, SOCK_DGRAM
(2, 10, 1, 2)


On the other hand mixing "*" and "common" imports would be forbidden:

>>> from socket import AF_*, socket,
  File "<stdin>", line 1
    from socket import AF_*, socket
                                         ^
SyntaxError: invalid syntax;


Thoughts?


--- Giampaolo
https://code.google.com/p/pyftpdlib/
https://code.google.com/p/psutil/
https://code.google.com/p/pysendfile/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20131003/56fb3768/attachment.html>


More information about the Python-ideas mailing list