diff --git a/src/ensembl_tui/_util.py b/src/ensembl_tui/_util.py index 82b688e..d19f610 100644 --- a/src/ensembl_tui/_util.py +++ b/src/ensembl_tui/_util.py @@ -410,6 +410,13 @@ def __new__(cls, *args, **kwargs): return obj +_quotes = re.compile(r"^[\'\"]|[\'\"]$") + + +def strip_quotes(text: str): + return _quotes.sub("", text) + + def get_iterable_tasks( *, func: typing.Callable, diff --git a/src/ensembl_tui/cli.py b/src/ensembl_tui/cli.py index 89f0c15..2be851f 100644 --- a/src/ensembl_tui/cli.py +++ b/src/ensembl_tui/cli.py @@ -415,6 +415,7 @@ def alignments( shutil.rmtree(outdir, ignore_errors=True) config = elt_config.read_installed_cfg(installed) + align_name = elt_util.strip_quotes(align_name) align_path = config.path_to_alignment(align_name, elt_align.ALIGN_STORE_SUFFIX) if align_path is None: click.secho( @@ -480,17 +481,16 @@ def alignments( total=limit or len(locations), description="Getting alignment data", ) - for results in maker.as_completed(locations, show_progress=False): + for alignments in maker.as_completed(locations, show_progress=False): progress.update(task, advance=1) - if not results.obj: + if not alignments: continue - input_source = results.source.source - alignments = results.obj + input_source = alignments[0].info.source if len(alignments) == 1: writer(alignments[0], identifier=input_source) continue - for i, aln in enumerate(results.obj): + for i, aln in enumerate(alignments): identifier = f"{input_source}-{i}" writer(aln, identifier=identifier) diff --git a/tests/test_util.py b/tests/test_util.py index 7a289fa..679044d 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -220,3 +220,8 @@ def test_sanitise_stableid(biotype): stableid = f"{biotype}:{identifier}" got = elt_util.sanitise_stableid(stableid) assert got == identifier + + +@pytest.mark.parametrize("text", ["'primate'", '"primate"']) +def test_stripquotes(text): + assert elt_util.strip_quotes(text) == "primate"