pydantic-ai-slim 0.5.0__py3-none-any.whl → 0.5.1__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.
@@ -620,7 +620,7 @@ async def process_function_tools( # noqa: C901
620
620
  result_data = await tool_manager.handle_call(call)
621
621
  except exceptions.UnexpectedModelBehavior as e:
622
622
  ctx.state.increment_retries(ctx.deps.max_result_retries, e)
623
- raise e # pragma: no cover
623
+ raise e # pragma: lax no cover
624
624
  except ToolRetryError as e:
625
625
  ctx.state.increment_retries(ctx.deps.max_result_retries, e)
626
626
  yield _messages.FunctionToolCallEvent(call)
pydantic_ai/exceptions.py CHANGED
@@ -5,9 +5,9 @@ import sys
5
5
  from typing import TYPE_CHECKING
6
6
 
7
7
  if sys.version_info < (3, 11):
8
- from exceptiongroup import ExceptionGroup
8
+ from exceptiongroup import ExceptionGroup as ExceptionGroup # pragma: lax no cover
9
9
  else:
10
- ExceptionGroup = ExceptionGroup
10
+ ExceptionGroup = ExceptionGroup # pragma: lax no cover
11
11
 
12
12
  if TYPE_CHECKING:
13
13
  from .messages import RetryPromptPart
@@ -256,7 +256,7 @@ class AnthropicModel(Model):
256
256
  except APIStatusError as e:
257
257
  if (status_code := e.status_code) >= 400:
258
258
  raise ModelHTTPError(status_code=status_code, model_name=self.model_name, body=e.body) from e
259
- raise # pragma: no cover
259
+ raise # pragma: lax no cover
260
260
 
261
261
  def _process_response(self, response: BetaMessage) -> ModelResponse:
262
262
  """Process a non-streamed response, and prepare a message to return."""
@@ -665,4 +665,4 @@ class _AsyncIteratorWrapper(Generic[T]):
665
665
  if type(e.__cause__) is StopIteration:
666
666
  raise StopAsyncIteration
667
667
  else:
668
- raise e # pragma: no cover
668
+ raise e # pragma: lax no cover
@@ -183,7 +183,7 @@ class CohereModel(Model):
183
183
  except ApiError as e:
184
184
  if (status_code := e.status_code) and status_code >= 400:
185
185
  raise ModelHTTPError(status_code=status_code, model_name=self.model_name, body=e.body) from e
186
- raise # pragma: no cover
186
+ raise # pragma: lax no cover
187
187
 
188
188
  def _process_response(self, response: V2ChatResponse) -> ModelResponse:
189
189
  """Process a non-streamed response, and prepare a message to return."""
@@ -11,7 +11,7 @@ from uuid import uuid4
11
11
  import httpx
12
12
  import pydantic
13
13
  from httpx import USE_CLIENT_DEFAULT, Response as HTTPResponse
14
- from typing_extensions import NotRequired, TypedDict, assert_never
14
+ from typing_extensions import NotRequired, TypedDict, assert_never, deprecated
15
15
 
16
16
  from pydantic_ai.providers import Provider, infer_provider
17
17
 
@@ -92,6 +92,7 @@ class GeminiModelSettings(ModelSettings, total=False):
92
92
  """
93
93
 
94
94
 
95
+ @deprecated('Use `GoogleModel` instead. See <https://ai.pydantic.dev/models/google/> for more details.')
95
96
  @dataclass(init=False)
96
97
  class GeminiModel(Model):
97
98
  """A model that uses Gemini via `generativelanguage.googleapis.com` API.
@@ -236,7 +237,7 @@ class GeminiModel(Model):
236
237
 
237
238
  if gemini_labels := model_settings.get('gemini_labels'):
238
239
  if self._system == 'google-vertex':
239
- request_data['labels'] = gemini_labels
240
+ request_data['labels'] = gemini_labels # pragma: lax no cover
240
241
 
241
242
  headers = {'Content-Type': 'application/json', 'User-Agent': get_user_agent()}
242
243
  url = f'/{self._model_name}:{"streamGenerateContent" if streamed else "generateContent"}'
@@ -366,11 +367,11 @@ class GeminiModel(Model):
366
367
  inline_data={'data': downloaded_item['data'], 'mime_type': downloaded_item['data_type']}
367
368
  )
