AllenNeuralDynamics / AllenNeuralDynamics/biodata-schema

Relax pydantic upper bound to <3.0

Open
#3 1 comment 0 reactions 1 assignee Claimed by @dbirman View on GitHub
Dominant language
Python
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

> [!Note]
> I'm opening this issue here because issues are disabled on the aind-data-schema repo, and [aind-data-schema#1870](https://github.com/AllenNeuralDynamics/aind-data-schema/issues/1870) directs all new requests to this repo.

## Problem

**aind-data-schema** restricts pydantic to `>=2.7, <2.12`. The upper bound was added
because of a regression in pydantic 2.12 around `model_validators`, but https://github.com/AllenNeuralDynamics/aind-data-schema/pull/1583 fixed that.
So the constraint seems to have outlived the bug.

## Proposal

Relax the bound to `pydantic>=2.7, <3.0`.

To catch this kind of breakage before downstream users do, you can test both ends of the declared range in CI using uv's [`--resolution` strategies](https://docs.astral.sh/uv/concepts/resolution/#resolution-strategy):

```yaml
strategy:
matrix:
resolution: ["lowest-direct", "highest"]

steps:
- uses: astral-sh/setup-uv@v5
- run: uv pip install -e .[dev] --resolution ${{ matrix.resolution }} --system
- run: coverage run -m unittest discover && coverage report
```

`highest` catches new releases (like pydantic 2.12) the day they ship. You can run it on a schedule and it fails here first, instead of in downstream projects. `lowest-direct` verifies the `>=2.7` floor still actually works. `uv pip install` is a drop-in replacement for the current `pip install -e .[dev]` step, so existing test/lint commands run unchanged.

Happy to open a PR for either piece.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.