On Wed, May 23, 2012 at 3:35 PM, PJ Eby <pje@telecommunity.com> wrote:
On Wed, May 23, 2012 at 3:02 PM, Brett Cannon <brett@python.org> wrote:
If I understand the proposal correctly, this would be a change in NamespaceLoader in how it sets __path__ and in no way affect any other code since __import__() just grabs the object on __path__ and passes as an argument to the meta path finders which just iterate over the object, so I have no objections to it.

That's not *quite* the proposal (but almost).  The change would also mean that __import__() instead passes a ModulePath (aka Nick's LazyIterable) instance to the meta path finders, which just iterate over it.  But other than that, yes.

And why does __import__() need to construct that? I thought NamespaceLoader was going to be making these "magical" __path__ objects that detected changes and thus update themselves as necessary and just stick them on the object. Why specifically does __import__() need to play a role?