Back

pydantic #11883

Add experimental `MISSING` sentinel

by Viicos · Feb 06, 2026 at 19:03 UTC · scan-b5e1b81642da0c49

High Risk (50%)

Get this automatically on every PR

Install the Axiomo GitHub App to get Signals as check runs and PR comments on every pull request.

Install App

Risk Assessment

Risk level: High (50%)

Risk Drivers

  • multiple_concerns: Spans 6 directories
  • cross_concern_spread: Touches 3 functional domains: database, documentation, testing
  • api_surface_change: API surface changed in 2 file(s)

Intent

3/4 criteria met

Introduce an experimental `MISSING` sentinel to handle optional fields in Pydantic models.

Non-Goals

  • - Rename the sentinel to `UNSET`
  • - Implement additional optimizations for `literal` schemas
  • - Move sentinel to a non-experimental module

Acceptance Criteria

  • โœ“
    Introduce `MISSING` sentinel for Pydantic models.

    Added `MISSING` in experimental/missing_sentinel.py

  • โœ“
    Update documentation to include `MISSING` sentinel usage.

    docs/concepts/experimental.md and docs/errors/validation_errors.md updated

  • โœ“
    Implement a core schema for the `MISSING` sentinel.

    New core schema type discussion in PR description; integrated in code

  • ?
    Pass tests that cover `MISSING` sentinel functionality.

    New tests/test_missing_sentinel.py added, but test outcomes not visible in diff

Confidence: 95.0% Source: pr description AI: openai

Contributors

Viicos PR Author 9 commits + Trusted
Account Age: 2095 days
Prior PRs: 479
Merged: 453

Trusted contributor with 453 merged PRs. maintains 112 public repositories. has 105 followers. unfamiliar with pydantic/experimental/missing_sentinel.py.

Evidence

Evidence Completeness: 82.0%
coverage_maintained Passing
tests_passing Unavailable
lint_passing Passing
ci_passing Passing
build_successful Passing
Missing: security_scan_clean

Supply Chain

Low Risk
Modifies dependencies
Modifies lockfile
Modifies CI config
Modifies build scripts

Focus Files

Review 2 high-priority file(s)

tests/test_missing_sentinel.py +71

71 lines changed; New file; Source code

high
pydantic/experimental/missing_sentinel.py +5

New file; Source code

high
pydantic/json_schema.py +15

Source code

medium
pydantic/_internal/_generate_schema.py +3

Source code

medium
pydantic/fields.py +4

Source code

medium
pydantic/version.py +2

Source code

medium
pyproject.toml +2

Configuration

low
docs/concepts/experimental.md +46

Standard file

low
docs/errors/validation_errors.md +21

Standard file

low

Triage

33

minutes to review

medium

effort level

low

staleness risk

Standard review process

Recommendation

APPROVE 73.0% readiness

Good evidence, acceptable risk, ready for merge

Next Steps

Question

Why is security_scan_clean missing? Consider adding this check.

Concern tests/test_missing_sentinel.py

New file in high-priority area: 71 lines changed; New file; Source code

Concern pydantic/experimental/missing_sentinel.py

New file in high-priority area: New file; Source code