Bump pydantic-ai, prepare for 2.*

This commit is contained in:
Yiorgis Gozadinos 2026-05-15 15:24:57 +03:00
parent b1e8bdc839
commit 1df6530d03
No known key found for this signature in database
14 changed files with 94 additions and 46 deletions

View file

@ -4,6 +4,7 @@
### Changed ### Changed
- Bump `docling>=2.93.0` and `docling-core>=2.75.0`. - Bump `docling>=2.93.0` and `docling-core>=2.75.0`.
- Bump `pydantic-ai-slim>=1.96.0`. Migrate off deprecated APIs: AG-UI imports use `pydantic_ai.ui.ag_ui`, docs/CLI examples use the explicit `openai-chat:` model prefix, and `Agent(retries=)` is split into `tool_retries=` + `output_retries=`.
## [0.47.0] - 2026-05-14 ## [0.47.0] - 2026-05-14

View file

@ -6,8 +6,8 @@ from pathlib import Path
from dotenv import find_dotenv, load_dotenv from dotenv import find_dotenv, load_dotenv
from pydantic_ai import Agent from pydantic_ai import Agent
from pydantic_ai.ag_ui import AGUIAdapter
from pydantic_ai.ui import SSE_CONTENT_TYPE from pydantic_ai.ui import SSE_CONTENT_TYPE
from pydantic_ai.ui.ag_ui import AGUIAdapter
from starlette.applications import Starlette from starlette.applications import Starlette
from starlette.middleware import Middleware from starlette.middleware import Middleware
from starlette.middleware.cors import CORSMiddleware from starlette.middleware.cors import CORSMiddleware

View file

@ -490,7 +490,7 @@ skill = create_skill(db_path=db_path, config=config)
toolset = SkillToolset(skills=[skill]) toolset = SkillToolset(skills=[skill])
agent = Agent( agent = Agent(
"openai:gpt-4o", "openai-chat:gpt-4o",
instructions=build_system_prompt(toolset.skill_catalog), instructions=build_system_prompt(toolset.skill_catalog),
toolsets=[toolset], toolsets=[toolset],
) )

View file

@ -59,7 +59,7 @@ analysis = create_analysis_skill(db_path=db_path)
toolset = SkillToolset(skills=[rag, analysis]) toolset = SkillToolset(skills=[rag, analysis])
agent = Agent( agent = Agent(
"openai:gpt-4o", "openai-chat:gpt-4o",
instructions=build_system_prompt(toolset.skill_catalog), instructions=build_system_prompt(toolset.skill_catalog),
toolsets=[toolset], toolsets=[toolset],
) )

View file

@ -31,7 +31,7 @@ skill = create_skill(db_path=db_path, config=config)
toolset = SkillToolset(skills=[skill]) toolset = SkillToolset(skills=[skill])
agent = Agent( agent = Agent(
"openai:gpt-4o", "openai-chat:gpt-4o",
instructions=build_system_prompt(toolset.skill_catalog), instructions=build_system_prompt(toolset.skill_catalog),
toolsets=[toolset], toolsets=[toolset],
) )
@ -98,7 +98,7 @@ See the individual skill pages for state model details.
For web applications, use pydantic-ai's `AGUIAdapter` to stream tool calls, text, and state deltas: For web applications, use pydantic-ai's `AGUIAdapter` to stream tool calls, text, and state deltas:
```python ```python
from pydantic_ai.ag_ui import AGUIAdapter from pydantic_ai.ui.ag_ui import AGUIAdapter
adapter = AGUIAdapter(agent=agent, run_input=run_input) adapter = AGUIAdapter(agent=agent, run_input=run_input)
event_stream = adapter.run_stream() event_stream = adapter.run_stream()

View file

