[MERGE] import both c-extension and python module with the same name for testing
Robert Collins
robertc at robertcollins.net
Tue Aug 7 00:37:08 BST 2007
On Mon, 2007-08-06 at 23:33 +0300, Alexander Belchenko wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Today I had conversation on IRC with spiv and Peng.
> We discussed with spiv my pyrex bencode and then started to discuss
> new strategy of bzrlib for pyrex/c extensions modules.
>
> Because we want to tests all versions (python and pyrex) separately,
> John for his _knit_load_data pyrex extension did such things:
>
> 1) python version of module named _load_data_py.py
> 2) pyrex version of module named _load_data_c.pyx
> 3) Then importing one of them (in knit.py):
>
> try:
> from bzrlib._knit_load_data_c import _load_data_c as _load_data
> except ImportError:
> from bzrlib._knit_load_data_py import _load_data_py as _load_data
>
> If we need this zoo only for testing, then we could provide more complex
> importing scheme for test suite, but simplify core code.
Well, theres no need for other modules to import the fastpath code. In
actual fact I had this basic approach in my very early pyrex
experiments, but we moved away from it.
> Instead of keeping py and c versions with separate module names, we could
> create them with the same module name (_load_data.py and _load_data.pyx for example
> above). At runtime Python interpreter will import c-extension first if any
> presents. And for testing we need to use special approach to import
> python version. This patch provide mechanism to achieve this goal.
>
> The main reason for this patch is faster import of modules: we let to Python
> interpreter choose appropriate version of module and get rid of
> try/except ImportError construct.
I don't believe there will be any difference in performance when the C
version is present. I'd like to see test results on the performance
difference when the C version is not present.
-Rob
--
GPG key available at: <http://www.robertcollins.net/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20070807/6bcda99e/attachment-0001.pgp
More information about the bazaar
mailing list