From 1ea5feeeb531aac500f1b772c4c618c44d895064 Mon Sep 17 00:00:00 2001 From: Luis Pedro Coelho Date: Fri, 12 Sep 2025 00:13:22 +0100 Subject: [PATCH 1/2] RFCT Slightly simpler code --- progenomes/cli/view.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/progenomes/cli/view.py b/progenomes/cli/view.py index 4c8a1d0..d65f8a4 100644 --- a/progenomes/cli/view.py +++ b/progenomes/cli/view.py @@ -1,6 +1,5 @@ import polars as pl import pandas as pd -import bz2 INITIAL_URL = "https://progenomes.embl.de/data" @@ -82,21 +81,24 @@ ] -def process_url(item: str): +def get_url(item: str): + for mapping in URL_MAPPING: + if mapping["name"] == item: + break + else: + raise ValueError(f"Item '{item}' not found in URL mapping.") mapping = next(iter(i for i in URL_MAPPING if i["name"] == item), None) if mapping["file-prefix"] is None: - return f"{INITIAL_URL}/{mapping['filename']}.{mapping['filetype']}", mapping[ - "filetype" - ] + path = f"{mapping['filename']}.{mapping['filetype']}" else: - return ( - f"{INITIAL_URL}/{mapping['file-prefix']}_{mapping['filename']}.{mapping['filetype']}", - mapping["filetype"], - ) + path = f"{mapping['file-prefix']}_{mapping['filename']}.{mapping['filetype']}" + return ( + f"{INITIAL_URL}/{path}", mapping["filetype"], + ) def view(target): - url, filetype = process_url(target) + url, filetype = get_url(target) if ".bz2" in filetype: return pl.from_pandas(pd.read_table(url)) else: From 153c03b84abe6d7d244cda6e853545d4eedbed7f Mon Sep 17 00:00:00 2001 From: Luis Pedro Coelho Date: Fri, 12 Sep 2025 00:13:56 +0100 Subject: [PATCH 2/2] MIN Avoid slow top level slow imports For actions like --help, this makes a noticable difference --- progenomes/cli/view.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/progenomes/cli/view.py b/progenomes/cli/view.py index d65f8a4..e307919 100644 --- a/progenomes/cli/view.py +++ b/progenomes/cli/view.py @@ -1,5 +1,3 @@ -import polars as pl -import pandas as pd INITIAL_URL = "https://progenomes.embl.de/data" @@ -98,6 +96,9 @@ def get_url(item: str): def view(target): + # These should not be imported at the top level as they are slow to import + import polars as pl + import pandas as pd url, filetype = get_url(target) if ".bz2" in filetype: return pl.from_pandas(pd.read_table(url))