From 6308fb269089cf5b4a997b40866636d0d24a86ef Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sat, 15 Aug 2026 00:06:27 +0200 Subject: [PATCH] lib.Types: Accept bare string in LoadTypes() LoadTypes() declares mod_names as Iterable[str], so passing a single module name as a bare string is not caught at call time and the string is iterated character by character at load time, producing a ModuleNotFoundError for the first character instead of a clear error. Normalize a bare string to a one-element list in __init__() and widen the annotation accordingly, so that both forms work. Assisted-by: unsloth/Qwen3.8-27B-GGUF:Q4_K_M with pi.dev v0.84.2 Signed-off-by: Jan Lindemann --- src/python/jw/pkg/lib/Types.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/python/jw/pkg/lib/Types.py b/src/python/jw/pkg/lib/Types.py index 42caffcc..bfae01ad 100644 --- a/src/python/jw/pkg/lib/Types.py +++ b/src/python/jw/pkg/lib/Types.py @@ -44,11 +44,15 @@ class LoadTypes(Types[T]): # export def __init__( self, - mod_names: Iterable[str], + mod_names: str | Iterable[str], type_name_filter: str | None = None, type_filter: Sequence[type[Any]] | None = None, debug_level: int | None = None, ) -> None: + # -- Accept a single module name as well, so that the common + # case does not require wrapping the name in a list. + if isinstance(mod_names, str): + mod_names = [mod_names] if debug_level is None: val = os.getenv('JW_LOG_LEVEL_LOAD_TYPES') if val is not None: -- 2.55.0