[RFC][PERFORMANCE][PYREX][TIRED OF THESE YET?] *fast* walkdirs.

Andrew Bennetts andrew at canonical.com
Thu Jun 15 14:25:43 BST 2006


Robert Collins wrote:
> On Wed, 2006-06-14 at 12:17 +1000, Martin Pool wrote:
[...]
> > 
> > If possible I'd like them to actually be plugins loaded through the  
> > regular mechanism.  They may need to patch themselves into bzr and  
> > perhaps it's not always possible, but something to aim for.
> 
> I think that that increases the chance of skew in a single users install
> between their C and python versions, and it does not change the ease or
> difficulty of testing both implementations : either the thing they
> replace has a factory where we can control the one used, or it acts like
> a singleton, and we have to just test one during a test run.
> 
> The current test branch runs tests completely, then builds the
> extensions and runs again. Its not completely ideal, but it achieves my
> key goals:
>  * Ensure that a python version exists and works.
>  * Ensure that the C versions when built still pass tests.

Why not do it this way: for some feature foo with an optional C implementation,
have a foo.py that simply consists of:

     try:
          from _c_foo import *
     except ImportError:
          from _py_foo import *

Where _c_foo would be the "foo" module in C, and _py_foo would be the pure
python fallback.  Tests for "foo" can directly access both _c_foo and _py_foo
modules to make sure they both pass.  Callers of foo get the C version if
available, and automatically get the python version if not. 

I don't think the plugin infrastructure helps solve this problem.

-Andrew.





More information about the bazaar mailing list