Repository navigation
Upgrade pydantic to 2.14.1 with a recompiled requirements-dev.txt #6373
Copy link
Copy link
Open
Labels
DEV: backenddependenciesPull requests that update a dependency filePull requests that update a dependency filepythonPull requests that update Python codePull requests that update Python code
Description
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
Dependabot PR #6371 bumped pydantic from 2.13.4 to 2.14.1, but its dependency install failed and it was closed unmerged. That PR regenerated only requirements.txt. requirements-dev.txt still pins the old typing-extensions, so the two lock files conflict.
Complexity: Low
Target branch: unstable
Context
requirements-dev.instarts with-c requirements.txt, sorequirements-dev.txtmust matchrequirements.txton every package they share. Dependabot regenerates onlyrequirements.txt.- These four packages move together in
requirements.txt, so they have to be upgraded as a set:pydantic2.13.4 → 2.14.1pydantic-core2.46.4 → 2.50.1 (pydanticpins it exactly)typing-extensions4.15.0 → 4.16.0typing-inspection0.4.2 → 0.4.4
requirements-dev.txtpinstyping-extensions==4.15.0(viaexceptiongroup,virtualenv), which conflicts with the 4.16.0 thatrequirements.txtneeds.pydanticis a production dependency. The QTI models incontentcuration/contentcuration/utils/assessment/qti/are built on it, and publishing converts exercises to QTI with them.- The 2.14 release lists two behaviour changes that can affect those models:
- Enum constructors now run in both validation modes. Enum-typed fields are in
constants.py,mathml/fields.pyandhtml/*.py. model_configis no longer mutated.XMLElementinbase.pysetsextra="forbid",validate_assignment=Trueandfrozen=True.
- Enum constructors now run in both validation modes. Enum-typed fields are in
- The 2.14 security advisories (GHSA-gj4f-r7mf-jjxh,
Fractionexponents; GHSA-955g-x97g-8mcp, multi-host URLs) don't affect Studio. Its pydantic models use noFractionand no multi-host URL types.
The Change
requirements.inshould pinpydantic==2.14.1.requirements.txtandrequirements-dev.txtshould both be recompiled withuv pip compile(the command is in each file's header), so they agree ontyping-extensionsand every other shared package.
Acceptance Criteria
-
uv pip sync requirements.txt requirements-dev.txtsucceeds on Python 3.10. -
requirements.txtpinspydantic==2.14.1,pydantic-core==2.50.1,typing-extensions==4.16.0andtyping-inspection==0.4.4. -
requirements-dev.txtpins the sametyping-extensionsversion asrequirements.txt. -
pytest contentcuration/contentcuration/tests/utils/qti/passes. - The full Python CI job runs and passes.
References
- Closed PR: build(deps): Bump pydantic from 2.13.4 to 2.14.1 #6371
- Release notes: https://github.com/pydantic/pydantic/releases/tag/v2.14.0, https://github.com/pydantic/pydantic/releases/tag/v2.14.1
AI usage
rtibblesbot (Claude Code) reviewed #6371, recommended closing it, and drafted this issue from that review and the lock files.
Filed from #6371's review.
Metadata
Metadata
Assignees
Labels
DEV: backenddependenciesPull requests that update a dependency filePull requests that update a dependency filepythonPull requests that update Python codePull requests that update Python code

Activity