예제 #1
0
def test_sample_data_triggers_reader_dialog(mock_npe2_pm, tmp_reader,
                                            make_napari_viewer):
    """Sample data pops reader dialog if multiple compatible readers"""
    # make two tmp readers that take tif files
    tmp_reader(mock_npe2_pm, 'tif-reader', filename_patterns=['*.tif'])
    tmp_reader(mock_npe2_pm, 'other-tif-reader', filename_patterns=['*.tif'])

    # make a sample data reader for tif file
    tmp_sample_plugin = DynamicPlugin('sample-plugin', mock_npe2_pm)
    my_sample = SampleDataURI(
        key='tmp-sample',
        display_name='Temp Sample',
        uri='some-path/some-file.tif',
    )
    tmp_sample_plugin.manifest.contributions.sample_data = [my_sample]
    tmp_sample_plugin.register()

    viewer = make_napari_viewer()
    sample_action = viewer.window.file_menu.open_sample_menu.actions()[0]
    with mock.patch(
            'napari._qt.menus.file_menu.handle_gui_reading') as mock_read:
        sample_action.trigger()

    # assert that handle gui reading was called
    mock_read.assert_called_once()
예제 #2
0
    def make_plugin(
        pm,
        name,
        filename_patterns=['*.fake'],
    ):
        reader_plugin = DynamicPlugin(name, plugin_manager=pm)

        @reader_plugin.contribute.reader(filename_patterns=filename_patterns)
        def read_func(pth):
            ...

        reader_plugin.register()
        return reader_plugin
예제 #3
0
파일: conftest.py 프로젝트: jojoelfe/napari
    def make_plugin(
        pm, name, filename_patterns=['*.fake'], accepts_directories=False
    ):
        reader_plugin = DynamicPlugin(name, plugin_manager=pm)

        @reader_plugin.contribute.reader(
            filename_patterns=filename_patterns,
            accepts_directories=accepts_directories,
        )
        def read_func(pth):
            ...

        reader_plugin.register()
        return reader_plugin
예제 #4
0
def builtins(_mock_npe2_pm: PluginManager):
    plugin = DynamicPlugin('napari', plugin_manager=_mock_npe2_pm)
    mf = PluginManifest.from_file(Path(__file__).parent / 'builtins.yaml')
    plugin.manifest = mf
    with plugin:
        yield plugin
예제 #5
0
@pytest.fixture
def builtins(_mock_npe2_pm: PluginManager):
    plugin = DynamicPlugin('napari', plugin_manager=_mock_npe2_pm)
    mf = PluginManifest.from_file(Path(__file__).parent / 'builtins.yaml')
    plugin.manifest = mf
    with plugin:
        yield plugin


@pytest.fixture
def tmp_plugin(_mock_npe2_pm: PluginManager):
    # guarantee that the name is unique, even if tmp_plugin has already been used
    count = itertools.count(0)
    while (name := f'tmp_plugin{next(count)}') in _mock_npe2_pm._manifests:
        continue
    with DynamicPlugin(name, plugin_manager=_mock_npe2_pm) as plugin:
        yield plugin


def _event_check(instance):
    def _prepare_check(name, no_event_):
        def check(instance, no_event=no_event_):
            if name in no_event:
                assert not hasattr(instance.events,
                                   name), f"event {name} defined"
            else:
                assert hasattr(instance.events,
                               name), f"event {name} not defined"

        return check