368
369
  content.append(inline_data)
369
- else:
370
+ else: # pragma: lax no cover
370
371
  file_data = _GeminiFileDataPart(file_data={'file_uri': item.url, 'mime_type': item.media_type})
371
372
  content.append(file_data)
372
373
  else:
373
- assert_never(item)
374
+ assert_never(item) # pragma: lax no cover
374
375
  return content
375
376
 
376
377
  def _map_response_schema(self, o: OutputObjectDefinition) -> dict[str, Any]:
@@ -407,7 +407,7 @@ class GoogleModel(Model):
407
407
  content.append(inline_data_dict) # type: ignore
408
408
  elif isinstance(item, VideoUrl) and item.is_youtube:
409
409
  file_data_dict = {'file_data': {'file_uri': item.url, 'mime_type': item.media_type}}
410
- if item.vendor_metadata:
410
+ if item.vendor_metadata: # pragma: no branch
411
411
  file_data_dict['video_metadata'] = item.vendor_metadata
412
412
  content.append(file_data_dict) # type: ignore
413
413
  elif isinstance(item, FileUrl):
@@ -421,7 +421,9 @@ class GoogleModel(Model):
421
421
  inline_data = {'data': downloaded_item['data'], 'mime_type': downloaded_item['data_type']}
422
422
  content.append({'inline_data': inline_data}) # type: ignore
423
423
  else:
424
- content.append({'file_data': {'file_uri': item.url, 'mime_type': item.media_type}})
424
+ content.append(
425
+ {'file_data': {'file_uri': item.url, 'mime_type': item.media_type}}
426
+ ) # pragma: lax no cover
425
427
  else:
426
428
  assert_never(item)
427
429
  return content
@@ -249,7 +249,7 @@ class GroqModel(Model):
249
249
  except APIStatusError as e:
250
250
  if (status_code := e.status_code) >= 400:
251
251
  raise ModelHTTPError(status_code=status_code, model_name=self.model_name, body=e.body) from e
252
- raise # pragma: no cover
252
+ raise # pragma: lax no cover
253
253
 
254
254
  def _process_response(self, response: chat.ChatCompletion) -> ModelResponse:
255
255
  """Process a non-streamed response, and prepare a message to return."""
@@ -18,11 +18,7 @@ from opentelemetry.trace import Span, Tracer, TracerProvider, get_tracer_provide
18
18
  from opentelemetry.util.types import AttributeValue
19
19
  from pydantic import TypeAdapter
20
20
 
21
- from ..messages import (
22
- ModelMessage,
23
- ModelRequest,
24
- ModelResponse,
25
- )
21
+ from ..messages import ModelMessage, ModelRequest, ModelResponse
26
22
  from ..settings import ModelSettings
27
23
  from . import KnownModelName, Model, ModelRequestParameters, StreamedResponse
28
24
  from .wrapper import WrapperModel
@@ -138,7 +134,7 @@ class InstrumentationSettings:
138
134
  **tokens_histogram_kwargs,
139
135
  explicit_bucket_boundaries_advisory=TOKEN_HISTOGRAM_BOUNDARIES,
140
136
  )
141
- except TypeError:
137
+ except TypeError: # pragma: lax no cover
142
138
  # Older OTel/logfire versions don't support explicit_bucket_boundaries_advisory
