msgspec icon indicating copy to clipboard operation
msgspec copied to clipboard

Cannot set `min_length` for optional string filed

Open RoTorEx opened this issue 10 months ago • 1 comments

Description

Error while creating an object with optional filed with min_length meta.

from typing import Annotated

import msgspec


class Author(msgspec.Struct):
    name: Annotated[str, msgspec.Meta(min_length=1)]
    biography: Annotated[None | str, msgspec.Meta(min_length=10)]


element = {"name": "Me", "biography": None}

author = msgspec.convert(element, type=Author)

Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/path/report.py", line 13, in author = msgspec.convert(element, type=Author) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: Can only set min_length on a str, bytes, or collection type - type typing.Annotated[None | str, msgspec.Meta(min_length=10)] is invalid


msgspec version 0.19.0

RoTorEx avatar Jan 21 '25 12:01 RoTorEx

None does not have a length, is that an issue? Try to use Annonated[str, msgspec.Meta(min_length=10)] | None

oek1ng avatar Jan 24 '25 08:01 oek1ng