概要
pydanticのStrictBool
を使用してみました。
より厳格に型チェックを行いたいときはこちらの利用が推奨されています。
と言うこt実際に検証!
pydanticのStrictBoolとは?
pydanticのドキュメントには以下のように記載があります。
StrictBool module-attribute
StrictBool = Annotated[bool, Strict()]
A boolean that must be either True or False.
https://docs.pydantic.dev/2.2/api/types/#pydantic.types.StrictBool
必ずTrue
からFalse
である必要がある、と。
では普通のbool
と何が違うのか?
私が実際に検証した限り、1
や0
はそれぞれTrueやFalseに変換されない、と言う点が大きな違いと思います。
以下、相違点です。
bool
を利用する場合
- TrueとFalseを受け入れる
- 以下の値も受け入れ、
True
またはFalse
に変換する-
1
や0
-
"1"
や"0"
-
"true"
や"false"
-
pydanticのStrictBool
- TrueとFalseを受け入れる
- 以下の値は受け入れない
-
1
や0
-
"1"
や"0"
-
"true"
や`"false"
-
ちなみに例えばpydanticのStrictBool
の項目に対して「1
」を連携すると、
Input should be a valid boolean
と言うバリデーションエラーになりました。
厳格なチェックが行われていることが分かりました。
以上、それぞれの違いをまとめました。