File size: 1,696 Bytes
7e90cd3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ed28aa2
 
 
7e90cd3
 
 
 
 
 
 
ed28aa2
7e90cd3
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import ast
from pathlib import Path
import unittest


class ProviderModelDefaultsTests(unittest.TestCase):
    @staticmethod
    def _provider_defaults() -> dict[str, str]:
        source = Path(__file__).resolve().parents[1] / "models" / "ai_client.py"
        module = ast.parse(source.read_text(encoding="utf-8"))
        for node in module.body:
            if isinstance(node, ast.Assign) and any(
                isinstance(target, ast.Name) and target.id == "_PROVIDER_DEFS"
                for target in node.targets
            ):
                definitions = ast.literal_eval(node.value)
                return {item["name"]: item["default_model"] for item in definitions}
        raise AssertionError("_PROVIDER_DEFS non trovato")

    def test_provider_fallbacks_use_supported_model_ids(self):
        defaults = self._provider_defaults()

        self.assertEqual(defaults["gemini"], "gemini-3.6-flash")
        self.assertEqual(defaults["cerebras"], "gpt-oss-120b")
        self.assertEqual(defaults["openrouter"], "openai/gpt-oss-20b:free")
        self.assertEqual(defaults["sambanova"], "DeepSeek-V3.1")
        self.assertEqual(defaults["hf_router"], "Qwen/Qwen2.5-Coder-32B-Instruct")
        self.assertEqual(defaults["nvidia"], "nvidia/nemotron-3-ultra-550b-a55b")

    def test_retired_provider_fallbacks_are_not_reintroduced(self):
        defaults = set(self._provider_defaults().values())

        self.assertNotIn("gemini-2.0-flash-exp", defaults)
        self.assertNotIn("llama-4-scout", defaults)
        self.assertNotIn("meta-llama/llama-4-scout:free", defaults)
        self.assertNotIn("DeepSeek-V3.2", defaults)


if __name__ == "__main__":
    unittest.main()