On Apr 14, 2012, at 1:03 PM, Brett Cannon wrote:

> And lastly, sticking None in sys.path_importer_cache would no longer mean "do the implicit thing" and instead would mean the same as NullImporter does now (which also means import can put None into sys.path_importer_cache instead of NullImporter): no finder is available for an entry on sys.path when None is found.
">

(original) (raw)



On Tue, Apr 17, 2012 at 13:45, Philip Jenvey <pjenvey@underboss.org> wrote:


On Apr 14, 2012, at 1:03 PM, Brett Cannon wrote:

> And lastly, sticking None in sys.path\_importer\_cache would no longer mean "do the implicit thing" and instead would mean the same as NullImporter does now (which also means import can put None into sys.path\_importer\_cache instead of NullImporter): no finder is available for an entry on sys.path when None is found.

Isn't it more explicit to cache the NullImporter instead of None?

I disagree. NullImporter is just another finder that just so happens to always fail. None is explicitly not a finder and thus obviously not going to do anything. Isn't it clearer to say \`\`sys.path\_importer\_cache\[path\] is None\`\` than \`\`isinstance(sys.path\_importer\_cache\[path\], imp.NullImporter)\`\`? I mean we have None to represent something is nothing which is exactly what I want to convey; None in sys.path\_importer\_cache means there is no finder for that path.