pydantic-ai-slim 1.0.17__py3-none-any.whl → 1.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pydantic-ai-slim might be problematic. Click here for more details.

@@ -4,7 +4,6 @@ from __future__ import annotations as _annotations
4
4
 
5
5
  import os
6
6
  from typing import TYPE_CHECKING, Any, Literal, overload
7
- from urllib.parse import urljoin
8
7
 
9
8
  import httpx
10
9
 
@@ -84,22 +83,22 @@ def gateway_provider(
84
83
  ' to use the Pydantic AI Gateway provider.'
85
84
  )
86
85
 
87
- base_url = base_url or os.getenv('PYDANTIC_AI_GATEWAY_BASE_URL', 'http://localhost:8787')
86
+ base_url = base_url or os.getenv('PYDANTIC_AI_GATEWAY_BASE_URL', 'http://localhost:8787/proxy')
88
87
  http_client = http_client or cached_async_http_client(provider=f'gateway-{upstream_provider}')
89
88
  http_client.event_hooks = {'request': [_request_hook]}
90
89
 
91
90
  if upstream_provider in ('openai', 'openai-chat'):
92
91
  from .openai import OpenAIProvider
93
92
 
94
- return OpenAIProvider(api_key=api_key, base_url=urljoin(base_url, 'openai'), http_client=http_client)
93
+ return OpenAIProvider(api_key=api_key, base_url=_merge_url_path(base_url, 'openai'), http_client=http_client)
95
94
  elif upstream_provider == 'openai-responses':
96
95
  from .openai import OpenAIProvider
97
96
 
98
- return OpenAIProvider(api_key=api_key, base_url=urljoin(base_url, 'openai'), http_client=http_client)
97
+ return OpenAIProvider(api_key=api_key, base_url=_merge_url_path(base_url, 'openai'), http_client=http_client)
99
98
  elif upstream_provider == 'groq':
100
99
  from .groq import GroqProvider
101
100
 
102
- return GroqProvider(api_key=api_key, base_url=urljoin(base_url, 'groq'), http_client=http_client)
101
+ return GroqProvider(api_key=api_key, base_url=_merge_url_path(base_url, 'groq'), http_client=http_client)
103
102
  elif upstream_provider == 'anthropic':
104
103
  from anthropic import AsyncAnthropic
105
104
 