@ -51,7 +51,8 @@ class LLMJudge:
model=model_obj, model=model_obj,
output_type=LLMJudgeResponseSchema, output_type=LLMJudgeResponseSchema,
system_prompt=ANSWER_EQUIVALENCE_RUBRIC, system_prompt=ANSWER_EQUIVALENCE_RUBRIC,
retries=3, tool_retries=3,
output_retries=3,
) )
async def judge_answers( async def judge_answers(

View file

@ -16,8 +16,8 @@ import sys
from pathlib import Path from pathlib import Path
from pydantic_ai import Agent from pydantic_ai import Agent
from pydantic_ai.ag_ui import AGUIAdapter
from pydantic_ai.ui import SSE_CONTENT_TYPE from pydantic_ai.ui import SSE_CONTENT_TYPE
from pydantic_ai.ui.ag_ui import AGUIAdapter
from starlette.applications import Starlette from starlette.applications import Starlette
from starlette.requests import Request from starlette.requests import Request
from starlette.responses import JSONResponse, Response, StreamingResponse from starlette.responses import JSONResponse, Response, StreamingResponse

View file

@ -27,7 +27,8 @@ def create_analysis_agent(config: AppConfig) -> Agent[AnalysisDeps, RawAnalysisR
deps_type=AnalysisDeps, deps_type=AnalysisDeps,
output_type=RawAnalysisResult, output_type=RawAnalysisResult,
instructions=ANALYSIS_SYSTEM_PROMPT, instructions=ANALYSIS_SYSTEM_PROMPT,
retries=3, tool_retries=3,
output_retries=3,
) )
@agent.tool @agent.tool

View file

@ -69,7 +69,8 @@ class QuestionAnswerAgent:
output_type=RawSearchAnswer, output_type=RawSearchAnswer,
instructions=system_prompt, instructions=system_prompt,
toolsets=[search_toolset], toolsets=[search_toolset],
retries=3, tool_retries=3,
output_retries=3,
) )
deps = _QARunDeps(client=self._client) deps = _QARunDeps(client=self._client)

View file

@ -70,7 +70,8 @@ async def _iterative_plan_logic(
model=model, model=model,
output_type=IterativePlanResult, output_type=IterativePlanResult,
instructions=effective_prompt, instructions=effective_prompt,
retries=3, tool_retries=3,
output_retries=3,
deps_type=ResearchDependencies, deps_type=ResearchDependencies,
) )
@ -120,7 +121,8 @@ async def _search_one_step_logic(
model=model, model=model,
output_type=RawSearchAnswer, output_type=RawSearchAnswer,
instructions=search_prompt, instructions=search_prompt,
retries=3, tool_retries=3,
output_retries=3,
deps_type=ResearchDependencies, deps_type=ResearchDependencies,
) )
@ -222,7 +224,8 @@ def build_research_graph(
model=model, model=model,
output_type=ResearchReport, output_type=ResearchReport,
instructions=synthesis_prompt, instructions=synthesis_prompt,
retries=3, tool_retries=3,
output_retries=3,
deps_type=ResearchDependencies, deps_type=ResearchDependencies,
) )

View file

@ -21,7 +21,7 @@ from ag_ui.core import (
) )
from jsonpatch import JsonPatch from jsonpatch import JsonPatch
from pydantic_ai import Agent from pydantic_ai import Agent
from pydantic_ai.ag_ui import AGUIAdapter from pydantic_ai.ui.ag_ui import AGUIAdapter
from textual.app import App, SystemCommand from textual.app import App, SystemCommand
from textual.binding import Binding from textual.binding import Binding
from textual.widgets import Footer, Header, Input from textual.widgets import Footer, Header, Input

View file

