Skip to content

Dependency updates in v26.10.11

This maintenance release adopts the book toolchain's PyYAML>=6.0.3,<7 from Dependabot PR #197. It retains SQLAlchemy>=2.0.50 instead of raising the supported minimum to 2.1.6 as proposed by PR #198. The repository lock already selects SQLAlchemy 2.1.6 and PyYAML 6.0.3. No application API migration is required from v26.10.10; Pydantic AI 2.59.0, Monty 0.0.23 and the existing compatibility caps remain in place. This release also includes previously unreleased dependency metadata from Dependabot PR #196: OpenAI/Azure embedding extras now require openai>=3.36.0, the binary extra requires pypdf>=6.21.2, and the FastAPI extra requires fastapi>=0.158.0. The v26.10.10 lock already selected OpenAI 3.37.0, pypdf 6.21.2 and FastAPI 0.162.0; the changed metadata makes those minimum requirements explicit. SQLAlchemy's locked selection advances from 2.1.4 to 2.1.6 while its supported 2.0.50 minimum stays intact. PR #196 also introduced the native uv project updater and separate pip documentation updater.

If an application selects one of these extras, reconcile any direct SDK pins below its new minimum before resolving the full graph, then test that adapter. Applications that do not select those extras do not need to add those SDKs. The declared constraints are in pyproject.toml; uv.lock records the exact repository selection. Applications must resolve and validate their own locks. Python 3.12 and 3.13 remain the qualification targets.

Repository dependency automation

Dependabot uses the uv ecosystem so Python updates include uv.lock, matching CI's uv sync --locked checks. The lockfile-only strategy updates resolved versions within existing requirements and leaves declared compatibility floors unchanged. Review requirement changes separately with the affected adapter's minimum-version and current-version qualification lanes. The Python dependency group includes both runtime and development dependencies. On the next native uv updater run, inspect its job payload and confirm lockfile-only: true; checked-in configuration records intent, not proof that the updater applied it. An earlier run reported requirements-update-strategy: null and lockfile-only: false, so that run does not establish an upstream strategy bug.

The separate pip entry keeps maintaining the documentation requirements while excluding pyproject.toml and uv.lock, which belong to the uv entry.

Intentional changes to Agentic extra requirements must also update the reviewed contracts in scripts/agentic-migration-manifest.json. Regenerate the lock and run scripts/verify_agentic_migration.py before submitting those changes. Explicitly pinned Pydantic AI and Monty upgrades require this deliberate manifest review and adapter qualification; lockfile-only automation cannot advance those pins. Keep the SQLAlchemy 2.0.50 floor and the separate 2.0/2.1 qualification lanes; a newer locked patch does not require dropping supported application combinations.

See uv's Dependabot integration and GitHub's versioning strategies.

Native redaction and Presidio removal

The pii extra, Presidio backend and its source-pinned anonymizer dependency are removed. Native regex redaction remains enabled by default. Remove pii from your PyFly extras, remove pyfly.logging.redaction.presidio, and select engine: regex. Legacy auto selects regex; explicit presidio is rejected. Recreate the application environment from the new lock to remove unused Presidio/spaCy packages. See the logging migration.

The previous Git/GitHub source-build and spaCy-model requirements no longer apply to redaction. Historical v26.10.05–08 facts remain in the changelog; do not reuse their removed backend installation instructions for this hotfix.

Compatibility boundaries

Dependency Current selection Compatibility boundary
OpenAI SDK (agentic-openai-embeddings, agentic-azure-embeddings) >=3.36.0; lock 3.37.0 Reconcile lower application pins when selecting either embedding extra.
pypdf (agentic-binary) >=6.21.2; lock 6.21.2 Reconcile lower application pins for binary ingestion.
FastAPI (fastapi) >=0.158.0; lock 0.162.0 Reconcile lower application pins when selecting the FastAPI adapter.
SQLAlchemy >=2.0.50; lock 2.1.6 Preserve qualified 2.0 applications while exercising the newer 2.1 selection in repository environments.
PyYAML (book toolchain) >=6.0.3,<7; installed 6.0.3 Keep documentation parsing within the supported 6.x series.
asyncmy >=0.2.11; lock 0.2.16 Keep the proven MySQL/MariaDB driver minimum while installing the newer compatible patch in repository environments.
openfeature-flagd-core >=1.0.0,<2 Preserve the shared PyFly/LaraFly fractional cohort contract; 2.x changes the hash input and shifts existing assignments.
Pydantic AI ==2.59.0 Preserve provider extras and the native runtime contracts.
NumPy >=2.5.4 The removed NLP dependency graph no longer imposes its NumPy restriction.
pydantic-monty ==0.0.23 Worker-backed adapter with per-run pool/session ownership, direct sync/async host tools, memory/recursion limits and a parent wall-clock budget. Non-None max_allocations is rejected because upstream removed that control.
Ragas >=0.2.6,<0.2.7 Ragas 0.4 introduces Instructor's rich<15 constraint, conflicting with the CLI's Rich 15 baseline.
LangChain community >=0.3.31,<0.4 Retain the compatible community adapter alongside Ragas 0.2.6; provider adapters resolve independently.
LangChain provider adapters Anthropic >=1.7.6, Ollama >=1.1.0, OpenAI >=1.7.2 These 1.x adapters resolve with the retained community adapter; the community cap does not hold all LangChain packages at 0.3.
datasets >=5.0.1 Retain the compatible release: 5.1 requires an hf-xet range incompatible with Pydantic AI's Hugging Face integration (hf-xet<1.5).

The last row is a compatible minimum, not a claim that every newer release can coexist with all extras. Let the resolver honor the complete graph rather than forcing individual requested major versions. Keep optional evaluation and sandbox dependencies out of installations that do not need them.

Monty 0.0.23 execution migration

The agentic-script-execution extra includes Monty's SDK runtime binary package, pydantic-monty-runtime. Keep that optional dependency installed alongside the SDK. Binary discovery uses the SDK's locator; an explicit SDK MONTY_BIN setting must identify a compatible executable. Missing binaries fail with installation guidance instead of falling back to CPython or a remote execution service.

MontyEnvironment and SecureScriptRunner retain their public call signatures. The adapter owns an AsyncMonty(max_processes=1, min_processes=0) pool and a fresh checkout for each run, closes both on every exit path, and preserves direct guest calls to sync and async external functions. The default 30-second wall-clock budget includes waiting for host callbacks; guest VM time, memory and recursion limits remain available. Remove max_allocations values before upgrading: Monty 0.0.23 no longer supports that control and PyFly raises ValueError before starting workers. See the execution tutorial.

Feature-flag cohort compatibility

The feature-flags extra retains openfeature-flagd-core>=1.0.0,<2. Version 2 changes fractional bucketing from raw flagKey + targetingKey input to a canonical CBOR array. That changes cohort assignments for existing users and fails the shared PyFly/LaraFly conformance vectors. Preserve the established vectors and application targeting keys when upgrading this hotfix; changing those fixtures to match the new dependency would hide a rollout behavior change.

A future 2.x adoption requires an explicit shared-contract migration and cross-framework qualification before changing cohort behavior. The current constraint intentionally defers that major version while allowing compatible 1.x fixes.

The MySQL extra also preserves its qualified asyncmy>=0.2.11 minimum alongside SQLAlchemy 2.0.50. The lock already selects asyncmy 0.2.16; raising the declared minimum to that patch would exclude supported application combinations without changing the version exercised by the repository tests.

Earlier v26.10.05 refresh

The earlier release consolidated Dependabot PR #171 and PR #157. The following adapter notes and version table describe that earlier refresh; the current hotfix's declared constraints and lock take precedence.

Adapter and tooling compatibility

Redis 8 introduces a five-second default socket timeout. PyFly's Redis Streams consumer explicitly keeps its blocking socket read unbounded so finite long polls and block_ms=0 remain valid; stop() cancels the consumer. Explicit socket settings in the Redis URL retain precedence. Legacy stream response shapes are selected for both RESP2 and RESP3. A real-server regression exercises idle reads longer than five seconds, event delivery, and cancellation.

