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()