@ -663,7 +663,7 @@ def chat( # pragma: no cover
model: str | None = typer.Option( model: str | None = typer.Option(
None, None,
"--model", "--model",
help="Model to use for the chat (e.g. openai:gpt-4o)", help="Model to use for the chat (e.g. openai-chat:gpt-4o)",
), ),
skill: list[str] | None = typer.Option( skill: list[str] | None = typer.Option(
None, None,

View file

@ -30,7 +30,7 @@ dependencies = [
"lancedb==0.30.2", "lancedb==0.30.2",
"pathspec>=1.0.4", "pathspec>=1.0.4",
"pydantic>=2.12.5", "pydantic>=2.12.5",
"pydantic-ai-slim[openai,fastmcp,logfire,ag-ui]>=1.81.0", "pydantic-ai-slim[openai,fastmcp,logfire,ag-ui]>=1.96.0",
"pydantic-monty>=0.0.9", "pydantic-monty>=0.0.9",
"python-dotenv>=1.2.2", "python-dotenv>=1.2.2",
"pyyaml>=6.0.3", "pyyaml>=6.0.3",

103
uv.lock
View file

@ -198,7 +198,7 @@ wheels = [
[[package]] [[package]]
name = "anthropic" name = "anthropic"
version = "0.86.0" version = "0.102.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "anyio" }, { name = "anyio" },
@ -210,9 +210,9 @@ dependencies = [
{ name = "sniffio" }, { name = "sniffio" },
{ name = "typing-extensions" }, { name = "typing-extensions" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/37/7a/8b390dc47945d3169875d342847431e5f7d5fa716b2e37494d57cfc1db10/anthropic-0.86.0.tar.gz", hash = "sha256:60023a7e879aa4fbb1fed99d487fe407b2ebf6569603e5047cfe304cebdaa0e5", size = 583820, upload-time = "2026-03-18T18:43:08.017Z" } sdist = { url = "https://files.pythonhosted.org/packages/b9/47/cb2a71f70431fb09af4db83e3ea89eb2dd8e0e348d27af53ed32e6c599dd/anthropic-0.102.0.tar.gz", hash = "sha256:96f747cad11886c4ae12d4080131b94eebd68b202bd2190fe27959031bb1fa9c", size = 763697, upload-time = "2026-05-13T18:12:41.624Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/63/5f/67db29c6e5d16c8c9c4652d3efb934d89cb750cad201539141781d8eae14/anthropic-0.86.0-py3-none-any.whl", hash = "sha256:9d2bbd339446acce98858c5627d33056efe01f70435b22b63546fe7edae0cd57", size = 469400, upload-time = "2026-03-18T18:43:06.526Z" }, { url = "https://files.pythonhosted.org/packages/87/75/0f6c603594876413bc858a00e7cc0d80a0cc14edf5c7b959a3ea6ec45e44/anthropic-0.102.0-py3-none-any.whl", hash = "sha256:ab96540bbd4b0f36564252d955a86f8abbe4f00944a24bc9931acc9b139bab6f", size = 763070, upload-time = "2026-05-13T18:12:43.474Z" },
] ]
[[package]] [[package]]
@ -245,14 +245,15 @@ wheels = [
[[package]] [[package]]
name = "authlib" name = "authlib"
version = "1.6.9" version = "1.7.2"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "cryptography" }, { name = "cryptography" },
{ name = "joserfc" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/af/98/00d3dd826d46959ad8e32af2dbb2398868fd9fd0683c26e56d0789bd0e68/authlib-1.6.9.tar.gz", hash = "sha256:d8f2421e7e5980cc1ddb4e32d3f5fa659cfaf60d8eaf3281ebed192e4ab74f04", size = 165134, upload-time = "2026-03-02T07:44:01.998Z" } sdist = { url = "https://files.pythonhosted.org/packages/36/98/7d93f30d029643c0275dbc0bd6d5a6f670661ee6c9a94d93af7ab4887600/authlib-1.7.2.tar.gz", hash = "sha256:2cea25fefcd4e7173bdf1372c0afc265c8034b23a8cd5dcb6a9164b826c64231", size = 176511, upload-time = "2026-05-06T08:10:23.116Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/53/23/b65f568ed0c22f1efacb744d2db1a33c8068f384b8c9b482b52ebdbc3ef6/authlib-1.6.9-py2.py3-none-any.whl", hash = "sha256:f08b4c14e08f0861dc18a32357b33fbcfd2ea86cfe3fe149484b4d764c4a0ac3", size = 244197, upload-time = "2026-03-02T07:44:00.307Z" }, { url = "https://files.pythonhosted.org/packages/fb/95/adcb68e20c34162e9135f370d6e31737719c2b6f94bc953fe7ed1f10fe21/authlib-1.7.2-py2.py3-none-any.whl", hash = "sha256:3e1faedc9d87e7d56a164eca3ccb6ace0d61b94abe83e92242f8dc8bba9b4a9f", size = 259548, upload-time = "2026-05-06T08:10:21.436Z" },
] ]
[[package]] [[package]]
@ -1144,12 +1145,47 @@ wheels = [
[[package]] [[package]]
name = "fastmcp" name = "fastmcp"
version = "3.1.1" version = "3.3.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "fastmcp-slim", extra = ["client", "server"] },
]
sdist = { url = "https://files.pythonhosted.org/packages/1a/b8/aff9378edc9438916ce5f06ac31bc1d60dd99e1a82411e186f1c38e20a8b/fastmcp-3.3.0.tar.gz", hash = "sha256:48c7fffdb6865cb9658ac02c2ff589caaaa3cd68e2cc37ed51402fa46e46c2eb", size = 28804871, upload-time = "2026-05-15T02:04:59.357Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/ff/bd/4f21d58764e1f1e1237e29bc58bb1b5863fde2297796c8e96301d334fe2d/fastmcp-3.3.0-py3-none-any.whl", hash = "sha256:e6b1dc391a9fcc4b6a7f0bb7c2481d1aac8d03eefe818908c69909795a39d51b", size = 7903, upload-time = "2026-05-15T02:05:02.24Z" },
]
[[package]]
name = "fastmcp-slim"
version = "3.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "platformdirs" },
{ name = "pydantic", extra = ["email"] },
{ name = "pydantic-settings" },
{ name = "python-dotenv" },
{ name = "rich" },
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/db/6e/f4ba7d4f5d586ee85b7e2dd4feff89112de0e4cedc6a5fda794adb6b99c2/fastmcp_slim-3.3.0.tar.gz", hash = "sha256:56fd0077226b8dbf0bba253f9baaad5d97a3f74eb62750d6997128486b91b0ba", size = 567972, upload-time = "2026-05-15T02:04:34.015Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/96/36/fa34dd253426e03e4f68918ca700758a22f3600fb6d4dc5a260b3d152c82/fastmcp_slim-3.3.0-py3-none-any.whl", hash = "sha256:7478c5220e06e5ff4f9cb5270e46c6b6d0f44ec0d79372a572b0a71195baa69a", size = 739366, upload-time = "2026-05-15T02:04:32.528Z" },
]
[package.optional-dependencies]
client = [
{ name = "authlib" },
{ name = "exceptiongroup" },
{ name = "httpx" },
{ name = "mcp" },
{ name = "opentelemetry-api" },
{ name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] },
]
server = [
{ name = "authlib" }, { name = "authlib" },
{ name = "cyclopts" }, { name = "cyclopts" },
{ name = "exceptiongroup" }, { name = "exceptiongroup" },
{ name = "griffelib" },
{ name = "httpx" }, { name = "httpx" },
{ name = "jsonref" }, { name = "jsonref" },
{ name = "jsonschema-path" }, { name = "jsonschema-path" },
@ -1157,22 +1193,15 @@ dependencies = [
{ name = "openapi-pydantic" }, { name = "openapi-pydantic" },
{ name = "opentelemetry-api" }, { name = "opentelemetry-api" },
{ name = "packaging" }, { name = "packaging" },
{ name = "platformdirs" },
{ name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] }, { name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] },
{ name = "pydantic", extra = ["email"] },
{ name = "pyperclip" }, { name = "pyperclip" },
{ name = "python-dotenv" }, { name = "python-multipart" },
{ name = "pyyaml" }, { name = "pyyaml" },
{ name = "rich" },
{ name = "uncalled-for" }, { name = "uncalled-for" },
{ name = "uvicorn" }, { name = "uvicorn" },
{ name = "watchfiles" }, { name = "watchfiles" },
{ name = "websockets" }, { name = "websockets" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/25/83/c95d3bf717698a693eccb43e137a32939d2549876e884e246028bff6ecce/fastmcp-3.1.1.tar.gz", hash = "sha256:db184b5391a31199323766a3abf3a8bfbb8010479f77eca84c0e554f18655c48", size = 17347644, upload-time = "2026-03-14T19:12:20.235Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/70/ea/570122de7e24f72138d006f799768e14cc1ccf7fcb22b7750b2bd276c711/fastmcp-3.1.1-py3-none-any.whl", hash = "sha256:8132ba069d89f14566b3266919d6d72e2ec23dd45d8944622dca407e9beda7eb", size = 633754, upload-time = "2026-03-14T19:12:22.736Z" },
]
[[package]] [[package]]
name = "ffmpeg-python" name = "ffmpeg-python"
@ -1370,7 +1399,7 @@ requests = [
[[package]] [[package]]
name = "google-genai" name = "google-genai"
version = "1.68.0" version = "2.3.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "anyio" }, { name = "anyio" },
@ -1384,9 +1413,9 @@ dependencies = [
{ name = "typing-extensions" }, { name = "typing-extensions" },
{ name = "websockets" }, { name = "websockets" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/9c/2c/f059982dbcb658cc535c81bbcbe7e2c040d675f4b563b03cdb01018a4bc3/google_genai-1.68.0.tar.gz", hash = "sha256:ac30c0b8bc630f9372993a97e4a11dae0e36f2e10d7c55eacdca95a9fa14ca96", size = 511285, upload-time = "2026-03-18T01:03:18.243Z" } sdist = { url = "https://files.pythonhosted.org/packages/02/8e/dfa4b34dd4c0baffccf6466fc68d6d35011662d43e7d79accb902320db74/google_genai-2.3.0.tar.gz", hash = "sha256:e877c750a4ccacdd9928fc3aa8ca8820ce85cade0ca51bd83feceacf5959b579", size = 546930, upload-time = "2026-05-15T06:22:36.264Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/84/de/7d3ee9c94b74c3578ea4f88d45e8de9405902f857932334d81e89bce3dfa/google_genai-1.68.0-py3-none-any.whl", hash = "sha256:a1bc9919c0e2ea2907d1e319b65471d3d6d58c54822039a249fe1323e4178d15", size = 750912, upload-time = "2026-03-18T01:03:15.983Z" }, { url = "https://files.pythonhosted.org/packages/b4/6e/aa6b30b09f58b946750fc4089c5248fbd3576f746e0e818d88633559dc84/google_genai-2.3.0-py3-none-any.whl", hash = "sha256:89d3c71c9f5f5b931b405b88a5837aea2bd4d27ed90323b9599f5760bbb91d92", size = 805484, upload-time = "2026-05-15T06:22:34.247Z" },
] ]
[[package]] [[package]]
@ -1621,7 +1650,7 @@ requires-dist = [
{ name = "pydantic-ai-slim", extras = ["google"], marker = "extra == 'google'" }, { name = "pydantic-ai-slim", extras = ["google"], marker = "extra == 'google'" },
{ name = "pydantic-ai-slim", extras = ["groq"], marker = "extra == 'groq'" }, { name = "pydantic-ai-slim", extras = ["groq"], marker = "extra == 'groq'" },
{ name = "pydantic-ai-slim", extras = ["mistral"], marker = "extra == 'mistral'" }, { name = "pydantic-ai-slim", extras = ["mistral"], marker = "extra == 'mistral'" },
{ name = "pydantic-ai-slim", extras = ["openai", "fastmcp", "logfire", "ag-ui"], specifier = ">=1.81.0" }, { name = "pydantic-ai-slim", extras = ["openai", "fastmcp", "logfire", "ag-ui"], specifier = ">=1.96.0" },
{ name = "pydantic-ai-slim", extras = ["vertexai"], marker = "extra == 'vertexai'" }, { name = "pydantic-ai-slim", extras = ["vertexai"], marker = "extra == 'vertexai'" },
{ name = "pydantic-ai-slim", extras = ["voyageai"], marker = "extra == 'voyageai'" }, { name = "pydantic-ai-slim", extras = ["voyageai"], marker = "extra == 'voyageai'" },
{ name = "pydantic-monty", specifier = ">=0.0.9" }, { name = "pydantic-monty", specifier = ">=0.0.9" },
@ -1924,6 +1953,18 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" },
] ]
[[package]]
name = "joserfc"
version = "1.6.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cryptography" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3b/dc/5f768c2e391e9afabe5d18e3221346deb5fb6338565f1ccc9e7c6d7befdd/joserfc-1.6.5.tar.gz", hash = "sha256:1482a7db78fb4602e44ed89e51b599d052e091288c7c532c5b694e20149dec48", size = 231881, upload-time = "2026-05-06T04:58:13.408Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/54/3b/ad1cb22e75c963b1f07c8a2329bf47227ce7e4361df5eb2fb101b2ce33ef/joserfc-1.6.5-py3-none-any.whl", hash = "sha256:e9878a0f8243fe7b95e11fdda81374ca9f7a689e302751579d3dfdeec559675e", size = 70464, upload-time = "2026-05-06T04:58:11.668Z" },
]
[[package]] [[package]]
name = "jsonlines" name = "jsonlines"
version = "4.0.0" version = "4.0.0"
@ -3703,7 +3744,7 @@ email = [
[[package]] [[package]]
name = "pydantic-ai-slim" name = "pydantic-ai-slim"
version = "1.81.0" version = "1.96.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "genai-prices" }, { name = "genai-prices" },
@ -3714,9 +3755,9 @@ dependencies = [
{ name = "pydantic-graph" }, { name = "pydantic-graph" },
{ name = "typing-inspection" }, { name = "typing-inspection" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/85/e9/8fbc609f28cb708bfcc5db7864d40bd4ac84f3e3780321ca50d7739f3c3d/pydantic_ai_slim-1.81.0.tar.gz", hash = "sha256:9895e2d3ae46b8e0342af5b862c987cfb86df87ef887dc8352e372b183db6c06", size = 550997, upload-time = "2026-04-14T01:47:58.757Z" } sdist = { url = "https://files.pythonhosted.org/packages/2a/e5/4df3e92e08d3f954c12a4f2cd04823832876fa916f3a3d4c6f0bda6fd775/pydantic_ai_slim-1.96.1.tar.gz", hash = "sha256:f25476e68802ce684e09f10752be3f340962a7d0a4e49f9ef1410e5b1cb292f8", size = 699806, upload-time = "2026-05-15T00:16:54.181Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/e4/81/dc7062fc325ebb448ed9311edfde895c009ddf3cbd3d65c815b8a52c4bf8/pydantic_ai_slim-1.81.0-py3-none-any.whl", hash = "sha256:1d3dd19a53bcdcc9baf75d7b60daee87a80f0647df221776a76b177f4526ed2a", size = 705019, upload-time = "2026-04-14T01:47:51.399Z" }, { url = "https://files.pythonhosted.org/packages/78/c6/689daa885b98d0b831006e46105195ac6b124ef35e15d6f032aa52c8e0f5/pydantic_ai_slim-1.96.1-py3-none-any.whl", hash = "sha256:8e7be18e98941f6b861fdeecefb46fcc67232c22c968b92e475170a34a7b1d03", size = 871190, upload-time = "2026-05-15T00:16:44.537Z" },
] ]
[package.optional-dependencies] [package.optional-dependencies]
@ -3836,7 +3877,7 @@ wheels = [
[[package]] [[package]]
name = "pydantic-evals" name = "pydantic-evals"
version = "1.81.0" version = "1.96.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "anyio" }, { name = "anyio" },
@ -3846,14 +3887,14 @@ dependencies = [
{ name = "pyyaml" }, { name = "pyyaml" },
{ name = "rich" }, { name = "rich" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/5e/47/8e1bc88e1fce1a636c4d4bc5fe883f37d2737f9c03efcd7aeb9238ebf07c/pydantic_evals-1.81.0.tar.gz", hash = "sha256:70fd1d9a1e8c17b8e45affd635427f05e2d1e92111d98287b3bd1393d32a65b3", size = 65783, upload-time = "2026-04-14T01:48:00.03Z" } sdist = { url = "https://files.pythonhosted.org/packages/4f/b6/ca74cc1efaae6da32ad4cd1f3746d82b82940efe9c4a6a46d84d4f9de03f/pydantic_evals-1.96.1.tar.gz", hash = "sha256:df29d76d1c4aa10f4a23477488f27ca5d8d7e277f2e3bf51336b30d264da4084", size = 76674, upload-time = "2026-05-15T00:16:55.516Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/8e/8e/9bee73a780b769c1cb0fa4ad88f22f0dc27d2231358e0ad727b0a9c2f036/pydantic_evals-1.81.0-py3-none-any.whl", hash = "sha256:49516ddadd8064365684cdb4bdfda2e5f1d9b786bebae239d84445727d1e3f26", size = 77710, upload-time = "2026-04-14T01:47:53.166Z" }, { url = "https://files.pythonhosted.org/packages/a7/6c/78222cf322420b73c8d46d93d38ccf42b8eea627404d7f56c611e3f7790c/pydantic_evals-1.96.1-py3-none-any.whl", hash = "sha256:7a50a03f3662a5ba03bacf47c33faa7e743e559a44cbfbbfb20ee190130d22f4", size = 91598, upload-time = "2026-05-15T00:16:46.818Z" },
] ]
[[package]] [[package]]
name = "pydantic-graph" name = "pydantic-graph"
version = "1.81.0" version = "1.96.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "httpx" }, { name = "httpx" },
@ -3861,9 +3902,9 @@ dependencies = [
{ name = "pydantic" }, { name = "pydantic" },
{ name = "typing-inspection" }, { name = "typing-inspection" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/bd/69/c38ea1c4c8b9789ce1777b408b9fe0f889638415cd97f53a9f95ffbbb044/pydantic_graph-1.81.0.tar.gz", hash = "sha256:721b33324dc25b2ce5956fed8a362e8c558163b45d39e9f83e8ea7b5d44743c0", size = 59240, upload-time = "2026-04-14T01:48:00.99Z" } sdist = { url = "https://files.pythonhosted.org/packages/c7/ce/4f2dcdbcd5e46817a875d967cce804080c11827f2bd2882e29251cd5c18d/pydantic_graph-1.96.1.tar.gz", hash = "sha256:1e61909c0277438ba86ac330eb0423b46dabe93d96b2df21dc9974017a298cf4", size = 59294, upload-time = "2026-05-15T00:16:56.548Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/4c/bd/9b0561bea26a9918c819b391c3de08cdaa9ef99bab9b4fba8f557df70503/pydantic_graph-1.81.0-py3-none-any.whl", hash = "sha256:9f6256612323d9708b2a3a140db3a3e8ee2fe30c3f1befa897ea473e82cc0faa", size = 73063, upload-time = "2026-04-14T01:47:54.631Z" }, { url = "https://files.pythonhosted.org/packages/35/cb/70032217f8baacd825282db4e60f5160c9b7eca42e8109906bd6952a620b/pydantic_graph-1.96.1-py3-none-any.whl", hash = "sha256:e2b377210d63ef93c85cf7ac6cdafcbe9fcdd9f60d19c008b24eb689637e9de6", size = 73050, upload-time = "2026-05-15T00:16:48.23Z" },
] ]
[[package]] [[package]]
@ -4122,11 +4163,11 @@ wheels = [
[[package]] [[package]]
name = "python-multipart" name = "python-multipart"
version = "0.0.22" version = "0.0.28"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/94/01/979e98d542a70714b0cb2b6728ed0b7c46792b695e3eaec3e20711271ca3/python_multipart-0.0.22.tar.gz", hash = "sha256:7340bef99a7e0032613f56dc36027b959fd3b30a787ed62d310e951f7c3a3a58", size = 37612, upload-time = "2026-01-25T10:15:56.219Z" } sdist = { url = "https://files.pythonhosted.org/packages/82/54/a85eb421fbdd5007bc5af39d0f4ed9fa609e0fedbfdc2adcf0b34526870e/python_multipart-0.0.28.tar.gz", hash = "sha256:8550da197eac0f7ab748961fc9509b999fa2662ea25cef857f05249f6893c0f8", size = 45314, upload-time = "2026-05-10T11:05:16.596Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/1b/d0/397f9626e711ff749a95d96b7af99b9c566a9bb5129b8e4c10fc4d100304/python_multipart-0.0.22-py3-none-any.whl", hash = "sha256:2b2cd894c83d21bf49d702499531c7bafd057d730c201782048f7945d82de155", size = 24579, upload-time = "2026-01-25T10:15:54.811Z" }, { url = "https://files.pythonhosted.org/packages/f3/a2/43bbc5860b5034e2af4ef99a0e04d726ff329c43e192ef3abaa8d7ecfce5/python_multipart-0.0.28-py3-none-any.whl", hash = "sha256:10faac07eb966c3f48dc415f9dee46c04cb10d58d30a35677db8027c825ed9b6", size = 29438, upload-time = "2026-05-10T11:05:15.052Z" },
] ]
[[package]] [[package]]