[Python-ideas] metamodules (was: Re: Idea to support lazy loaded names.)

Andrew Barnert abarnert at yahoo.com
Fri Oct 10 01:02:46 CEST 2014


On Oct 9, 2014, at 15:21, Nick Coghlan <ncoghlan at gmail.com> wrote:

> On 10 Oct 2014 00:05, "Nathaniel Smith" <njs at pobox.com> wrote:
> >
> > > Valid reasons would be to make it easier for alternative interpreters,
> > > or to catch edge cases (e.g. make it work nicely with custom
> > > importers, zip files, etc). But at that point, we can just do it the
> > > "right way"*, have the backcompat story to a third-party shim.
> > >
> > > * i.e. "not paying attention to older Pythons" – I'm not saying
> > > __new__.py is necessarily the right way, I'm criticizing this reason
> > > against it
> >
> > My point is just that it matters whether a backcompat shim is doable. Probably there is some way to implement a backcompat shim for __new__.py, but I don't immediately know how to do it.
> 
> Eric Snow already backported the Python 3.4 importlib to Python 2.7 as importlib2, and I know of at least one large company that is planning to deploy that in order to benefit from the directory caching feature. It's a reasonably safe assumption that any future Python 3 import system changes will be made available for Python 2.7 the same way.
> 
> That said...
> 
> > And again, this is to be compared to the __class__ assignment approach, where we know very well that a backcompat shim is doable because it is done :-).
> 
> I actually agree making modules a proxy type that allows setting __class__ on instances is likely the simpler solution here.
> 
By "proxy type", you mean that instead of turning off the non-heap flag for ModuleType, we'd just add a (pure Python, or C but not non-heap) ModuleType that delegates to the real one?

If so, that certainly sounds just as easy to backport to 2.7 with importlib2 as any of the other solutions; no need for ctypes hackery.
> You won't get full magic method support, but it *will* enable use of the descriptor protocol for module level attributes.
> 
> Cheers,
> Nick.
> 
> >
> > -n
> >
> >
> > _______________________________________________
> > Python-ideas mailing list
> > Python-ideas at python.org
> > https://mail.python.org/mailman/listinfo/python-ideas
> > Code of Conduct: http://python.org/psf/codeofconduct/
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20141009/d71e7e96/attachment.html>


More information about the Python-ideas mailing list