Message41967
Logged In: YES
user_id=113328
I have some concerns about a design issue.
I've been playing about writing my own hooks in Python, and I
have found that for most of my tests, the find_module method
is simply not useful. I understand that it can be cheaper
(sometimes a lot cheaper) to just check for the existence of a
module than actually loading up the code, etc, etc. So in
those cases, find_module() offers a shortcut if the module
isn't found.
But if the module *is* found, and find_module has to do
significant work, then all this work has to be repeated at
load_module time. There's no mechanism for the result of
find_module (say, a pointer to the module in a zip directory,
or whatever) to be passed to load_module. So load_module
has no alternative than to redo the work (short of the hook
implementing some form of internal cache mechanism, which
could be quite messy to do).
I don't know what the likely uses of hooks will be. So I've no
idea if find_module will turn out in practice to be a cheap
operation. But I can certainly imagine cases (the
hypthetical "load a module from a URL" hook) where
find_module could be far from cheap.
Is it possible to let find_module be optional? If the hook
implements it, let it be used as a quick check for existence. If
the hook doesn't implement it, just go for it - call load_module
and be prepared for a "can't find it" response.
This probably means that more extensive changes to import.c
will be needed. But once we expose the design, we're going
to be stuck with backward compatibility issues forever, so it's
important we get it right *now*, rather than later. (Although
having find_module mandatory initially, but made optional
later, is probably less problematic than most other forms of
design change...) |
|
Date |
User |
Action |
Args |
2007-08-23 15:18:56 | admin | link | issue652586 messages |
2007-08-23 15:18:56 | admin | create | |
|