Graham Dumpleton wrote:
On 09/06/2005, at 12:29 AM, Nick wrote:
but I just want to be clear that I don't think mod_python should
install any import hooks. That would probably be annoying to seasoned
Python programmers, and really a pain in the butt for me specifically.
Curious to know why you think this would be annoying to seasoned Python
programmers and a pain in the butt to yourself.
As I mentioned before, as a programmer I would want mod_python to be an API
for apache in Python, with no special alteration of how Python works as
advertised in the Python documentation. Installing import hooks bypasses
the Python import functionality as it's documented, and in my opinion is not
necessary to use mod_python as an API for apache.
While it may be convenient for some people to have an import hook that will
automagically reload a module when it changes on disk, that's *not* how
Python works, and would be unexpected behaviour for a Python programmer.
That's like saying that since most people want to parse the input stream as
form data, let's automatically parse it and put it into req.form. But
mod_python doesn't do that. You have to use utils.FieldStorage.
For my own applications I take advantage of Python's internal import routine
because it is in C and therefore much faster than any pure Python
implementation (try benchmarking an import hook in ihooks and you'll see how
slow it is). I want to inspect sys.modules, and that's where I expect
imports to go. I don't want to bypass an import mechanism that works
differently just to get back to Python's; that's counter-intuitive. Plus,
it'll make reuse a pain, because I'll have to write modules with special
checks to see if I'm in mod_python or do something else when not.
I just don't think default import hooks are necessary to make mod_python
generally useful to people. I can certainly understand people's needs for
something more flexible than Python's stock importer when writing
applications, and there's always an option to add a module to mod_python
that can let people do exactly that. I just don't want it out of the box.
Nick