[Python-ideas] PEP 562

Guido van Rossum guido at python.org
Fri Nov 10 16:27:46 EST 2017


Picking up this thread as part of the PEP 562 and PEP 549 review. I like
PEP 562 most, but I propose to add special-casing for `__dir__`. Not quite
as proposed above (making the C level module_dir() look for `__all__`) but
a bit more general -- making module_dir() look for `__dir__` and call that
if present and callable. Ivan what do you think of that idea? It should be
simple to add to your existing implementation. (
https://github.com/ilevkivskyi/cpython/pull/3#issuecomment-343591293)

On Tue, Sep 12, 2017 at 1:26 AM, Ivan Levkivskyi <levkivskyi at gmail.com>
wrote:

> @Anthony
> > module.__getattr__ works pretty well for normal access, after being
> > imported by another module, but it doesn't properly trigger loading by
> > functions defined in the module's own namespace.
>
> The idea of my PEP is to be very simple (both semantically and in terms
> of implementation). This is why I don't want to add any complex logic.
> People who will want to use __getattr__ for lazy loading still can do this
> by importing submodules.
>
> @Nathaniel @INADA
> > The main two use cases I know of for this and PEP 549 are lazy imports
> > of submodules, and deprecating attributes.
>
> Yes, lazy loading seems to be a popular idea :-)
> I will add the simple recipe by Inada to the PEP since it will already
> work.
>
> @Cody
> > I still think the better way
> > to solve the custom dir()  would be to change the module __dir__
> > method to check if __all__ is defined and use it to generate the
> > result if it exists. This seems like a logical enhancement to me,
> > and I'm planning on writing a patch to implement this. Whether it
> > would be accepted is still an open issue though.
>
> This seems a reasonable rule to me, I can also make this patch if
> you will not have time.
>
> @Guido
> What do you think about the above idea?
>
> --
> Ivan
>
>
>


-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20171110/e14099f4/attachment-0001.html>


More information about the Python-ideas mailing list