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

Reply via email to