38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
"""Tests for lazy provider exports from nanobot.providers."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib
|
|
import sys
|
|
|
|
|
|
def test_importing_providers_package_is_lazy(monkeypatch) -> None:
|
|
monkeypatch.delitem(sys.modules, "nanobot.providers", raising=False)
|
|
monkeypatch.delitem(sys.modules, "nanobot.providers.litellm_provider", raising=False)
|
|
monkeypatch.delitem(sys.modules, "nanobot.providers.openai_codex_provider", raising=False)
|
|
monkeypatch.delitem(sys.modules, "nanobot.providers.azure_openai_provider", raising=False)
|
|
|
|
providers = importlib.import_module("nanobot.providers")
|
|
|
|
assert "nanobot.providers.litellm_provider" not in sys.modules
|
|
assert "nanobot.providers.openai_codex_provider" not in sys.modules
|
|
assert "nanobot.providers.azure_openai_provider" not in sys.modules
|
|
assert providers.__all__ == [
|
|
"LLMProvider",
|
|
"LLMResponse",
|
|
"LiteLLMProvider",
|
|
"OpenAICodexProvider",
|
|
"AzureOpenAIProvider",
|
|
]
|
|
|
|
|
|
def test_explicit_provider_import_still_works(monkeypatch) -> None:
|
|
monkeypatch.delitem(sys.modules, "nanobot.providers", raising=False)
|
|
monkeypatch.delitem(sys.modules, "nanobot.providers.litellm_provider", raising=False)
|
|
|
|
namespace: dict[str, object] = {}
|
|
exec("from nanobot.providers import LiteLLMProvider", namespace)
|
|
|
|
assert namespace["LiteLLMProvider"].__name__ == "LiteLLMProvider"
|
|
assert "nanobot.providers.litellm_provider" in sys.modules
|