pydantic
バリデーターを書こうとしていkwargs
ますが、ドキュメントに記載されている引数を利用する方法を理解できないようです。検証のために条件付きパラメーターを渡したいと思います。おもちゃの例を次に示します。
from pydantic import validator
import pydantic.dataclasses as pyd_dc
@pyd_dc.dataclass
class Point_t:
x: int = 0
y: int = 1
@validator("y")
def quadrant(cls, val, values, **kwargs):
pt = x, y = values.get("x", None), val
if x is None:
raise ValueError(f"invalid point: {x}, {y}")
signs = kwargs.get("signs", None)
if signs is None:
raise ValueError("'signs' parameter missing")
if all(c * s >= 0 for c, s in zip(pt, signs) if s != 0):
return val
raise ValueError(f"{pt} not in quadrant: {signs}")
これは機能していないようです。Point_t
オブジェクトをインスタンス化すると、検証エラーが発生します。
ValidationError: 1 validation error for Point_t
y
'signs' parameter missing (type=value_error)
signs
上記の例でパラメータを渡すにはどうすればよいですか? 方法がない場合、許可する意味は何**kwargs
ですか? 私は何が欠けていますか?