durusmail: quixote-users: [patch] _q_import
[patch] _q_import
[patch] _q_import
2002-12-02
2002-12-03
2002-12-03
2002-12-04
2002-12-07
2002-12-07
2002-12-09
2002-12-09
2002-12-05
[patch] _q_import
Neil Schemenauer
2002-12-04
On Tue, Dec 03, 2002 at 08:46:04AM -0700, Jonathan Corbet wrote:
> Hmm...I think I like my way better.  The publisher really knows very little
> about the tree(s) it is exporting, and, I think, it should be that way.
> _q_import lets you set up a different regime in different places, and to
> put the import logic right with the part of the namespace that it affects.

I agree that _q_import is better than overriding something in the
publisher.  I'm worried about introducting too many magical _q_* names
that control traversal though.  Couldn't we use _q_getname for this
purpose?

Currently, _q_getname only gets called for names not in _q_exports.  We
could change it so that _q_getname was also called if name was in
_q_exports but not in the namespace.  If there as no _q_getname then the
current "guess it's a sub-module" import would happen.

An example lazy importing _q_getname would be:

    def _g_getname(request, component):
        global something
        if component == 'something':
            from somewhere import something
        else:
            raise TraversalError

Does that meet your needs?  There is a minor backwards incompatibility
with this idea.  Applications with modules that have both a _q_getname
and rely on automatic importing would break.  I looked through our code
and only found one module like this and it's easily fixed.

  Neil

reply