Esempio n. 1
0
def test_get_potential_readers_gives_napari(mock_npe2_pm, tmp_reader):
    pth = 'my_file.tif'

    tmp_reader(mock_npe2_pm, 'napari', ['*.tif'])
    readers = get_potential_readers(pth)
    assert 'napari' in readers
    assert 'builtins' not in readers
Esempio n. 2
0
def test_get_potential_readers_plugin_name_disp_name(mock_npe2_pm, tmp_reader):
    pth = 'my_file.fake'

    fake_reader = tmp_reader(mock_npe2_pm, 'fake-reader')
    fake_reader.manifest.display_name = 'Fake Reader'
    readers = get_potential_readers(pth)

    assert readers['fake-reader'] == 'Fake Reader'
Esempio n. 3
0
def test_get_potential_readers_finds_readers(mock_npe2_pm, tmp_reader):
    pth = 'my_file.tif'

    tmp_reader(mock_npe2_pm, 'tif-reader', ['*.tif'])
    tmp_reader(mock_npe2_pm, 'all-reader', ['*.*'])

    readers = get_potential_readers(pth)
    assert len(readers) == 3
Esempio n. 4
0
def test_get_potential_readers_plugin_name_disp_name(
    tmp_plugin: DynamicPlugin, ):
    @tmp_plugin.contribute.reader(filename_patterns=['*.fake'])
    def read_tif(path):
        ...

    readers = get_potential_readers('my_file.fake')
    assert readers[tmp_plugin.name] == tmp_plugin.display_name
Esempio n. 5
0
def test_get_potential_readers_gives_napari(builtins,
                                            tmp_plugin: DynamicPlugin):
    @tmp_plugin.contribute.reader(filename_patterns=['*.tif'])
    def read_tif(path):
        ...

    readers = get_potential_readers('my_file.tif')
    assert 'napari' in readers
    assert 'builtins' not in readers
Esempio n. 6
0
def test_get_potential_readers_finds_readers(tmp_plugin: DynamicPlugin):
    tmp2 = tmp_plugin.spawn(register=True)

    @tmp_plugin.contribute.reader(filename_patterns=['*.tif'])
    def read_tif(path):
        ...

    @tmp2.contribute.reader(filename_patterns=['*.*'])
    def read_all(path):
        ...

    readers = get_potential_readers('my_file.tif')
    assert len(readers) == 2
Esempio n. 7
0
def prepare_remaining_readers(
    paths: List[str],
    plugin_name: Optional[str] = None,
    error: Optional[ReaderPluginError] = None,
):
    """Remove tried plugin from readers and raise error if no readers remain.

    Parameters
    ----------
    paths : List[str]
        paths to open
    plugin_name : str | None
        name of plugin previously tried, if any
    error : ReaderPluginError | None
        previous error raised in the process of opening

    Returns
    -------
    readers: Dict[str, str]
        remaining readers to present to user

    Raises
    ------
    ReaderPluginError
        raises previous error if no readers are left to try
    """
    readers = get_potential_readers(paths[0])
    # remove plugin we already tried e.g. prefered plugin
    if plugin_name in readers:
        del readers[plugin_name]
    # if there's no other readers left, raise the exception
    if not readers and error:
        raise ReaderPluginError(
            trans._(
                "Tried to read {path_message} with plugin {plugin}, because it was associated with that file extension/because it is the only plugin capable of reading that path, but it gave an error. Try associating a different plugin or installing a different plugin for this kind of file.",
                path_message=f"[{paths[0]}, ...]"
                if len(paths) > 1
                else paths[0],
                plugin=plugin_name,
            ),
            plugin_name,
            paths,
        ) from error

    return readers
Esempio n. 8
0
    def _filter_compatible_readers(self, new_pattern):
        """Filter reader dropwdown items to those that accept `new_extension`"""
        self._new_reader_dropdown.clear()

        readers = self._npe2_readers.copy()
        to_delete = []

        compatible_readers = get_potential_readers(new_pattern)
        for plugin_name, display_name in readers.items():
            if plugin_name not in compatible_readers:
                to_delete.append(plugin_name)

        for reader in to_delete:
            del readers[reader]
        readers.update(self._npe1_readers)

        if not readers:
            self._new_reader_dropdown.addItem("None available")
        else:
            for i, (plugin_name,
                    display_name) in enumerate(sorted(readers.items())):
                self._add_reader_choice(i, plugin_name, display_name)
Esempio n. 9
0
def test_get_potential_readers_none_available(mock_npe2_pm):
    pth = 'my_file.fake'

    readers = get_potential_readers(pth)
    assert len(readers) == 0
Esempio n. 10
0
def test_get_potential_readers_finds_npe1(mock_npe2_pm):
    pth = 'my_file.tif'
    readers = get_potential_readers(pth)
    assert 'builtins' in readers
Esempio n. 11
0
def test_get_potential_readers_none_available():
    assert not get_potential_readers('my_file.fake')