-
-
Notifications
You must be signed in to change notification settings - Fork 660
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Preparing for Pydantic v2 release #532
Comments
FastAPI's Pydantic v2 support seems quite complete now, the CI now runs both with v1 and v2. I didn't look very closely, but all tests seem to pass. Perhaps now is a good time to check how it would go with SQLModel and Pydantic v2. Has anyone taken a look? There's a migration guide at https://docs.pydantic.dev/dev-v2/migration/ |
Is there an ETA for this? |
Tiangolo has worked hard to bring FastAPI over to Pydantic v2. That's pretty far, and there he says, 4d ago, that he'll update SQLModel next. fastapi/fastapi#9709 (reply in thread) |
Some suggestions: 1, support sqlalchemy mapped_column(), Mapped or Column and lambda to avoid column object already assigned to table 2, support pydantic v2 types and network types 3, support Annotated types or more... 4, Open a new branch for pydantic v2 and sqlalchemy v2 instead of samples: from sqlmodel import SQLModel, Field
from typing_extensions import Annotated
from typing import Optional
from pydantic import AnyUrl, UrlConstraints
from pydantic.main import BaseModel
MoveSharedUrl = Annotated[AnyUrl, UrlConstraints(max_length=512, allowed_schemes=['smb', 'ftp','file'])]
from sqlalchemy import Integer, Column, String
from sqlalchemy.orm import mapped_column
from ipaddress import IPv4Address, IPv6Address
class Sample(SQLModel, table=True):
#1,
union_str : str | None = Field( description='the name', primary_key=True)
#2,
optional_str: Optional[str] = Field( )
#3, annotated Field with default value
rateMax: Annotated[int , Field( sa_column= lambda: Column(Integer, default=-1, server_default="-1", nullable=False), ge=-1, description="")] = -1
#4, pydantic annotated AnyUrl
annotated_url: MoveSharedUrl = Field(description='the url')
union_annotated_url: MoveSharedUrl |None = Field(description='the url')
#5, python type to sqlalchemy type
source_ip: IPv4Address | IPv6Address = Field(
sa_column=mapped_column(String),
description="source IP"
) |
A pull has been made for supporting my sample: mbsantiago#1 |
I Is there a release date for sqlmodel fully compatible with latest version (>2) of pydantic ? |
Not yet, but it's on his todo list |
Any movement on this ? Thanks for great work so far |
Hi there, |
From #654
|
Maybe a silly idea, but in order to liberate the people using sqlmodel to use pydantic V2 on other part of the application, could you make the transition to use the embeded v1 present in V2 ? That would allow dev to import pydantic V2, but to keep sqlmodel connected to pydantic V1 until it's ready. |
@pmithrandir @tiangolo has fixed this and both support is now integrated in the master branch. So you can use v2 for everything now |
Should this issue not be closed now that v0.0.14 is out and supports pydantic v2? |
First Check
Commit to Help
Example Code
Description
After locally installing Pydantic v2 (main development branch)... :
... SQLModel breaks at import time:
Is there any roadmap or planning for preparing SQLModel for Pydantic V2?
This is not a request per se, but a simple inquiry as was done in the two issues below. Hopefully it serves as a watcher/tracker for this key transition:
Operating System
Linux, Windows, macOS, Other
Operating System Details
No response
SQLModel Version
0.0.8
Python Version
3.9.12
Additional Context
No response
The text was updated successfully, but these errors were encountered: