Artificial intelligence news.
Straight from the original announcements.

Pydantic v2.14 stabilizes MISSING sentinel and adds Python 3.15 support

October 8, 2026Source: Pydantic
Pydantic v2.14 stabilizes MISSING sentinel and adds Python 3.15 support
Image: Pydantic

Pydantic v2.14 was released on October 8th, adding official support for Python 3.15 and dropping Python 3.9. According to the Pydantic team, the release stabilizes the MISSING sentinel and brings support for lazy imports and TypeForm.

Key points
  • Pydantic v2.14 was released on October 8th and includes work from 13 external contributors.
  • The release drops Python 3.9 and adds support for Python 3.15.
  • The MISSING sentinel, experimental since 2.12, is now stable.
  • New support covers lazy imports, TypeForm and frozendict.
  • Minor changes affect JSON Schema output, model_config and the experimental pipeline API.

Python 3.15 support and new features

The release includes the work of 13 external contributors and covers new features, performance improvements and bug fixes. It can be installed from PyPI with pip install --upgrade pydantic. Pydantic says it now officially supports Python 3.15, including most of the new features that version introduces.

The MISSING sentinel, added as an experimental feature in 2.12, is now part of the main Pydantic API. It is a singleton indicating that a field value was not provided during validation. During serialization, any field with MISSING as its value is excluded from the output, and it does not appear in the generated JSON Schema. Developers can use is to tell the sentinel apart from other values, for example to fall back to defaults stored elsewhere.

Lazy imports, introduced by PEP 810 in Python 3.15, let models in separate modules reference each other without running into cyclic imports. TypeForm, introduced by PEP 747, is now used in several places, in particular with TypeAdapter. Pydantic says type checkers now infer the correct type for any type form passed to it, such as unions and Annotated forms, and not only classes. For TypeAdapter(int | str), validation now returns int | str, where 2.13 and earlier showed Unknown.

Pydantic also supports the frozendict type from PEP 814, which validates and serializes like a regular dict.

create_model namespace and faster core types

The function create_model() now accepts a __namespace__ argument. It can add any attribute to the class namespace of the created model, such as validators, methods or computed fields. The existing __validators__ argument is limited to validators. Pydantic now recommends __namespace__ instead, because __validators__ will be deprecated in v3.

Several types now have their own core schema, meaning they are validated and serialized natively by the pydantic-core Rust component. Previously Pydantic used custom Python validators for them, which the team describes as slower and without support for constraints. The migrated types are:

  • fractions.Fraction, where ZeroDivisionErrors during validation are now handled properly
  • Named tuples, which fixes a number of validation issues
  • collections.deque
  • collections.OrderedDict
  • collections.Counter

Changes to check before upgrading

The release also contains minor changes that Pydantic considers non-breaking under its versioning policy, but which may affect existing code. The team advises reading them before upgrading.

Several concern JSON Schema generation. Regex patterns for Decimal types, added in 2.12, are no longer included by default, because some users define validation contracts based on the generated schema. A custom GenerateJsonSchema subclass can enable the pattern again. The configuration of a TypeAdapter is now used when generating its JSON Schema, and a series of bug fixes aligns the schema more closely with validation and serialization behavior.

Other changes include:

  • model_config is no longer mutated by Pydantic and always reflects what the user set, merged with parent classes.
  • When validate_by_alias is False, the generated model signature uses the field name instead of the alias.
  • A non-positive value for multiple_of now raises an error when the model is defined, instead of an unhandled runtime exception during validation.
  • In the experimental pipeline API, numeric constraints such as gt(), ge(), lt(), le() and multiple_of() are now always applied natively by pydantic-core. They now appear in the JSON Schema, and validation errors match those of regular fields.

For projects still on Python 3.9, the release means staying on an earlier Pydantic version. Teams on newer Python versions should review the JSON Schema and model_config changes first, especially if they rely on generated schemas. The full changelog is available on GitHub.

PydanticPython 3.15MISSINGTypeFormenterprise AI

Related news

Pydantic benchmark: code mode roughly halves cost on long agent tasks
ResearchOctober 28, 2026, 10:00

Pydantic benchmark: code mode roughly halves cost on long agent tasks

Letting a model write a short program instead of calling tools one at a time cut cost by 58% and wall time by 51% on long tasks, according to a benchmark published by…

Pydantic maintainer wins AAIF award for MCP Python SDK work
For developersOctober 27, 2026, 10:00

Pydantic maintainer wins AAIF award for MCP Python SDK work

A Pydantic developer who maintains the MCP Python SDK has received the Outstanding Technical Contribution Award from the Agentic AI Foundation. The award was presented…

Pydantic Cuts CI Bill From $18,200 to $5,700 by Moving to RunsOn
For developersOctober 16, 2026, 11:00

Pydantic Cuts CI Bill From $18,200 to $5,700 by Moving to RunsOn

Pydantic says it cut its monthly CI cost from $18,200 in August to $5,700 in September after moving Logfire's GitHub Actions workflows to RunsOn, which launches…