Skip to content

Conversation

@YuriiMotov
Copy link
Member

min_items and max_items parameters of Field are deprecated in Pydantyc V2

This PR reflects this in sqlmodel's Field.

It will still work, but emit a deprecation warning.


Actually, these parameters don't currently work master. This PR also fixes this the same way it's done in Pydantic's Field (min_length = min_items)


Code example and its output in the details:

Details
from pydantic import ValidationError
from sqlmodel import Field, SQLModel


class Model(SQLModel):
    value: list[int] = Field(min_items=2, max_items=4)

# DeprecationWarning: `min_items` is deprecated and will be removed, use `min_length` instead
#   value: list[int] = Field(min_items=2, max_items=4)
# DeprecationWarning: `max_items` is deprecated and will be removed, use `max_length` instead
#   value: list[int] = Field(min_items=2, max_items=4)


try:
    a = Model(value=[1])
except ValidationError as e:
    print(e)

# 1 validation error for Model
# value
#   List should have at least 2 items after validation, not 1 [type=too_short, input_value=[1], input_type=list]
#     For further information visit https://errors.pydantic.dev/2.12/v/too_short


try:
    b = Model(value=[1, 2, 3, 4, 5])
except ValidationError as e:
    print(e)

# 1 validation error for Model
# value
#   List should have at most 4 items after validation, not 5 [type=too_long, input_value=[1, 2, 3, 4, 5], input_type=list]
#     For further information visit https://errors.pydantic.dev/2.12/v/too_long

@YuriiMotov YuriiMotov marked this pull request as ready for review January 29, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants