diff --git a/python/demo/forms.py b/python/demo/forms.py index bf858635..770266ce 100644 --- a/python/demo/forms.py +++ b/python/demo/forms.py @@ -162,6 +162,12 @@ class BigModel(BaseModel): dob: date = Field(title='Date of Birth', description='Your date of birth, this is required hence bold') size: SizeModel + address: tuple[ + Annotated[str, Field(description='Main Address')], + Annotated[str | None, Field(description='Secondary Address')], + Annotated[str | None, Field(description='Business Address')] + ] + @field_validator('name') def name_validator(cls, v: str | None) -> str: if v and v[0].islower(): diff --git a/python/fastui/json_schema.py b/python/fastui/json_schema.py index d6c061e8..0d4a3514 100644 --- a/python/fastui/json_schema.py +++ b/python/fastui/json_schema.py @@ -204,6 +204,11 @@ def json_schema_array_to_fields( items_schema[field_name] = value # type: ignore if field := special_string_field(items_schema, loc_to_name(loc), title, required, True): return [field] + elif 'minItems' in schema and schema.get('minItems') == schema.get('maxItems'): + if items := schema.get('prefixItems'): + for i, item in enumerate(items): + yield from json_schema_any_to_fields(item, loc + [i], title, required, defs) + return raise NotImplementedError('todo')