33import os
44
55import pytest
6+ from flaky import flaky
67
78from cell_annotator ._response_formats import BaseOutput
89from cell_annotator .model ._providers import AnthropicProvider , GeminiProvider , OpenAIProvider
@@ -65,6 +66,7 @@ def test_provider_repr(self):
6566class TestOpenAIProvider :
6667 """Isolated tests for OpenAI provider."""
6768
69+ @flaky
6870 @pytest .mark .skipif (not os .getenv ("OPENAI_API_KEY" ), reason = "OPENAI_API_KEY not available" )
6971 @pytest .mark .real_llm_query ()
7072 def test_openai_list_models_real (self ):
@@ -78,6 +80,7 @@ def test_openai_list_models_real(self):
7880 model_names = [model .lower () for model in models ]
7981 assert any ("gpt" in model for model in model_names )
8082
83+ @flaky
8184 @pytest .mark .skipif (not os .getenv ("OPENAI_API_KEY" ), reason = "OPENAI_API_KEY not available" )
8285 @pytest .mark .real_llm_query ()
8386 def test_openai_query_real (self ):
@@ -118,6 +121,7 @@ def test_openai_query_error_handling(self):
118121class TestGeminiProvider :
119122 """Isolated tests for Gemini provider."""
120123
124+ @flaky
121125 @pytest .mark .skipif (not os .getenv ("GEMINI_API_KEY" ), reason = "GEMINI_API_KEY not available" )
122126 @pytest .mark .real_llm_query ()
123127 def test_gemini_list_models_real (self ):
@@ -131,6 +135,7 @@ def test_gemini_list_models_real(self):
131135 model_names = [model .lower () for model in models ]
132136 assert any ("gemini" in model for model in model_names )
133137
138+ @flaky
134139 @pytest .mark .skipif (not os .getenv ("GEMINI_API_KEY" ), reason = "GEMINI_API_KEY not available" )
135140 @pytest .mark .real_llm_query ()
136141 def test_gemini_query_real (self ):
@@ -163,6 +168,7 @@ def test_gemini_initialization(self):
163168class TestAnthropicProvider :
164169 """Isolated tests for Anthropic provider."""
165170
171+ @flaky
166172 @pytest .mark .skipif (not os .getenv ("ANTHROPIC_API_KEY" ), reason = "ANTHROPIC_API_KEY not available" )
167173 @pytest .mark .real_llm_query ()
168174 def test_anthropic_list_models_real (self ):
@@ -176,6 +182,7 @@ def test_anthropic_list_models_real(self):
176182 model_names = [model .lower () for model in models ]
177183 assert any ("claude" in model for model in model_names )
178184
185+ @flaky
179186 @pytest .mark .skipif (not os .getenv ("ANTHROPIC_API_KEY" ), reason = "ANTHROPIC_API_KEY not available" )
180187 @pytest .mark .real_llm_query ()
181188 def test_anthropic_query_real (self ):
@@ -221,6 +228,7 @@ def test_provider_factory_pattern(self):
221228 assert provider is not None
222229 assert provider .__class__ .__name__ .lower ().startswith (name )
223230
231+ @flaky
224232 @pytest .mark .skipif (
225233 not any (os .getenv (key ) for key in ["OPENAI_API_KEY" , "GEMINI_API_KEY" , "ANTHROPIC_API_KEY" ]),
226234 reason = "No API keys available for testing" ,
0 commit comments