@@ -108,7 +107,7 @@ def gateway_provider(
108
107
  return AnthropicProvider(
109
108
  anthropic_client=AsyncAnthropic(
110
109
  auth_token=api_key,
111
- base_url=urljoin(base_url, 'anthropic'),
110
+ base_url=_merge_url_path(base_url, 'anthropic'),
112
111
  http_client=http_client,
113
112
  )
114
113
  )
@@ -122,7 +121,7 @@ def gateway_provider(
122
121
  vertexai=True,
123
122
  api_key='unset',
124
123
  http_options={
125
- 'base_url': f'{base_url}/google-vertex',
124
+ 'base_url': _merge_url_path(base_url, 'google-vertex'),
126
125
  'headers': {'User-Agent': get_user_agent(), 'Authorization': api_key},
127
126
  # TODO(Marcelo): Until https://github.com/googleapis/python-genai/issues/1357 is solved.
128
127
  'async_client_args': {
@@ -185,3 +184,13 @@ async def _request_hook(request: httpx.Request) -> httpx.Request:
185
184
  request.headers.update(headers)
186
185
 
187
186
  return request
187
+
188
+
189
+ def _merge_url_path(base_url: str, path: str) -> str:
190
+ """Merge a base URL and a path.
191
+
192
+ Args:
193
+ base_url: The base URL to merge.
194
+ path: The path to merge.
195
+ """
196
+ return base_url.rstrip('/') + '/' + path.lstrip('/')
@@ -0,0 +1,102 @@
1
+ from __future__ import annotations as _annotations
2
+
3
+ import os
4
+ from typing import overload
5
+
6
+ import httpx
7
+
8
+ from pydantic_ai import ModelProfile
9
+ from pydantic_ai.exceptions import UserError
10
+ from pydantic_ai.models import cached_async_http_client
11
+ from pydantic_ai.profiles.deepseek import deepseek_model_profile
12
+ from pydantic_ai.profiles.google import google_model_profile
13
+ from pydantic_ai.profiles.harmony import harmony_model_profile
14
+ from pydantic_ai.profiles.meta import meta_model_profile
15
+ from pydantic_ai.profiles.mistral import mistral_model_profile
16
+ from pydantic_ai.profiles.moonshotai import moonshotai_model_profile
17
+ from pydantic_ai.profiles.openai import OpenAIJsonSchemaTransformer, OpenAIModelProfile
18
+ from pydantic_ai.profiles.qwen import qwen_model_profile
19
+ from pydantic_ai.providers import Provider
20
+
21
+ try:
22
+ from openai import AsyncOpenAI
23
+ except ImportError as _import_error: # pragma: no cover
24
+ raise ImportError(
25
+ 'Please install the `openai` package to use the Nebius provider, '
26
+ 'you can use the `openai` optional group — `pip install "pydantic-ai-slim[openai]"`'
27
+ ) from _import_error
28
+
29
+
30
+ class NebiusProvider(Provider[AsyncOpenAI]):
31
+ """Provider for Nebius AI Studio API."""
32
+
33
+ @property
34
+ def name(self) -> str:
35
+ return 'nebius'
36
+
37
+ @property
38
+ def base_url(self) -> str:
39
+ return 'https://api.studio.nebius.com/v1'
40
+
41
+ @property
42
+ def client(self) -> AsyncOpenAI:
43
+ return self._client
44
+
45
+ def model_profile(self, model_name: str) -> ModelProfile | None:
46
+ provider_to_profile = {
47
+ 'meta-llama': meta_model_profile,
48
+ 'deepseek-ai': deepseek_model_profile,
49
+ 'qwen': qwen_model_profile,
50
+ 'google': google_model_profile,
51
+ 'openai': harmony_model_profile, # used for gpt-oss models on Nebius
52
+ 'mistralai': mistral_model_profile,
53
+ 'moonshotai': moonshotai_model_profile,
54
+ }
55
+
56
+ profile = None
57
+
58
+ try:
59
+ model_name = model_name.lower()
60
+ provider, model_name = model_name.split('/', 1)
61
+ except ValueError:
62
+ raise UserError(f"Model name must be in 'provider/model' format, got: {model_name!r}")
63
+ if provider in provider_to_profile:
64
+ profile = provider_to_profile[provider](model_name)
65
+
66
+ # As NebiusProvider is always used with OpenAIChatModel, which used to unconditionally use OpenAIJsonSchemaTransformer,
67
+ # we need to maintain that behavior unless json_schema_transformer is set explicitly
68
+ return OpenAIModelProfile(json_schema_transformer=OpenAIJsonSchemaTransformer).update(profile)
69
+
70
+ @overload
71
+ def __init__(self) -> None: ...
72
+
73
+ @overload
74
+ def __init__(self, *, api_key: str) -> None: ...
75
+
76
+ @overload
77
+ def __init__(self, *, api_key: str, http_client: httpx.AsyncClient) -> None: ...
78
+
79
+ @overload
80
+ def __init__(self, *, openai_client: AsyncOpenAI | None = None) -> None: ...
81
+
82
+ def __init__(
83
+ self,
84
+ *,
85
+ api_key: str | None = None,
86
+ openai_client: AsyncOpenAI | None = None,
87
+ http_client: httpx.AsyncClient | None = None,
88
+ ) -> None:
89
+ api_key = api_key or os.getenv('NEBIUS_API_KEY')
90
+ if not api_key and openai_client is None:
91
+ raise UserError(
92
+ 'Set the `NEBIUS_API_KEY` environment variable or pass it via '
93
+ '`NebiusProvider(api_key=...)` to use the Nebius AI Studio provider.'
94
+ )
95
+
96
+ if openai_client is not None:
97
+ self._client = openai_client
98
+ elif http_client is not None:
99
+ self._client = AsyncOpenAI(base_url=self.base_url, api_key=api_key, http_client=http_client)
100
+ else:
101
+ http_client = cached_async_http_client(provider='nebius')
102
+ self._client = AsyncOpenAI(base_url=self.base_url, api_key=api_key, http_client=http_client)
@@ -109,6 +109,7 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
109
109
  /,
110
110
  *,
111
111
  name: str | None = None,
112
+ description: str | None = None,
112
113
  retries: int | None = None,
113
114
  prepare: ToolPrepareFunc[AgentDepsT] | None = None,
114
115
  docstring_format: DocstringFormat | None = None,
@@ -126,6 +127,7 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
126
127
  /,
127
128
  *,
128
129
  name: str | None = None,
130
+ description: str | None = None,
129
131
  retries: int | None = None,
130
132
  prepare: ToolPrepareFunc[AgentDepsT] | None = None,
131
133
  docstring_format: DocstringFormat | None = None,
@@ -169,6 +171,7 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
169
171
  Args:
170
172
  func: The tool function to register.
171
173
  name: The name of the tool, defaults to the function name.
174
+ description: The description of the tool,defaults to the function docstring.
172
175
  retries: The number of retries to allow for this tool, defaults to the agent's default retries,
173
176
  which defaults to 1.
174
177
  prepare: custom method to prepare the tool definition for each step, return `None` to omit this
@@ -197,18 +200,19 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
197
200
  ) -> ToolFuncEither[AgentDepsT, ToolParams]:
198
201
  # noinspection PyTypeChecker
199
202
  self.add_function(
200
- func_,
201
- None,
202
- name,
203
- retries,
204
- prepare,
205
- docstring_format,
206
- require_parameter_descriptions,
207
- schema_generator,
208
- strict,
209
- sequential,
210
- requires_approval,
211
- metadata,
203
+ func=func_,
204
+ takes_ctx=None,
205
+ name=name,
206
+ description=description,
207
+ retries=retries,
208
+ prepare=prepare,
209
+ docstring_format=docstring_format,
210
+ require_parameter_descriptions=require_parameter_descriptions,
211
+ schema_generator=schema_generator,
212
+ strict=strict,
213
+ sequential=sequential,
214
+ requires_approval=requires_approval,
215
+ metadata=metadata,
212
216
  )
213
217
  return func_
214
218
 
@@ -219,6 +223,7 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
219
223
  func: ToolFuncEither[AgentDepsT, ToolParams],
220
224
  takes_ctx: bool | None = None,
221
225
  name: str | None = None,
226
+ description: str | None = None,
222
227
  retries: int | None = None,
223
228
  prepare: ToolPrepareFunc[AgentDepsT] | None = None,
224
229
  docstring_format: DocstringFormat | None = None,
@@ -240,6 +245,7 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
240
245
  func: The tool function to register.
241
246
  takes_ctx: Whether the function takes a [`RunContext`][pydantic_ai.tools.RunContext] as its first argument. If `None`, this is inferred from the function signature.
242
247
  name: The name of the tool, defaults to the function name.
248
+ description: The description of the tool, defaults to the function docstring.
243
249
  retries: The number of retries to allow for this tool, defaults to the agent's default retries,
244
250
  which defaults to 1.
245
251
  prepare: custom method to prepare the tool definition for each step, return `None` to omit this
@@ -279,6 +285,7 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
279
285
  func,
280
286
  takes_ctx=takes_ctx,
281
287
  name=name,
288
+ description=description,
282
289
  max_retries=retries,
283
290
  prepare=prepare,
284
291
  docstring_format=docstring_format,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai-slim
3
- Version: 1.0.17
3
+ Version: 1.1.0
4
4
  Summary: Agent Framework / shim to use Pydantic with LLMs, slim package
5
5
  Project-URL: Homepage, https://github.com/pydantic/pydantic-ai/tree/main/pydantic_ai_slim
6
6
  Project-URL: Source, https://github.com/pydantic/pydantic-ai/tree/main/pydantic_ai_slim
@@ -33,7 +33,7 @@ Requires-Dist: genai-prices>=0.0.30
33
33
  Requires-Dist: griffe>=1.3.2
34
34
  Requires-Dist: httpx>=0.27
35
35
  Requires-Dist: opentelemetry-api>=1.28.0
36
- Requires-Dist: pydantic-graph==1.0.17
36
+ Requires-Dist: pydantic-graph==1.1.0
37
37
  Requires-Dist: pydantic>=2.10
38
38
  Requires-Dist: typing-inspection>=0.4.0
39
39
  Provides-Extra: a2a
@@ -57,7 +57,7 @@ Requires-Dist: dbos>=1.14.0; extra == 'dbos'
57
57
  Provides-Extra: duckduckgo
58
58
  Requires-Dist: ddgs>=9.0.0; extra == 'duckduckgo'
59
59
  Provides-Extra: evals
60
- Requires-Dist: pydantic-evals==1.0.17; extra == 'evals'
60
+ Requires-Dist: pydantic-evals==1.1.0; extra == 'evals'
61
61
  Provides-Extra: google
62
62
  Requires-Dist: google-genai>=1.31.0; extra == 'google'
63
63
  Provides-Extra: groq
@@ -72,6 +72,8 @@ Provides-Extra: mistral
72
72
  Requires-Dist: mistralai>=1.9.10; extra == 'mistral'
73
73
  Provides-Extra: openai
74
74
  Requires-Dist: openai>=1.107.2; extra == 'openai'
75
+ Provides-Extra: prefect
76
+ Requires-Dist: prefect>=3.4.21; extra == 'prefect'
75
77
  Provides-Extra: retries
76
78
  Requires-Dist: tenacity>=8.2.3; extra == 'retries'
77
79
  Provides-Extra: tavily
@@ -10,7 +10,7 @@ pydantic_ai/_json_schema.py,sha256=Br48srbwCTVIie98a9UEMGcCcTIa3E4zVvCbkxqQRso,7
10
10
  pydantic_ai/_mcp.py,sha256=PuvwnlLjv7YYOa9AZJCrklevBug99zGMhwJCBGG7BHQ,5626
11
11
  pydantic_ai/_otel_messages.py,sha256=SsMpbyI1fIISOck_wQcZJPIOei8lOmvwARkdPSCx8y8,1650
12
12
  pydantic_ai/_output.py,sha256=gHS1qwM701cH5FGGRUrMxgWlJhY1vNgdM6ylnHRa-Ew,40784
13
- pydantic_ai/_parts_manager.py,sha256=kXMhigRJAwUcputw7i54pQkc85NuNVS4Zy36lFvnRvk,19800
13
+ pydantic_ai/_parts_manager.py,sha256=05m8q2JZQk9Z8vNKOocxGDJQwYgbUGABGBRnXYJcsg8,19914
14
14
  pydantic_ai/_run_context.py,sha256=-ah9Ipf3mLTbvuYqmJSqBmBexaCcED7HGA1Llzs0dKU,2324
15
15
  pydantic_ai/_system_prompt.py,sha256=WdDW_DTGHujcFFaK-J7J6mA4ZDJZ0IOKpyizJA-1Y5Q,1142
16
16
  pydantic_ai/_thinking_part.py,sha256=_0DajGyWPa50WUTPWN1UPfZw0xD8_hHcuSt0T3fgRr0,1295
@@ -22,7 +22,7 @@ pydantic_ai/direct.py,sha256=i5yZ9Tx8IiwXg6Nz9CW4-fyXzxnjP59fsklExCh5sjA,15111
22
22
  pydantic_ai/exceptions.py,sha256=zsXZMKf2BJuVsfuHl1fWTkogLU37bd4yq7D6BKHAzVs,4968
23
23
  pydantic_ai/format_prompt.py,sha256=cLyWO8g77Y4JzqVSikqodXaAfTn6i-k206rNhYTiIsE,9710
24
24
  pydantic_ai/mcp.py,sha256=7Ouwepk-p2rOq_Rkv-MSZYyEGJ6FfrJvR7ySghuSLwc,36693
25
- pydantic_ai/messages.py,sha256=ZtfMXZBl7w5qOyPuzEaXgyRAiyxQbSulG1zG9IHkiuk,64663
25
+ pydantic_ai/messages.py,sha256=GBuRGeq3ZpEuSNdq96Mb7l-UVEl7cNuNUN1LpwaAaxQ,64848
26
26
  pydantic_ai/output.py,sha256=q91oqvJ-FqV9GbUUil7WVWbii66SVsVZ54AEm_NWSEo,13002
27
27
  pydantic_ai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  pydantic_ai/result.py,sha256=sVabgrAJXmj96I7NM-w0RBz1rH5x_zZql1V6epei4JU,26700
@@ -31,7 +31,7 @@ pydantic_ai/run.py,sha256=dV3zIztC-lfOCKecXg_Mcx2CyOfUbxQC0JbZuPvQhTI,16227
31
31
  pydantic_ai/settings.py,sha256=0mr6KudxKKjTG8e3nsv_8vDLxNhu_1-WvefCOzCGSYM,3565
32
32
  pydantic_ai/tools.py,sha256=dCecmJtRkF1ioqFYbfT00XGGqzGB4PPO9n6IrHCQtnc,20343
33
33
  pydantic_ai/usage.py,sha256=_xXoPIfpENghWcjBvMj0URXQV6YwHWxxZYma4WZ4vUg,15710
34
- pydantic_ai/agent/__init__.py,sha256=nScl8k_IK20lcajj4ym9u214bb7sqw5Yu00FxP4HgyI,65395
34
+ pydantic_ai/agent/__init__.py,sha256=VigDqMYLKQHsNYWYy6qPkqN0yfdffqxBYEA5YyxkIBM,67111
35
35
  pydantic_ai/agent/abstract.py,sha256=69kTaR-ZMEmLJ4tD3oGQS5VuomXtNL8t5mxmPz8Ao50,54587
36
36
  pydantic_ai/agent/wrapper.py,sha256=ygwfMq24mGe3pGIK-TtPAy3cV7M8VZJW3ulEHvwNTck,10293
37
37
  pydantic_ai/common_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -43,7 +43,15 @@ pydantic_ai/durable_exec/dbos/_agent.py,sha256=5yKDlsMVNKzX3Tth-HC-TAwtEhCUbhL4T
43
43
  pydantic_ai/durable_exec/dbos/_mcp_server.py,sha256=cLMCKmXQHqhqnn_E3Nf4IsNFIbqk-V7gnIvpmYeDCSA,2989
44
44
  pydantic_ai/durable_exec/dbos/_model.py,sha256=_Cxh0zYFF3cungXiSXpGHmjyBQF7KnksfurV7hMKp-E,5106
45
45
  pydantic_ai/durable_exec/dbos/_utils.py,sha256=_aNceFvTcNeqb78sTDYM2TdYph85tbdeLueyXY1lbTA,242
46
- pydantic_ai/durable_exec/temporal/__init__.py,sha256=XKwy68wfgmjr057nolRwGHTKiadxufpQEGEUprAV09k,5563
46
+ pydantic_ai/durable_exec/prefect/__init__.py,sha256=Ear0mrffOkmSG8itNo7U-LnLoU5-eyWK_9AcfPwJjZ0,422
47
+ pydantic_ai/durable_exec/prefect/_agent.py,sha256=tJZj21nV_IEXMnOR2Mx7p4nnjlY0r_rPvuHAczc8wlQ,39606
48
+ pydantic_ai/durable_exec/prefect/_cache_policies.py,sha256=Sc6_xeDQ3NzuksoSa7KLXa64LhnLErt1UnPOXWFQArU,3399
49
+ pydantic_ai/durable_exec/prefect/_function_toolset.py,sha256=TEytP8WAVIgz897mWy_dKmFOOXq3gHq6CIDWOUYjKL0,2052
50
+ pydantic_ai/durable_exec/prefect/_mcp_server.py,sha256=5uHe2BNJyZUVeNPNo2HI0jtQkSyxAdOJGBTAwP1St04,1861
51
+ pydantic_ai/durable_exec/prefect/_model.py,sha256=-lJeI1LLc_v2R6yWpxmRuT_wjS-dgU_4HKtiXoRJPxI,5794
52
+ pydantic_ai/durable_exec/prefect/_toolset.py,sha256=dBgIMsQikjJgGr7_QAs3UG7nycBBH61eioMwN8mPqoA,2050
53
+ pydantic_ai/durable_exec/prefect/_types.py,sha256=cTtXnKokPSCDMBQJrLlEho0mJLvDIGNCZF-q6infkkU,1270
54
+ pydantic_ai/durable_exec/temporal/__init__.py,sha256=H8y0jMv5Q2aFvHZ4rm48cYn07nc1nWEQbYpcO9P6zpA,5624
47
55
  pydantic_ai/durable_exec/temporal/_agent.py,sha256=BKbKKo6FM2zx-5ohc9voDyMYONH_8sZwUNypjonWDlA,44458
48
56
  pydantic_ai/durable_exec/temporal/_function_toolset.py,sha256=3n_A5uHzygsT88LM105kKuYqwxC1sjI4bOzETeUbT4E,5553
49
57
  pydantic_ai/durable_exec/temporal/_logfire.py,sha256=ASd7vb0cd61yESI0mgU2w9SCGxsOegz95HtQjKdlQkE,2472
@@ -54,20 +62,20 @@ pydantic_ai/durable_exec/temporal/_toolset.py,sha256=IlPQrumm2MpZrb518ru15s0jIl8
54
62
  pydantic_ai/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
63
  pydantic_ai/ext/aci.py,sha256=YWYLXzTQJ6hS7qfgNycA8cRl69gogGgThqEU6II7eMA,2527
56
64
  pydantic_ai/ext/langchain.py,sha256=kmbbV3Cx2BiNYEJCZMHVYQquUQD-zG2L_bwDangy0Ww,2317
57
- pydantic_ai/models/__init__.py,sha256=bZXZRrvQa5xEbv6GLvwmcI39vCZG-y6AxUGres1UtBk,35700
65
+ pydantic_ai/models/__init__.py,sha256=D-lOP764gxfjdaNjUujpHlvpJQuIjGfYO8ljcohQ_rE,35736
58
66
  pydantic_ai/models/anthropic.py,sha256=-vW7aoPrELKnJzbooCEhMu8__jY6iqvWdFJbIKeQPa8,38087
59
67
  pydantic_ai/models/bedrock.py,sha256=fha8zVZgDFYgDqO5nvBkZ2CEv4GV92yq_YnK4qmD73E,33639
60
68
  pydantic_ai/models/cohere.py,sha256=_ccK7XBts1OwD-RP8puU3z425SZ4PeJGts1WFhPjikg,14051
61
69
  pydantic_ai/models/fallback.py,sha256=fjQz7qRuxEwC6aFYkglBv-2Z39-6kZ931vs6o7PIti8,5016
62
70
  pydantic_ai/models/function.py,sha256=7-ej1m4f7c1TbvgB8sF02qlFD7Kf-EX-k_xN4RkbIEw,15880
63
71
  pydantic_ai/models/gemini.py,sha256=Ik7e1SnDCvFyjmYHcM-6vilXyl6pHY_GKaM3pHJGNG4,40016
64
- pydantic_ai/models/google.py,sha256=vWBkQtieMH6fJ93uNMescz7Deo13ddibv-pfcfMSEes,41534
72
+ pydantic_ai/models/google.py,sha256=0NsCdFIxcgEkG9xItqxxgAfxt8FwJ2zws3L0wv-PyMQ,41739
65
73
  pydantic_ai/models/groq.py,sha256=pVLl-4Z5CtiYU7bLgRlFTQhfh4LkMi6-aSkvgDuddrk,29633
66
74
  pydantic_ai/models/huggingface.py,sha256=711C0ysjLYKriGfSxPiaF6lqjGcNmIaJaCvAXoucTes,21488
67
75
  pydantic_ai/models/instrumented.py,sha256=J8eVTutr3UP1r_wd5sM5c0BIdzkRqT-EGgd2NiF0ssQ,22319
68
76
  pydantic_ai/models/mcp_sampling.py,sha256=qY4y4nXbRpNp2QbkfjzWLvF_8KLZGXypz4cc0lYRHXU,3553
69
77
  pydantic_ai/models/mistral.py,sha256=fi57hADjYxZw8wEpAcNI6mqY32VG9hHK9GGRQ-9vlZg,33905
70
- pydantic_ai/models/openai.py,sha256=_qU8o9PBwmPmELQz3V8OAjxkKy8gXiKtdG6MKQ7Iq_Y,99708
78
+ pydantic_ai/models/openai.py,sha256=nCqFy2sRihygbBbTYSbMy_W9LiXwNoRzIUNHSJk5ctc,99861
71
79
  pydantic_ai/models/test.py,sha256=5ER66nwZG7Iwm-KkzPo4vwNd3rulzgkpgysu4YcT1W4,20568
72
80
  pydantic_ai/models/wrapper.py,sha256=nwh8Gea59blbr1JDKlUnkYICuI9TUubC4qP7iZRRW28,2440
73
81
  pydantic_ai/profiles/__init__.py,sha256=UHknN-CYsQexUaxfsgz_J_uSZ9QwistLSuAErQkvbcM,3385
@@ -84,7 +92,7 @@ pydantic_ai/profiles/mistral.py,sha256=ll01PmcK3szwlTfbaJLQmfd0TADN8lqjov9HpPJzC
84
92
  pydantic_ai/profiles/moonshotai.py,sha256=e1RJnbEvazE6aJAqfmYLYGNtwNwg52XQDRDkcLrv3fU,272
85
93
  pydantic_ai/profiles/openai.py,sha256=MXOsktUqfcF2pBgYJMyFWMZafPJ7tejwyoFM2mjKzaY,9689
86
94
  pydantic_ai/profiles/qwen.py,sha256=9SnTpMKndxNQMFyumyaOczJa5JGWbYQdpVKKW4OzKjk,749
87
- pydantic_ai/providers/__init__.py,sha256=nqKuq778BrKuZCV8S5evmTKCHkFrakMDAnsHVifdvYI,4613
95
+ pydantic_ai/providers/__init__.py,sha256=UAyyyGhYypWcfJybom0yUS8lbwWD5wmOtbTDG81Wl9E,4718
88
96
  pydantic_ai/providers/anthropic.py,sha256=vwNjO2JJ0Ux_3PXI9_XvzNZ24PKessm8z2ja1uzbBwM,3327
89
97
  pydantic_ai/providers/azure.py,sha256=PFRykTOfARMdANODnTLq__0ZynX7DlQ35GVf2Qs9VBY,5814
90
98
  pydantic_ai/providers/bedrock.py,sha256=efb9YWAz6ram5QEIHNO0K-dL8chTMsjRPCNQhpbQSBY,6513
@@ -92,7 +100,7 @@ pydantic_ai/providers/cerebras.py,sha256=3rIu092TYYuI5S4mlRjWxay5uomPbEDyHWIBMfr
92
100
  pydantic_ai/providers/cohere.py,sha256=L3wgvcbxRRPrIKoZka_DQl1Uvi1VxBPMJikrzJ85iHE,2839
93
101
  pydantic_ai/providers/deepseek.py,sha256=zop0sb1XzdzSuI2dCNXrinfMdxoqB8H_rp2zw6ItbKc,3023
94
102
  pydantic_ai/providers/fireworks.py,sha256=t4PznbxnD9GnzZ3wYqSn6xdxRRJlYzNKf_EZzX0UWl8,3585
95
- pydantic_ai/providers/gateway.py,sha256=2O7nepvn8s3IbMSAdRZ8V_ag0VmjDKjvc9gGCb99AEE,6675
103
+ pydantic_ai/providers/gateway.py,sha256=Xgns651ndehQ3F6PkMw8CBgaFBmxQx25LjrQA8PuPjk,6937
96
104
  pydantic_ai/providers/github.py,sha256=yi7c16_Ao1E1QmehVfdsO9NrjDGK1moaHTK-P5cIrsI,4369
97
105
  pydantic_ai/providers/google.py,sha256=scCHek7whNEbi742hnRlKItboYOoxtYosgNN7wDjvpM,6019
98
106
  pydantic_ai/providers/google_gla.py,sha256=PnmnzgCOPJB1kMVnNVqZu2Cdzk7K9jx2z0MpbJ6EkII,1951
@@ -104,6 +112,7 @@ pydantic_ai/providers/huggingface.py,sha256=bCN7vX8JuzKM_bXjyLBCh-imsyCiVPXBUB1F
104
112
  pydantic_ai/providers/litellm.py,sha256=a669KrAbaj8YYMm3N3yRQduzCMtGDCoHXAQ54_XAo8o,5070
105
113
  pydantic_ai/providers/mistral.py,sha256=YqvUoqOq-wiJYnRLwUwp3lUvyApumrohSwysZaQfeBc,3074
106
114
  pydantic_ai/providers/moonshotai.py,sha256=iaQHZRYJb7hqeq-Di7Qb0LYJ8EEoE7a_wWtlt_oNa0A,3251
115
+ pydantic_ai/providers/nebius.py,sha256=nGpgbZnBZgNz4wHTi1vgvc-9tO2_zj5r3vRzEUbhPKM,3877
107
116
  pydantic_ai/providers/ollama.py,sha256=jg48g_3fYsvK8g-V3UOmR9HOsvnvb533BAB-rZZDxdA,4733
108
117
  pydantic_ai/providers/openai.py,sha256=cVVf99GgBnYBKYeWKBscvnkoRCu0ctWuKulG19lgWMo,3401
109
118
  pydantic_ai/providers/openrouter.py,sha256=o33Fk7kMyMhEM4NcSXU6IuG0cIUc45ySaenozrRypBI,4145
@@ -116,13 +125,13 @@ pydantic_ai/toolsets/approval_required.py,sha256=zyYGEx2VqprLed16OXg1QWr81rnAB0C
116
125
  pydantic_ai/toolsets/combined.py,sha256=LQzm_g6gskiHRUMFDvm88SSrz8OGxbdxyHiKzQrMBNU,4026
117
126
  pydantic_ai/toolsets/external.py,sha256=J9mWQm1HLbRCOJwpLBIvUZZGR_ywSB7pz8MrXkRNBoU,1736
118
127
  pydantic_ai/toolsets/filtered.py,sha256=PSQG9EbBYJpHUEBb_4TGzhjAcQPo5aPKvTuReeoWYtQ,864
119
- pydantic_ai/toolsets/function.py,sha256=q29aOG4HeoukVCiJgjw8_F19CPcNmGX8dWAza-LA1VU,16296
128
+ pydantic_ai/toolsets/function.py,sha256=7QNKUddsSehwtM1kC13fVPkswzh2qa63p5wqIgrUFKk,16819
120
129
  pydantic_ai/toolsets/prefixed.py,sha256=0KwcDkW8OM36ZUsOLVP5h-Nj2tPq78L3_E2c-1Fbh5s,1426
121
130
  pydantic_ai/toolsets/prepared.py,sha256=Zjfz6S8In6PBVxoKFN9sKPN984zO6t0awB7Lnq5KODw,1431
122
131
  pydantic_ai/toolsets/renamed.py,sha256=JuLHpi-hYPiSPlaTpN8WiXLiGsywYK0axi2lW2Qs75k,1637
123
132
  pydantic_ai/toolsets/wrapper.py,sha256=KRzF1p8dncHbva8CE6Ud-IC5E_aygIHlwH5atXK55k4,1673
124
- pydantic_ai_slim-1.0.17.dist-info/METADATA,sha256=-4tDOnbyA9ggeA1T1H-uhYRz0Ab9sKbwqMi3DbFUp0U,4631
125
- pydantic_ai_slim-1.0.17.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
126
- pydantic_ai_slim-1.0.17.dist-info/entry_points.txt,sha256=kbKxe2VtDCYS06hsI7P3uZGxcVC08-FPt1rxeiMpIps,50
127
- pydantic_ai_slim-1.0.17.dist-info/licenses/LICENSE,sha256=vA6Jc482lEyBBuGUfD1pYx-cM7jxvLYOxPidZ30t_PQ,1100
128
- pydantic_ai_slim-1.0.17.dist-info/RECORD,,
133
+ pydantic_ai_slim-1.1.0.dist-info/METADATA,sha256=T4LppdZllkCLfqapnpsV7PxT7tyntYq4wCc-UDV8b9A,4703
134
+ pydantic_ai_slim-1.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
135
+ pydantic_ai_slim-1.1.0.dist-info/entry_points.txt,sha256=kbKxe2VtDCYS06hsI7P3uZGxcVC08-FPt1rxeiMpIps,50
136
+ pydantic_ai_slim-1.1.0.dist-info/licenses/LICENSE,sha256=vA6Jc482lEyBBuGUfD1pYx-cM7jxvLYOxPidZ30t_PQ,1100
137
+ pydantic_ai_slim-1.1.0.dist-info/RECORD,,