Skip to content

Commit 2a31fb0

Browse files
committed
perf: The Field method adds support for pydantic v2 parameters
1 parent cbc9107 commit 2a31fb0

1 file changed

Lines changed: 32 additions & 1 deletion

File tree

fastapi_amis_admin/models/fields.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import AbstractSet, Any, Callable, Dict, Mapping, Optional, Sequence, Type, Union
1+
from typing import AbstractSet, Any, Callable, Dict, List, Literal, Mapping, Optional, Sequence, Type, Union
22

33
from sqlalchemy import Column
44
from sqlmodel._compat import Undefined, UndefinedType, post_init_field_info
@@ -7,14 +7,25 @@
77
from fastapi_amis_admin.amis import FormItem, TableColumn
88
from fastapi_amis_admin.utils.pydantic import PYDANTIC_V2
99

10+
if PYDANTIC_V2:
11+
from pydantic.fields import AliasChoices, AliasPath
12+
13+
ValidationAliasT = Union[str, AliasPath, AliasChoices, None]
14+
else:
15+
ValidationAliasT = Optional[str]
16+
1017

1118
def Field(
1219
default: Any = Undefined,
1320
*,
1421
default_factory: Optional[NoArgAnyCallable] = None,
1522
alias: Optional[str] = None,
23+
alias_priority: Optional[int] = Undefined,
24+
validation_alias: ValidationAliasT = Undefined,
25+
serialization_alias: Optional[str] = Undefined,
1626
title: Optional[str] = None,
1727
description: Optional[str] = None,
28+
examples: Optional[List[Any]] = Undefined,
1829
exclude: Union[AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
1930
include: Union[AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
2031
const: Optional[bool] = None,
@@ -34,6 +45,14 @@ def Field(
3445
regex: Optional[str] = None,
3546
discriminator: Optional[str] = None,
3647
repr: bool = True,
48+
init_var: Optional[bool] = Undefined,
49+
kw_only: Optional[bool] = Undefined,
50+
pattern: Optional[str] = Undefined,
51+
strict: Optional[bool] = Undefined,
52+
allow_inf_nan: Optional[bool] = Undefined,
53+
union_mode: Literal["smart", "left_to_right"] = Undefined,
54+
frozen: Optional[bool] = Undefined,
55+
validate_default: Optional[bool] = Undefined,
3756
primary_key: Union[bool, UndefinedType] = Undefined,
3857
foreign_key: Any = Undefined,
3958
unique: Union[bool, UndefinedType] = Undefined,
@@ -58,6 +77,18 @@ def Field(
5877
if PYDANTIC_V2:
5978
current_schema_extra = {
6079
"json_schema_extra": current_schema_extra,
80+
"alias_priority": alias_priority,
81+
"validation_alias": validation_alias,
82+
"serialization_alias": serialization_alias,
83+
"examples": examples,
84+
"init_var": init_var,
85+
"kw_only": kw_only,
86+
"pattern": pattern,
87+
"strict": strict,
88+
"allow_inf_nan": allow_inf_nan,
89+
"union_mode": union_mode,
90+
"frozen": frozen,
91+
"validate_default": validate_default,
6192
}
6293
field_info = FieldInfo(
6394
default,

0 commit comments

Comments
 (0)