Click, jsonpath-ng, and mypy changes are accommodated without changing public framework APIs. Testcontainers configuration tests isolate the Docker client; real backend tests remain in the integration lanes. Installer tests isolate PATH configuration from the user's shell profiles.

All 14 actions/setup-python uses are pinned to v7.0.0 commit 5fda3b95a4ea91299a34e894583c3862153e4b97. The removed pip-install input was not used by these workflows. At that release, book builds used WeasyPrint 70 and CairoSVG 2.9.1 or later, including the upstream security fixes; both English and Spanish PDF/EPUB editions are rebuilt from the software tag.

Historical v26.10.05 requested updates and resolved versions

The requested floor comes from the original Dependabot proposal. The resolved version is the release lock, or the separately installed site/book toolchain. This table records v26.10.05, not the current hotfix lock. Removed Presidio packages are omitted; their original release record remains in the changelog. SQLAlchemy's proposal changed only a comment: its floor then remained >=2.0.50.

Package Dependabot requested floor Resolved version
aio-pika aio-pika>=10.0.4 10.1.1
aiosmtpd aiosmtpd>=1.4.6 1.4.6
alembic alembic>=1.20.0 1.20.0
argon2-cffi argon2-cffi>=25.1.0 25.1.0
asyncmy asyncmy>=0.2.15 0.2.16
azure-storage-blob azure-storage-blob>=12.30.3 12.31.0
beanie beanie>=2.2.0 2.2.0
boto3 boto3>=1.43.103 1.43.114
click click>=8.5.0 8.5.0
coverage coverage[toml]>=7.16.1 7.16.2
croniter croniter>=6.2.4 6.2.4
cryptography cryptography>=50.0.1 50.0.2
fastapi fastapi>=0.141.1 0.143.1
gitpython GitPython>=3.1.62 3.2.1
granian granian>=2.8.3 2.8.4
grpcio grpcio>=1.84.0 1.84.0
markdown Markdown>=3.11,<4 3.11.1
mkdocs-material mkdocs-material>=9.7.7,<10 9.7.7
mypy mypy>=2.3.1 2.4.0
opentelemetry-api opentelemetry-api>=1.45.0 1.45.1
opentelemetry-exporter-otlp-proto-http opentelemetry-exporter-otlp-proto-http>=1.45.0 1.45.1
opentelemetry-instrumentation-starlette opentelemetry-instrumentation-starlette>=0.66b0 0.66b1
opentelemetry-sdk opentelemetry-sdk>=1.45.0 1.45.1
pika pika>=1.4.4 1.4.4
prometheus-client prometheus-client>=0.26.0 0.26.0
pydantic pydantic>=2.13.5 2.14.1
pygments Pygments>=2.21.0,<3 2.21.0
pyjwt pyjwt[crypto]>=2.15.0 2.15.1
pymdown-extensions pymdown-extensions>=12.1,<13 12.2
pyotp pyotp>=2.10.0 2.10.0
pytest pytest>=9.1.1 9.1.1
pytest-asyncio pytest-asyncio>=1.4.0 1.4.0
python-multipart python-multipart>=0.0.32 0.0.32
redis redis[hiredis]>=8.1.0 8.1.0
respx respx>=0.23.1 0.23.1
ruff ruff>=0.16.9 0.17.0
sqlalchemy sqlalchemy[asyncio]>=2.0.50 (lock >=2.1.1) 2.1.4
starlette starlette>=1.7.0 1.8.0
structlog structlog>=26.1.0 26.1.0
testcontainers testcontainers>=4.15.0 4.15.0
uvicorn uvicorn[standard]>=0.54.0 0.54.0
weasyprint WeasyPrint>=70.0,<71 70.0
websockets websockets>=17.1 17.2
cairosvg (additional security update) CairoSVG>=2.9.1,<3 2.9.1

CairoSVG is additionally raised from >=2.9,<3 to >=2.9.1,<3 to exclude the affected 2.9.0 release. Package minimums allow compatible newer releases; use uv.lock for the repository's exact dependency selection. Consumers should maintain and validate their own application lockfiles when upgrading.