[SciPy-dev] WxPython required?
Robert Kern
robert.kern at gmail.com
Sun Jan 20 20:24:35 EST 2008
Matthew Brett wrote:
> Hi,
>
>>> Upon installing wxpython this error disappears, does this mean scipy
>>> depends on wxpython now?
>> There are various approaches to
>> solve this (different test levels comes to mind, the decorator
>> approach to performance tests seen on this list as well). The default
>> test level certainly shouldn't call this test, though.
>
> This prompts me to ask for advice on what to do in this kind of situation.
>
> When I ported the tests to nose, there were a couple of tests that
> errored due to failed dependencies, on umfpack, and PIL. I just
> decorated the tests with an import-time check for the dependency, so
> they cannot be run without umfpack and PIL respectively, for example
> misc/tests/test_pilutil.py
>
> try:
> import PIL.Image
> except ImportError:
> _have_PIL = False
> else:
> _have_PIL = True
> import scipy.misc.pilutil as pilutil
> TestCase.__test__ = _have_PIL
>
> I guess the options are:
>
> Completely disable tests with absent optional dependencies (as above)
>
> Add such tests at the 'full' testing level with a decorator specific
> for optional dependencies, like @optdeps
>
> Don't run these tests with standard test levels, just allow them to be run with:
>>>> module.test('optdeps') or nosetests -A optdeps /path/to/module
>
> Preferences anyone?
One thing to keep in mind is that trying to import wx is not always a safe thing
to do. On some Linux machines, I have ssh'ed into them without a local X server.
Trying to import wx on them caused the process to exit immediately; and
ImportError was not raised.
I'm happy to try to import PIL and have nose skip the tests if PIL is not found;
however, this approach cannot be safely extended to wx. You might want to raise
SkipTest instead of assigning TestCase.__test__=False, though. That tells the
user that a test is being skipped and gives them a command line option to force
nosetests to run the test anyways.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the SciPy-Dev
mailing list