mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-04-02 17:32:39 +00:00
- Remove litellm dependency entirely (supply chain risk mitigation) - Add AnthropicProvider (native SDK) and OpenAICompatProvider (unified) - Merge CustomProvider into OpenAICompatProvider, delete custom_provider.py - Add ProviderSpec.backend field for declarative provider routing - Remove _resolve_model, find_gateway, find_by_model (dead heuristics) - Pass resolved spec directly into provider — zero internal lookups - Stub out litellm-dependent model database (cli/models.py) - Add anthropic>=0.45.0 to dependencies, remove litellm - 593 tests passed, net -1034 lines
41 lines
1.7 KiB
Python
41 lines
1.7 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.anthropic_provider", raising=False)
|
|
monkeypatch.delitem(sys.modules, "nanobot.providers.openai_compat_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.anthropic_provider" not in sys.modules
|
|
assert "nanobot.providers.openai_compat_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",
|
|
"AnthropicProvider",
|
|
"OpenAICompatProvider",
|
|
"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.anthropic_provider", raising=False)
|
|
|
|
namespace: dict[str, object] = {}
|
|
exec("from nanobot.providers import AnthropicProvider", namespace)
|
|
|
|
assert namespace["AnthropicProvider"].__name__ == "AnthropicProvider"
|
|
assert "nanobot.providers.anthropic_provider" in sys.modules
|