[Python-Dev] SF patch 864863: Bisect C implementation
Samuele Pedroni
pedronis at bluewin.ch
Fri Jan 2 09:47:04 EST 2004
At 07:54 02.01.2004 -0600, Skip Montanaro wrote:
>If we are going to optimize standard library modules by implementing C
>counterparts but don't want the Python and C implementations to drift apart,
>we have to be able to test the Python versions somehow. Whatever that
>mechanism turns out to be has to be fairly convenient to use and shouldn't
>clutter up Python modules with checks solely used by the test framework.
I think that something like:
<heapq.py>
heapq python code...
try:
from _heapq import * # or list the names explicitly
except ImportError:
pass
</heapq.py>
can be made to work.
The tricky part is more in test_heapq, but I think it can be rewritten in
some form like:
import heapq # import likely the C code
test(heapq) # or heapq could be a global
heapq = test.support.get_pure_python_version(heapq)
test(heapq)
or some variation.
Assuming some conventions like _heapq/heapq etc,
get_pure_python_version would return a module not in sys.modules populated
just with the python code, basically tricking the last import momentarily
to fail. Barring some strange intermodule dependency issues which should
not be the case for this kind of modules this should be workable.
regards.
More information about the Python-Dev
mailing list