Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork740
👽️ Support Pydantic version 2.10#1215
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Without this fix, any SQLModel-based model with `table=True` and a `Field` that sets `default_factory=...` will brake with the following error message: `ValueError: 'validated_data' must be provided if 'call_default_factory' is True.`
Without this fix, any SQLModels with a `Field` that uses `default_factory=...` will brake with the following error message: `ValueError: 'validated_data' must be provided if 'call_default_factory' is True`.Made the fix backwards compatible.
Viicos commentedNov 26, 2024
Note that we added a quick fix in 2.10.1 to not raise the error. But indeed, SQLModel should support default factories taking a The (I'll also note that having SQModel relying so much on Pydantic is a bit scary, but well..) |
svlandeg left a comment• edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Hi@mtr, thanks for the contribution!
It looks like this PR was made fromhttps://github.com/encount/sqlmodel/tree/main and I can't push to that branch to make this PR up-to-date with the latest changes in the CI. Would you be able to change those permissions? Typically, maintainers of a repo should be allowed push access on a PR for the reviewing process to go more smoothly. Thanks!
Just FYI - you should see a box like this on your right hand side of the PR screen:
Hi,@svlandeg. Where can I find that setting that you showed an image of? I didn't find it, but ran a quick (automatic) sync with upstream repo. Hope that helps in the meantime. |
svlandeg commentedFeb 28, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
@mtr: it should be on the right-hand side of the main PR screen, below the sections "Milestone", "Development" and "participants" (you can ctrl-F those). If you don't see such a box, that may be because this PR was created from the fork over athttps://github.com/encount/sqlmodel/. I'm not sure how to fix things if that's the case - usually users create PRs from their own forks 🤔 |
PYDANCTIC_FIELD_GET_DEFAULT_REQUIRES_VALIDATED_DATA = ( | ||
"validated_data" in inspect.signature(FieldInfo.get_default).parameters | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Can't a version check be done instead? I think it would clearer with a comment:
PYDANCTIC_FIELD_GET_DEFAULT_REQUIRES_VALIDATED_DATA= ( | |
"validated_data"ininspect.signature(FieldInfo.get_default).parameters | |
) | |
# Pydantic 2.10 added support for default factories taking validated data: | |
PYDANCTIC_FIELD_GET_DEFAULT_REQUIRES_VALIDATED_DATA=IS_PYDANTIC_210 |
Sure, a version test could be done instead. I wanted to test for theexistence `validated_data` parameter because that was the cause of theissue. …On Fri, Feb 28, 2025 at 11:24 AM Victorien ***@***.***> wrote: ***@***.**** commented on this pull request. ------------------------------ In sqlmodel/_compat.py <#1215 (comment)>: > + PYDANCTIC_FIELD_GET_DEFAULT_REQUIRES_VALIDATED_DATA = ( + "validated_data" in inspect.signature(FieldInfo.get_default).parameters + ) Can't a version check be done instead? I think it would clearer with a comment: ⬇️ Suggested change - PYDANCTIC_FIELD_GET_DEFAULT_REQUIRES_VALIDATED_DATA = ( - "validated_data" in inspect.signature(FieldInfo.get_default).parameters - ) + # Pydantic 2.10 added support for default factories taking validated data: + PYDANCTIC_FIELD_GET_DEFAULT_REQUIRES_VALIDATED_DATA = IS_PYDANTIC_210 — Reply to this email directly, view it on GitHub <#1215 (review)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AABNHZCQCBF4IVH4HRS42KD2SA2NPAVCNFSM6AAAAABR253SQGVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDMNJQGM2TCNBWHA> . You are receiving this because you were mentioned.Message ID: ***@***.***> -- Kind regards,Martin Thorsen Ranang, *Ph.D*CEO | Encount ASphone:linkedin:location:+47 95853086https://www.linkedin.com/in/ranang/Fredrikstad, Norway |
Without this fix, any SQLModel-based model with
table=True
and aField
that setsdefault_factory=...
will brake with the following error message:ValueError: 'validated_data' must be provided if 'call_default_factory' is True.
To reproduce, before this fix is applied:
Install all project dependencies, then upgrade Pydantic:
Run the test suite:
… which will give the following output: