diff --git a/skimage/viewer/tests/test_plugins.py b/skimage/viewer/tests/test_plugins.py index 59b1f3e4..2f4d5ef5 100644 --- a/skimage/viewer/tests/test_plugins.py +++ b/skimage/viewer/tests/test_plugins.py @@ -4,15 +4,21 @@ import skimage import skimage.data as data from skimage.filter.rank import median from skimage.morphology import disk -from skimage.viewer import ImageViewer -from skimage.viewer.qt import qt_api from numpy.testing import assert_equal, assert_allclose, assert_almost_equal from numpy.testing.decorators import skipif -from skimage.viewer.plugins import ( - LineProfile, Measure, CannyPlugin, LabelPainter, Crop, ColorHistogram, - PlotPlugin) -from skimage.viewer.plugins.base import Plugin -from skimage.viewer.widgets import Slider + +try: + from skimage.viewer.qt import qt_api + from skimage.viewer import ImageViewer + from skimage.viewer.plugins import ( + LineProfile, Measure, CannyPlugin, LabelPainter, Crop, ColorHistogram, + PlotPlugin) + from skimage.viewer.plugins.base import Plugin + from skimage.viewer.widgets import Slider +except ImportError: + skip_all = True +else: + skip_all = False def setup_line_profile(image, limits='image'): @@ -22,7 +28,7 @@ def setup_line_profile(image, limits='image'): return plugin -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_line_profile(): """ Test a line profile using an ndim=2 image""" plugin = setup_line_profile(data.camera()) @@ -36,7 +42,7 @@ def test_line_profile(): assert_allclose(scan_data.mean(), 0.2812, rtol=1e-3) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_line_profile_rgb(): """ Test a line profile using an ndim=3 image""" plugin = setup_line_profile(data.chelsea(), limits=None) @@ -51,7 +57,7 @@ def test_line_profile_rgb(): assert_allclose(scan_data.mean(), 0.4359, rtol=1e-3) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_line_profile_dynamic(): """Test a line profile updating after an image transform""" image = data.coins()[:-50, :] # shave some off to make the line lower @@ -76,7 +82,7 @@ def test_line_profile_dynamic(): assert_almost_equal(np.max(line) - np.min(line), 0.639, 1) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_measure(): image = data.camera() viewer = ImageViewer(image) @@ -88,7 +94,7 @@ def test_measure(): assert_equal(str(m._angle.text[:5]), '135.0') -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_canny(): image = data.camera() viewer = ImageViewer(image) @@ -101,7 +107,7 @@ def test_canny(): assert edges.sum() == 2852 -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_label_painter(): image = data.camera() moon = data.moon() @@ -119,7 +125,7 @@ def test_label_painter(): assert_equal(lp.paint_tool.shape, moon.shape) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_crop(): image = data.camera() viewer = ImageViewer(image) @@ -130,7 +136,7 @@ def test_crop(): assert_equal(viewer.image.shape, (101, 101)) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_color_histogram(): image = skimage.img_as_float(data.load('color.png')) viewer = ImageViewer(image) @@ -142,7 +148,7 @@ def test_color_histogram(): assert_almost_equal(viewer.image.std(), 0.325, 3) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_plot_plugin(): viewer = ImageViewer(data.moon()) plugin = PlotPlugin(image_filter=lambda x: x) @@ -154,7 +160,7 @@ def test_plot_plugin(): viewer.close() -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_plugin(): img = skimage.img_as_float(data.moon()) viewer = ImageViewer(img) diff --git a/skimage/viewer/tests/test_tools.py b/skimage/viewer/tests/test_tools.py index 853dd3d8..8cffd323 100644 --- a/skimage/viewer/tests/test_tools.py +++ b/skimage/viewer/tests/test_tools.py @@ -2,14 +2,20 @@ from collections import namedtuple import numpy as np from skimage import data -from skimage.viewer import ImageViewer -from skimage.viewer.canvastools import ( - LineTool, ThickLineTool, RectangleTool, PaintTool) -from skimage.viewer.canvastools.base import CanvasToolBase -from skimage.viewer.qt import qt_api from numpy.testing import assert_equal from numpy.testing.decorators import skipif +try: + from skimage.viewer.qt import qt_api + from skimage.viewer import ImageViewer + from skimage.viewer.canvastools import ( + LineTool, ThickLineTool, RectangleTool, PaintTool) + from skimage.viewer.canvastools.base import CanvasToolBase +except ImportError: + skip_all = True +else: + skip_all = False + def get_end_points(image): h, w = image.shape[0:2] @@ -70,7 +76,7 @@ def create_mouse_event(ax, button=1, xdata=0, ydata=0, key=None): return event -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_line_tool(): img = data.camera() viewer = ImageViewer(img) @@ -96,7 +102,7 @@ def test_line_tool(): assert_equal(tool.geometry, np.array([[100, 100], [10, 10]])) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_thick_line_tool(): img = data.camera() viewer = ImageViewer(img) @@ -121,7 +127,7 @@ def test_thick_line_tool(): assert_equal(tool.linewidth, 1) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_rect_tool(): img = data.camera() viewer = ImageViewer(img) @@ -153,7 +159,7 @@ def test_rect_tool(): assert_equal(tool.geometry, [10, 100, 10, 100]) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_paint_tool(): img = data.moon() viewer = ImageViewer(img) @@ -189,7 +195,7 @@ def test_paint_tool(): assert_equal(tool.overlay.sum(), 0) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_base_tool(): img = data.moon() viewer = ImageViewer(img) diff --git a/skimage/viewer/tests/test_utils.py b/skimage/viewer/tests/test_utils.py index b72d99ab..30d74a51 100644 --- a/skimage/viewer/tests/test_utils.py +++ b/skimage/viewer/tests/test_utils.py @@ -1,8 +1,12 @@ # -*- coding: utf-8 -*- -from skimage.viewer.qt import qt_api, QtCore, QtGui from numpy.testing.decorators import skipif -from skimage.viewer import utils -from skimage.viewer.utils import dialogs + +try: + from skimage.viewer.qt import qt_api, QtCore, QtGui + from skimage.viewer import utils + from skimage.viewer.utils import dialogs +except ImportError: + qt_api = None @skipif(qt_api is None) @@ -13,6 +17,7 @@ def test_event_loop(): utils.start_qtapp() +@skipif(qt_api is None) def test_format_filename(): fname = dialogs._format_filename(('apple', 2)) assert fname == 'apple' @@ -20,6 +25,7 @@ def test_format_filename(): assert fname is None +@skipif(qt_api is None) def test_open_file_dialog(): utils.init_qtapp() timer = QtCore.QTimer() @@ -28,6 +34,7 @@ def test_open_file_dialog(): assert filename is None +@skipif(qt_api is None) def test_save_file_dialog(): utils.init_qtapp() timer = QtCore.QTimer() diff --git a/skimage/viewer/tests/test_viewer.py b/skimage/viewer/tests/test_viewer.py index f87e49b3..2a232b29 100644 --- a/skimage/viewer/tests/test_viewer.py +++ b/skimage/viewer/tests/test_viewer.py @@ -1,16 +1,22 @@ from skimage import data -from skimage.viewer import ImageViewer, CollectionViewer from skimage.transform import pyramid_gaussian -from skimage.viewer.plugins import OverlayPlugin -from skimage.viewer.plugins.overlayplugin import recent_mpl_version from skimage.filter import sobel -from skimage.viewer.qt import qt_api, QtGui, QtCore from numpy.testing import assert_equal from numpy.testing.decorators import skipif +try: + from skimage.viewer.qt import qt_api, QtGui, QtCore + from skimage.viewer.plugins import OverlayPlugin + from skimage.viewer.plugins.overlayplugin import recent_mpl_version + from skimage.viewer import ImageViewer, CollectionViewer +except ImportError: + skip_all = True +else: + skip_all = False -@skipif(qt_api is None) + +@skipif(skip_all or qt_api is None) def test_viewer(): lena = data.lena() coins = data.coins() @@ -37,7 +43,7 @@ def make_key_event(key): QtCore.Qt.NoModifier) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_collection_viewer(): img = data.lena() @@ -53,7 +59,7 @@ def test_collection_viewer(): view._format_coord(10, 10) -@skipif(qt_api is None or not recent_mpl_version()) +@skipif(skip_all or qt_api is None or not recent_mpl_version()) def test_viewer_with_overlay(): img = data.coins() ov = OverlayPlugin(image_filter=sobel) diff --git a/skimage/viewer/tests/test_widgets.py b/skimage/viewer/tests/test_widgets.py index 54b9b7bb..3a29c4ba 100644 --- a/skimage/viewer/tests/test_widgets.py +++ b/skimage/viewer/tests/test_widgets.py @@ -1,15 +1,20 @@ import os from skimage import data, img_as_float, io -from skimage.viewer import ImageViewer -from skimage.viewer.widgets import ( - Slider, OKCancelButtons, SaveButtons, ComboBox, Text) -from skimage.viewer.plugins.base import Plugin - -from skimage.viewer.qt import qt_api, QtGui, QtCore from numpy.testing import assert_almost_equal, assert_equal from numpy.testing.decorators import skipif +try: + from skimage.viewer.qt import qt_api, QtGui, QtCore + from skimage.viewer import ImageViewer + from skimage.viewer.widgets import ( + Slider, OKCancelButtons, SaveButtons, ComboBox, Text) + from skimage.viewer.plugins.base import Plugin +except ImportError: + skip_all = True +else: + skip_all = False + def get_image_viewer(): image = data.coins() @@ -18,7 +23,7 @@ def get_image_viewer(): return viewer -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_combo_box(): viewer = get_image_viewer() cb = ComboBox('hello', ('a', 'b', 'c')) @@ -31,7 +36,7 @@ def test_combo_box(): assert_equal(cb.index, 2) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_text_widget(): viewer = get_image_viewer() txt = Text('hello', 'hello, world!') @@ -42,7 +47,7 @@ def test_text_widget(): assert_equal(str(txt.text), 'goodbye, world!') -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_slider_int(): viewer = get_image_viewer() sld = Slider('radius', 2, 10, value_type='int') @@ -56,7 +61,7 @@ def test_slider_int(): assert_equal(sld.val, 5) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_slider_float(): viewer = get_image_viewer() sld = Slider('alpha', 2.1, 3.1, value=2.1, value_type='float', @@ -71,7 +76,7 @@ def test_slider_float(): assert_almost_equal(sld.val, 2.5, 2) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_save_buttons(): viewer = get_image_viewer() sv = SaveButtons() @@ -94,7 +99,7 @@ def test_save_buttons(): assert_almost_equal(img, viewer.image) -@skipif(qt_api is None) +@skipif(skip_all or qt_api is None) def test_ok_buttons(): viewer = get_image_viewer() ok = OKCancelButtons()