From f6f9edc375ab222cb3eae33c3603e59b5d44386c Mon Sep 17 00:00:00 2001 From: Eric Apgar Date: Sun, 15 Mar 2026 21:36:19 -0500 Subject: [PATCH] Added test and exposed list_models. --- pyproject.toml | 2 +- src/llm/__init__.py | 17 ++++++++++++----- tests/test_list_models.py | 24 ++++++++++++++++++++++++ uv.lock | 2 +- 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 tests/test_list_models.py diff --git a/pyproject.toml b/pyproject.toml index efb1459..8af2b1b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "llm" # The pip install . -version = "0.4.1" +version = "0.4.2" description = "Library for easy use of LLMs." readme = "README.md" authors = [ diff --git a/src/llm/__init__.py b/src/llm/__init__.py index 66c4eda..cad55c5 100644 --- a/src/llm/__init__.py +++ b/src/llm/__init__.py @@ -3,28 +3,35 @@ __all__ = ( - "model", - "embedding") + 'model', + 'list_models', + 'embedding') if TYPE_CHECKING: from .models.selection import model + from .models.selection import list_models from .models.embed import EmbeddingModel def __getattr__(name: str) -> Any: - if name == "model": + if name == 'model': from .models.selection import model globals()[name] = model return model + + if name == 'list_models': + from .models.selection import list_models + globals()[name] = list_models + return list_models - if name == "embedding": + if name == 'embedding': from .models.embed import EmbeddingModel globals()[name] = EmbeddingModel return EmbeddingModel - raise AttributeError(f"module {__name__!r} has no attribute {name!r}") + raise AttributeError(f'module {__name__!r} has no attribute {name!r}') def __dir__() -> list[str]: diff --git a/tests/test_list_models.py b/tests/test_list_models.py new file mode 100644 index 0000000..8654e9c --- /dev/null +++ b/tests/test_list_models.py @@ -0,0 +1,24 @@ +""" +Tests for llm.list_models. +""" + +import pytest + +import llm + + +def test_list_models_llm(): + result = llm.list_models(kind='llm') + assert isinstance(result, list) + assert len(result) > 0 + + +def test_list_models_embed(): + result = llm.list_models(kind='embed') + assert isinstance(result, list) + assert len(result) > 0 + + +def test_list_models_invalid_kind(): + with pytest.raises(ValueError): + llm.list_models(kind='invalid') diff --git a/uv.lock b/uv.lock index 9ce70fd..b95a169 100644 --- a/uv.lock +++ b/uv.lock @@ -192,7 +192,7 @@ wheels = [ [[package]] name = "llm" -version = "0.4.1" +version = "0.4.2" source = { editable = "." } dependencies = [ { name = "llm-conversation" },