[Import-sig] Re: Long-awaited imputil comments

Gordon McMillan gmcm@hypernet.com
Wed, 16 Feb 2000 14:56:49 -0500


Just wrote:

> I kindof lost track here, is it ok if I take a step back?
> 
> I don't like the chaining aspect of imputil.py. 
[snip]
> What's needed is pluggable importers. Once proposal I remember (I think it
> was also Greg's) was that elements on sys.path could be importer instances.
> Is this still being proposed?

The "stable" version of imputil uses a chain. The CVS version 
uses sys.path to hold importers (well, it's got one foot in each 
world).

> I also vaguely remember someone saying that this was not optimal, since
> it's a 2-dimensional problem: there's a list of directories/files to
> search, and a list of importers. 

People were thinking in terms of "policy" importers - which 
would, indeed, be unmanagable. Importers are based on "turf" 
(to which we're currently trying to add "policy" hooks, at least 
for certain kinds of importers). So a decently written importer 
knows very quickly whether the request belongs to him.

> Would it make sense to add a new variable
> to the sys module, called "importers" or something, which contains a list
> of, erm, importers? And drop the __import__ hook. People would plug the
> import mechanism by manipulating sys.importers instead of mucking with
> __builtin__.__import__. Importers could then traverse sys.path, or use
> their own list of things.

As it stands now (CVS version, looking to be in the std dist, 
but not the core), an ImportManager uses the __import__ 
hook and developers put their importers on sys.path.

A policy hook would probably go into the FileSystemImporter, 
(where it would get activated when a directory on sys.path 
was searched), but it wouldn't go searching sys.path itself.

- Gordon