143
139
  self.tokens_histogram = self.meter.create_histogram(
144
140
  **tokens_histogram_kwargs, # pyright: ignore
@@ -218,7 +218,7 @@ class MistralModel(Model):
218
218
  except SDKError as e:
219
219
  if (status_code := e.status_code) >= 400:
220
220
  raise ModelHTTPError(status_code=status_code, model_name=self.model_name, body=e.body) from e
221
- raise # pragma: no cover
221
+ raise # pragma: lax no cover
222
222
 
223
223
  assert response, 'A unexpected empty response from Mistral.'
224
224
  return response
@@ -359,7 +359,7 @@ class OpenAIModel(Model):
359
359
  except APIStatusError as e:
360
360
  if (status_code := e.status_code) >= 400:
361
361
  raise ModelHTTPError(status_code=status_code, model_name=self.model_name, body=e.body) from e
362
- raise # pragma: no cover
362
+ raise # pragma: lax no cover
363
363
 
364
364
  def _process_response(self, response: chat.ChatCompletion | str) -> ModelResponse:
365
365
  """Process a non-streamed response, and prepare a message to return."""
@@ -814,7 +814,7 @@ class OpenAIResponsesModel(Model):
814
814
  except APIStatusError as e:
815
815
  if (status_code := e.status_code) >= 400:
816
816
  raise ModelHTTPError(status_code=status_code, model_name=self.model_name, body=e.body) from e
817
- raise # pragma: no cover
817
+ raise # pragma: lax no cover
818
818
 
819
819
  def _get_reasoning(self, model_settings: OpenAIResponsesModelSettings) -> Reasoning | NotGiven:
820
820
  reasoning_effort = model_settings.get('openai_reasoning_effort', None)
@@ -137,8 +137,9 @@ class JsonSchemaTransformer(ABC):
137
137
  return schema
138
138
 
139
139
  def _handle_union(self, schema: JsonSchema, union_kind: Literal['anyOf', 'oneOf']) -> JsonSchema:
140
- members = schema.get(union_kind)
141
- if not members:
140
+ try:
141
+ members = schema.pop(union_kind)
142
+ except KeyError:
142
143
  return schema
143
144
 
144
145
  handled = [self._handle(member) for member in members]
@@ -149,7 +150,7 @@ class JsonSchemaTransformer(ABC):
149
150
 
150
151
  if len(handled) == 1:
151
152
  # In this case, no need to retain the union
152
- return handled[0]
153
+ return handled[0] | schema
153
154
 
154
155
  # If we have keys besides the union kind (such as title or discriminator), keep them without modifications
155
156
  schema = schema.copy()
@@ -3,6 +3,8 @@ from __future__ import annotations as _annotations
3
3
  import os
4
4
  from typing import Literal, overload
5
5
 
6
+ import httpx
7
+
6
8
  from pydantic_ai.exceptions import UserError
7
9
  from pydantic_ai.models import get_user_agent
8
10
  from pydantic_ai.profiles import ModelProfile
@@ -12,6 +14,7 @@ from pydantic_ai.providers import Provider
12
14
  try:
13
15
  from google import genai
14
16
  from google.auth.credentials import Credentials
17
+ from google.genai.types import HttpOptionsDict
15
18
  except ImportError as _import_error:
16
19
  raise ImportError(
17
20
  'Please install the `google-genai` package to use the Google provider, '
@@ -89,17 +92,17 @@ class GoogleProvider(Provider[genai.Client]):
89
92
  if vertexai is None:
90
93
  vertexai = bool(location or project or credentials)
91
94
 
95
+ http_options: HttpOptionsDict = {
96
+ 'headers': {'User-Agent': get_user_agent()},
97
+ 'async_client_args': {'transport': httpx.AsyncHTTPTransport()},
98
+ }
92
99
  if not vertexai:
93
100
  if api_key is None:
94
101
  raise UserError( # pragma: no cover
95
102
  'Set the `GOOGLE_API_KEY` environment variable or pass it via `GoogleProvider(api_key=...)`'
96
103
  'to use the Google Generative Language API.'
97
104
  )
98
- self._client = genai.Client(
99
- vertexai=vertexai,
100
- api_key=api_key,
101
- http_options={'headers': {'User-Agent': get_user_agent()}},
102
- )
105
+ self._client = genai.Client(vertexai=vertexai, api_key=api_key, http_options=http_options)
103
106
  else:
104
107
  self._client = genai.Client(
105
108
  vertexai=vertexai,
@@ -111,7 +114,7 @@ class GoogleProvider(Provider[genai.Client]):
111
114
  # For more details, check: https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#available-regions
112
115
  location=location or os.environ.get('GOOGLE_CLOUD_LOCATION') or 'us-central1',
113
116
  credentials=credentials,
114
- http_options={'headers': {'User-Agent': get_user_agent()}},
117
+ http_options=http_options,
115
118
  )
116
119
  else:
117
120
  self._client = client
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai-slim
3
- Version: 0.5.0
3
+ Version: 0.5.1
4
4
  Summary: Agent Framework / shim to use Pydantic with LLMs, slim package
5
5
  Author-email: Samuel Colvin <samuel@pydantic.dev>, Marcelo Trylesinski <marcelotryle@gmail.com>, David Montague <david@pydantic.dev>, Alex Hall <alex@pydantic.dev>, Douwe Maan <douwe@pydantic.dev>
6
6
  License-Expression: MIT
@@ -30,7 +30,7 @@ Requires-Dist: exceptiongroup; python_version < '3.11'
30
30
  Requires-Dist: griffe>=1.3.2
31
31
  Requires-Dist: httpx>=0.27
32
32
  Requires-Dist: opentelemetry-api>=1.28.0
33
- Requires-Dist: pydantic-graph==0.5.0
33
+ Requires-Dist: pydantic-graph==0.5.1
34
34
  Requires-Dist: pydantic>=2.10
35
35
  Requires-Dist: typing-inspection>=0.4.0
36
36
  Provides-Extra: a2a
@@ -51,9 +51,9 @@ Requires-Dist: cohere>=5.16.0; (platform_system != 'Emscripten') and extra == 'c
51
51
  Provides-Extra: duckduckgo
52
52
  Requires-Dist: ddgs>=9.0.0; extra == 'duckduckgo'
53
53
  Provides-Extra: evals
54
- Requires-Dist: pydantic-evals==0.5.0; extra == 'evals'
54
+ Requires-Dist: pydantic-evals==0.5.1; extra == 'evals'
55
55
  Provides-Extra: google
56
- Requires-Dist: google-genai>=1.24.0; extra == 'google'
56
+ Requires-Dist: google-genai>=1.28.0; extra == 'google'
57
57
  Provides-Extra: groq
58
58
  Requires-Dist: groq>=0.19.0; extra == 'groq'
59
59
  Provides-Extra: huggingface
@@ -1,7 +1,7 @@
1
1
  pydantic_ai/__init__.py,sha256=h6Rll8pEzUUUX6SckosummoAFbq7ctfBlI6WSyaXR4I,1300
2
2
  pydantic_ai/__main__.py,sha256=Q_zJU15DUA01YtlJ2mnaLCoId2YmgmreVEERGuQT-Y0,132
3
3
  pydantic_ai/_a2a.py,sha256=Tw_j9VRud0rLEk5kRs4GhRyhWYioXnsoZaTTyISq4M4,12126
4
- pydantic_ai/_agent_graph.py,sha256=-D_X7qyg4fHRbgR9ffKM_FU4KZ3qas-YgVvSmS0eXeI,37347
4
+ pydantic_ai/_agent_graph.py,sha256=ineJtkOyBzFhu0GVBiRxsQT6yEVE6oHyp3d7xHV2XG8,37351
5
5
  pydantic_ai/_cli.py,sha256=YkiW2u9HGPd9fsgo9dpK1DZvtUPk4uXGQJcm75XgfhU,13250
6
6
  pydantic_ai/_function_schema.py,sha256=YFHxb6bKfhgeY6rNdbuYXgndGCDanveUx2258xkSNlQ,11233
7
7
  pydantic_ai/_griffe.py,sha256=Ugft16ZHw9CN_6-lW0Svn6jESK9zHXO_x4utkGBkbBI,5253
@@ -16,7 +16,7 @@ pydantic_ai/_utils.py,sha256=0Pte4mjir4YFZJTa6i-H6Cra9NbVwSKjOKegArzUggk,16283
16
16
  pydantic_ai/ag_ui.py,sha256=snIBVMcUUm3WWZ5P5orikyAzvM-7vGunNMgIudhvK-A,26156
17
17
  pydantic_ai/agent.py,sha256=VJOvadfilVm60BxWqxtXrzmNTnN8tuhapvFk2r13RO4,107234
18
18
  pydantic_ai/direct.py,sha256=WRfgke3zm-eeR39LTuh9XI2TrdHXAqO81eDvFwih4Ko,14803
19
- pydantic_ai/exceptions.py,sha256=o0l6fBrWI5UhosICVZ2yaT-JEJF05eqBlKlQCW8i9UM,3462
19
+ pydantic_ai/exceptions.py,sha256=vHRH_b6JpMi5p5EGhz2O4FSeKGJv3WMD291Y1FjHYFc,3528
20
20
  pydantic_ai/format_as_xml.py,sha256=IINfh1evWDphGahqHNLBArB5dQ4NIqS3S-kru35ztGg,372
21
21
  pydantic_ai/format_prompt.py,sha256=Or-Ytq55RQb1UJqy2HKIyPpZ-knWXfdDP3Z6tNc6Orw,4244
22
22
  pydantic_ai/mcp.py,sha256=v_f4CRzJ399uPC96aqTiEzpaYvuo6vIQyLIpXQBudsY,26271
@@ -35,23 +35,23 @@ pydantic_ai/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  pydantic_ai/ext/aci.py,sha256=vUaNIj6pRM52x6RkPW_DohSYxJPm75pPUfOMw2i5Xx0,2515
36
36
  pydantic_ai/ext/langchain.py,sha256=GemxfhpyG1JPxj69PbRiSJANnY8Q5s4hSB7wqt-uTbo,2266
37
37
  pydantic_ai/models/__init__.py,sha256=UDi-zXjRt_Zb8kaN5OKMxGXnJtDkROpfa66tSz_wNdI,30884
38
- pydantic_ai/models/anthropic.py,sha256=dMPFqIeYCIhoeU_4uk9PmZYQWL1NbkSVmVrBKXplTiI,24167
39
- pydantic_ai/models/bedrock.py,sha256=O6wKZDu4L18L1L2Nsa-XMW4ch073FjcLKRA5t_NXcHU,29511
40
- pydantic_ai/models/cohere.py,sha256=GYhQ6jkCYDHf3ca1835aig9o59XTvsyw4ISAVThYejA,12828
38
+ pydantic_ai/models/anthropic.py,sha256=WtugATjLkmuNMtOeitKPNDjc6iE5NO_UxBKisHL_JNY,24171
39
+ pydantic_ai/models/bedrock.py,sha256=AJqZVU5gsTCcdHx37RhDrQAODKswpTlKzl4pd3Gi5CE,29515
40
+ pydantic_ai/models/cohere.py,sha256=DnIbZuUP3LuJ7FS0KYqt3BU3blyG3Xs44XqhSshvhI4,12832
41
41
  pydantic_ai/models/fallback.py,sha256=URaV-dTQWkg99xrlkmknue5lXZWDcEt7cJ1Vsky4oB4,5130
42
42
  pydantic_ai/models/function.py,sha256=iHhG6GYN14XDo3_qbdliv_umY10B7-k11aoDoVF4xP8,13563
43
- pydantic_ai/models/gemini.py,sha256=J-05fngctXSqk3NzLaemt0h6r3S6jmr9ArvlWQE5Q0A,38124
44
- pydantic_ai/models/google.py,sha256=PNN5Z5VYPioT0-FzS4PoZ33es26AfUqwMBLfHhrElnw,24380
45
- pydantic_ai/models/groq.py,sha256=JX3Hi8tUJTsTj2A6CGoDhpW4IwNUxgOk0Ta58OCEL_A,19035
43
+ pydantic_ai/models/gemini.py,sha256=dRN50u8I0PMy-GwVrPn4M4qzfYTMO6dCKksBXaC6Fxc,38313
44
+ pydantic_ai/models/google.py,sha256=ZjU2qjdtf8jNWoeswS13g198lamzsBr5K0QuX0QcLzM,24479
45
+ pydantic_ai/models/groq.py,sha256=RQzehpgBRaY0Nit7b4LW-lOrNA3qYHpiUpodn0YjjfE,19039
46
46
  pydantic_ai/models/huggingface.py,sha256=g4Z2C_e_OddYyGKLSOtP4nCL-AbWxmOdkW4zFcFtLq0,19222
47
- pydantic_ai/models/instrumented.py,sha256=aqvzspcGexn1Molbu6Mn4EEPRBSoQCCCS_yknJvJJ-8,16205
47
+ pydantic_ai/models/instrumented.py,sha256=j6zFwfF_xxog2OrU2xaObBRkc0wyGqjIqFIMv7cxqmI,16212
48
48
  pydantic_ai/models/mcp_sampling.py,sha256=q9nnjNEAAbhrfRc_Qw5z9TtCHMG_SwlCWW9FvKWjh8k,3395
49
- pydantic_ai/models/mistral.py,sha256=bj56Meckuji8r4vowiFJMDSli-HZktocqSqtbzgpXa0,31455
50
- pydantic_ai/models/openai.py,sha256=Soqb7kZpQLBS6En7hVlhzBMlS07rjISJ9IlH96bBBBU,56122
49
+ pydantic_ai/models/mistral.py,sha256=rGhIHl2fS2LIJWzXNwYZTw2ZGJviF4Rfr36wS7mlcNc,31459
50
+ pydantic_ai/models/openai.py,sha256=d7KCXaPl0txvJ3647USvFM-8T-iF5ue1XpXlo-IwHIg,56130
51
51
  pydantic_ai/models/test.py,sha256=lGMblastixKF_f5MhP3TcvLWx7jj94H4ohmL7DMpdGo,18482
52
52
  pydantic_ai/models/wrapper.py,sha256=A5-ncYhPF8c9S_czGoXkd55s2KOQb65p3jbVpwZiFPA,2043
53
53
  pydantic_ai/profiles/__init__.py,sha256=uC1_64Pb0O1IMt_SwzvU3W7a2_T3pvdoSDcm8_WI7hw,2592
54
- pydantic_ai/profiles/_json_schema.py,sha256=sTNHkaK0kbwmbldZp9JRGQNax0f5Qvwy0HkWuu_nGxU,7179
54
+ pydantic_ai/profiles/_json_schema.py,sha256=CthOGmPSjgEZRRglfvg31zyQ9vjHDdacXoFpmba93dE,7206
55
55
  pydantic_ai/profiles/amazon.py,sha256=O4ijm1Lpz01vaSiHrkSeGQhbCKV5lyQVtHYqh0pCW_k,339
56
56
  pydantic_ai/profiles/anthropic.py,sha256=J9N46G8eOjHdQ5CwZSLiwGdPb0eeIMdsMjwosDpvNhI,275
57
57
  pydantic_ai/profiles/cohere.py,sha256=lcL34Ht1jZopwuqoU6OV9l8vN4zwF-jiPjlsEABbSRo,215
@@ -71,7 +71,7 @@ pydantic_ai/providers/cohere.py,sha256=LT6QaLPJBBlFUgYgXQOfKpbM9SXLzorWFxI7jNfOX
71
71
  pydantic_ai/providers/deepseek.py,sha256=kUdM8eVp1lse4bS_uy70Gy7wgog94NTZ36GY-vhSB50,3060
72
72
  pydantic_ai/providers/fireworks.py,sha256=TPbqOpNgXG59qovBaHWbbV2vsvROwlHwQ3PvqHUBH-s,3626
73
73
  pydantic_ai/providers/github.py,sha256=zPu3oVJKjUE4zIqZ0YfgcTFBNdEy5rIBrSOdPCHJEG4,4406
74
- pydantic_ai/providers/google.py,sha256=b8MOCsawPm07HrFEZGip5OGzW3zfq3HcCDzDNwXgPY4,5946
74
+ pydantic_ai/providers/google.py,sha256=iyAqYB-Rcpy6Rea-QfS_FL1v6ej-DZpGx-rPY3X_df0,6067
75
75
  pydantic_ai/providers/google_gla.py,sha256=BCF5_6EVtpkCZ6qIDuvgY1Qa9EirS71l51CBqPqk4C4,1825
76
76
  pydantic_ai/providers/google_vertex.py,sha256=MN3hnZg06pp2VFAmr3o_aAeop7LHj8TbgPSaF5D6PZE,9596
77
77
  pydantic_ai/providers/grok.py,sha256=dIkpxuuJlZ4pFtTSgeeJgiM_Z3mJU9qvk4f7jvSzi24,3141
@@ -94,8 +94,8 @@ pydantic_ai/toolsets/prefixed.py,sha256=MIStkzUdiU0rk2Y6P19IrTBxspH5pTstGxsqCBt-
94
94
  pydantic_ai/toolsets/prepared.py,sha256=Zjfz6S8In6PBVxoKFN9sKPN984zO6t0awB7Lnq5KODw,1431
95
95
  pydantic_ai/toolsets/renamed.py,sha256=JuLHpi-hYPiSPlaTpN8WiXLiGsywYK0axi2lW2Qs75k,1637
96
96
  pydantic_ai/toolsets/wrapper.py,sha256=WjLoiM1WDuffSJ4mDS6pZrEZGHgZ421fjrqFcB66W94,1205
97
- pydantic_ai_slim-0.5.0.dist-info/METADATA,sha256=LGb7rsYjr9K6qD8sAP7-kSPjcTIWnL6x_reSXWeYmTQ,4173
98
- pydantic_ai_slim-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
99
- pydantic_ai_slim-0.5.0.dist-info/entry_points.txt,sha256=kbKxe2VtDCYS06hsI7P3uZGxcVC08-FPt1rxeiMpIps,50
100
- pydantic_ai_slim-0.5.0.dist-info/licenses/LICENSE,sha256=vA6Jc482lEyBBuGUfD1pYx-cM7jxvLYOxPidZ30t_PQ,1100
101
- pydantic_ai_slim-0.5.0.dist-info/RECORD,,
97
+ pydantic_ai_slim-0.5.1.dist-info/METADATA,sha256=ydcB1_hf9hhj2oPK7yWXik-daArtTna9JnwUPzP1VEo,4173
98
+ pydantic_ai_slim-0.5.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
99
+ pydantic_ai_slim-0.5.1.dist-info/entry_points.txt,sha256=kbKxe2VtDCYS06hsI7P3uZGxcVC08-FPt1rxeiMpIps,50
100
+ pydantic_ai_slim-0.5.1.dist-info/licenses/LICENSE,sha256=vA6Jc482lEyBBuGUfD1pYx-cM7jxvLYOxPidZ30t_PQ,1100
101
+ pydantic_ai_slim-0.5.1.dist-info/RECORD,,