PydanticのFieldクラスのdeprecated
きっかけ
- 将来消す可能性がある変数には、
Field(deprecated=True)
をつけておいてほしいと言われた - イメージとしてはこんな感じ
from pydantic import BaseModel, Field from typing import Optional class User(BaseModel): id :int name: str old_field: Optional[str] = Field(deprecated=True) <- これ new_field: str
deprecated
って何と思ったので調べてみた
結論
- 2021.6現在まだ、
pydantic
には実装されていないので、Field(deprecated=True)
をつけても無視される(つけたところで何も変わらない) pydantic
のField
クラスはこんな感じで無視されるようになっている
- こちらの方がissueで将来的に追加して欲しい機能としてチケットをあげている
Add deprecated
marker for fields in a model · Issue #2255 · samuelcolvin/pydantic
有効になるとどうなるのか?
- ↑のissueによると、
deprecated=True
をつけると、つけられたフィールドは将来的に削除される可能性があるので、使わないでね みたいなwarningメッセージみたいなものが出るようになるらしい
(原文) Pydantic Fields should have a boolean option deprecated (default False) which can be used to mark deprecated fields. Pydantic plugin for Pycharm can also use this field to see if the field should be used any longer, and show code hints if someone is trying to interact with deprecated fields.