Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite3e435e

Browse files
authored
More flexible method infer_provider (pydantic#1945)
Co-authored-by: Karel Hovorka <git@karel-hovorka.eu>
1 parent352acff commite3e435e

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

‎pydantic_ai_slim/pydantic_ai/providers/__init__.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,68 +48,74 @@ def model_profile(self, model_name: str) -> ModelProfile | None:
4848
returnNone# pragma: no cover
4949

5050

51-
definfer_provider(provider:str)->Provider[Any]:# noqa: C901
52-
"""Infer the provider from the provider name."""
51+
definfer_provider_class(provider:str)->type[Provider[Any]]:# noqa: C901
52+
"""Infers the provider class from the provider name."""
5353
ifprovider=='openai':
5454
from .openaiimportOpenAIProvider
5555

56-
returnOpenAIProvider()
56+
returnOpenAIProvider
5757
elifprovider=='deepseek':
5858
from .deepseekimportDeepSeekProvider
5959

60-
returnDeepSeekProvider()
60+
returnDeepSeekProvider
6161
elifprovider=='openrouter':
6262
from .openrouterimportOpenRouterProvider
6363

64-
returnOpenRouterProvider()
64+
returnOpenRouterProvider
6565
elifprovider=='azure':
6666
from .azureimportAzureProvider
6767

68-
returnAzureProvider()
68+
returnAzureProvider
6969
elifprovider=='google-vertex':
7070
from .google_verteximportGoogleVertexProvider
7171

72-
returnGoogleVertexProvider()
72+
returnGoogleVertexProvider
7373
elifprovider=='google-gla':
7474
from .google_glaimportGoogleGLAProvider
7575

76-
returnGoogleGLAProvider()
76+
returnGoogleGLAProvider
7777
# NOTE: We don't test because there are many ways the `boto3.client` can retrieve the credentials.
7878
elifprovider=='bedrock':
7979
from .bedrockimportBedrockProvider
8080

81-
returnBedrockProvider()
81+
returnBedrockProvider
8282
elifprovider=='groq':
8383
from .groqimportGroqProvider
8484

85-
returnGroqProvider()
85+
returnGroqProvider
8686
elifprovider=='anthropic':
8787
from .anthropicimportAnthropicProvider
8888

89-
returnAnthropicProvider()
89+
returnAnthropicProvider
9090
elifprovider=='mistral':
9191
from .mistralimportMistralProvider
9292

93-
returnMistralProvider()
93+
returnMistralProvider
9494
elifprovider=='cohere':
9595
from .cohereimportCohereProvider
9696

97-
returnCohereProvider()
97+
returnCohereProvider
9898
elifprovider=='grok':
9999
from .grokimportGrokProvider
100100

101-
returnGrokProvider()
101+
returnGrokProvider
102102
elifprovider=='fireworks':
103103
from .fireworksimportFireworksProvider
104104

105-
returnFireworksProvider()
105+
returnFireworksProvider
106106
elifprovider=='together':
107107
from .togetherimportTogetherProvider
108108

109-
returnTogetherProvider()
109+
returnTogetherProvider
110110
elifprovider=='heroku':
111111
from .herokuimportHerokuProvider
112112

113-
returnHerokuProvider()
113+
returnHerokuProvider
114114
else:# pragma: no cover
115115
raiseValueError(f'Unknown provider:{provider}')
116+
117+
118+
definfer_provider(provider:str)->Provider[Any]:
119+
"""Infer the provider from the provider name."""
120+
provider_class=infer_provider_class(provider)
121+
returnprovider_class()

‎tests/providers/test_provider_names.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,10 @@ def test_infer_provider(provider: str, provider_cls: type[Provider[Any]], except
6565
infer_provider(provider)
6666
else:
6767
assertisinstance(infer_provider(provider),provider_cls)
68+
69+
70+
@pytest.mark.parametrize(('provider','provider_cls','exception_has'),test_infer_provider_params)
71+
deftest_infer_provider_class(provider:str,provider_cls:type[Provider[Any]],exception_has:str|None):
72+
frompydantic_ai.providersimportinfer_provider_class
73+
74+
assertinfer_provider_class(provider)==provider_cls

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp