Repository navigation
Release/0.7.0 python 3.11 and an official pydantic - #20
Merged
Merged
Conversation
…tober 2026) requires-python is now ">=3.11"; the 3.10 classifier and the Test (Python 3.10) CI job are gone (matrix: 3.11, 3.12, 3.14). Ruff (py311) and mypy target 3.11; UP042 is ignored so Decision keeps its (str, Enum) behavior. No code path or fallback existed only for 3.10. uv.lock loses its python_full_version < '3.11' resolution branch, and with it Pillow 12.3.0, filelock 3.32.7 and dnspython 2.8.0, the versions behind the open Dependabot alerts on uv.lock. The lock now has Pillow 13.0.0 and dnspython 2.9.0 only, and no filelock. README, the Spanish section and CONTRIBUTING say 3.11+; CHANGELOG upgrade notes: users on Python 3.10 stay on 0.6.x.
VerictoToolset is a Pydantic AI WrapperToolset: it wraps any toolset (FunctionToolset, MCPToolset, combined, prefixed) and overrides call_tool(name, tool_args, ctx, tool), so Vericto checks the SQL argument of every call to a SQL tool before the wrapped toolset runs it. BLOCKED raises ModelRetry with the refusal (rule code, suggested_fix) and never runs the SQL (on_block="return" makes it the tool result, "raise" stops the run with VerictoBlocked); an approved query (mask, LIMIT bound) runs instead of the original; FLAGGED/MONITORED run and are logged and passed to on_verdict. Vericto's own errors stop the run. A tool in scope without the SQL parameter in its schema stops the run with VerictoConfigError before any tool runs. The check goes through Vericto.enforce() in a worker thread, as in vericto.openai_agents; the settings both share move to _agent.ToolCheck. Extra vericto[pydantic-ai] (pydantic-ai-slim>=2.0,<3, tested with 2.64.0 and 2.0.0); CI job Integration (pydantic-ai) with coverage and mypy against the real package, pins in ci/requirements-pydantic-ai.txt; tests against the real Agent with a scripted FunctionModel and an MCPToolset over stdio; the base import test also checks pydantic_ai. Guide rewritten, README table, install list and Spanish section, example, CHANGELOG, uv.lock.
_version.py 0.7.0; CHANGELOG [0.7.0] - 2026-11-01 with the upgrade notes (Python 3.10 users stay on 0.6.x), vericto.pydantic_ai and the uv.lock security clean-up. uv.lock needs no change: the package version is dynamic.
vericto
force-pushed
the
release/0.7.0-Python-3.11-and-an-official-Pydantic
branch
from
November 1, 2026 15:40
cfa9263 to
85ed7a0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR change?
Why?
Type of change
Tests
uv run ruff check .anduv run ruff format --check .passuv run mypypassesuv run coverage run -m pytestanduv run coverage report --omit=...(as in CI) pass, at or above 80%Integration (...)job's commands pass locally (if an integration changed)uv buildsucceedsChecklist
CHANGELOG.mdupdated under[Unreleased](if a user of the package can see the change)README.md