On Tue, Mar 25, 2014 at 2:30 PM, PJ Eby
On Tue, Mar 25, 2014 at 3:50 PM, Barry Warsaw
wrote: There is. It's *pronounced* sys.namespace_packages, but it's spelled importlib._bootstrap._NamespaceLoader ;)
Yeah, well that's not exactly a public attribute, so it's not necessarily a great way to do it. But if we did use that, presumably it'd add something like:
hnp = hasattr(sys.modules.get('importlib._bootstrap',None),'_NamespaceLoader');
In 3.4 it's called _NamespaceLoader, but in 3.3 it's NamespaceLoader. <ducks>
To the front of the magic, and then prefix all subsequent expression values with 'not hnp and' in order to prevent them executing if PEP 420 support is available. (Note: it's checking sys.modules since on any interpreter where PEP 420 is natively available, the module should *already* be loaded by the time site.py does its thing.)
And we should probably think about adding sys.namespace_packages or something of the sort, or at least a proper flag for whether PEP 420 support is available on the platform.
By "available on the platform" do you mean "Python 3.3+ or has a backport installed"? Otherwise you'd just check sys.version*. -eric