コンテンツにスキップ

RootModel

RootModelクラスとタイプの定義。

RootModel

RootModel(
    root: RootModelRootType = PydanticUndefined, **data
)

Bases: BaseModel, Generic[RootModelRootType]

Usage Documentation

RootModel and custom root types

モデルのルートオブジェクト用のPydanticBaseModelです。

Attributes:

Name Type Description
root RootModelRootType

モデルのルートオブジェクト。

__pydantic_root_model__

モデルがRootModelであるかどうか。

__pydantic_private__

モデル内のprivateフィールド。

__pydantic_extra__

モデル内の追加フィールド。

Source code in pydantic/root_model.py
61
62
63
64
65
66
67
68
69
def __init__(self, /, root: RootModelRootType = PydanticUndefined, **data) -> None:  # type: ignore
    __tracebackhide__ = True
    if data:
        if root is not PydanticUndefined:
            raise ValueError(
                '"RootModel.__init__" accepts either a single positional argument or arbitrary keyword arguments'
            )
        root = data  # type: ignore
    self.__pydantic_validator__.validate_python(root, self_instance=self)

model_construct classmethod

model_construct(
    root: RootModelRootType,
    _fields_set: set[str] | None = None,
) -> Self

指定されたルートオブジェクトを使用して新しいモデルを作成し、フィールドセットを更新します。

Parameters:

Name Type Description Default
root RootModelRootType

モデルのルートオブジェクト。

required
_fields_set set[str] | None

更新されるフィールドのセット。

None

Returns:

Type Description
Self

新しいモデル。

Raises:

Type Description
NotImplemented

モデルがRootModelのサブクラスでない場合。

Source code in pydantic/root_model.py
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
@classmethod
def model_construct(cls, root: RootModelRootType, _fields_set: set[str] | None = None) -> Self:  # type: ignore
    """指定されたルートオブジェクトを使用して新しいモデルを作成し、フィールドセットを更新します。

    Args:
        root: モデルのルートオブジェクト。
        _fields_set: 更新されるフィールドのセット。

    Returns:
        新しいモデル。

    Raises:
        NotImplemented: モデルが`RootModel`のサブクラスでない場合。
    """
    return super().model_construct(root=root, _fields_set=_fields_set)

model_dump

model_dump(
    *,
    mode: Literal["json", "python"] | str = "python",
    include: Any = None,
    exclude: Any = None,
    context: dict[str, Any] | None = None,
    by_alias: bool = False,
    exclude_unset: bool = False,
    exclude_defaults: bool = False,
    exclude_none: bool = False,
    round_trip: bool = False,
    warnings: (
        bool | Literal["none", "warn", "error"]
    ) = True,
    serialize_as_any: bool = False
) -> Any

このメソッドは、型チェッカーの戻り値の型をより正確に取得するためだけに含まれています。 実際には上書きが必要ないので、このif TYPE_CHECKING:ブロックに含まれています。

引数の詳細については、BaseModel.model_dumpのドキュメントを参照してください。

一般に、RootModelRootTypeBaseModelサブクラスではないと仮定すると、このメソッドの戻り値の型はRootModelRootTypeになります。RootModelRootTypeBaseModelサブクラスである場合、戻り値の型はdict[str, Any]になります。これはmodel_dump呼び出しが再帰的であるためです。カスタムシリアライザの場合、戻り値の型は別のものになることもあります。 したがって、ここでは"Any"を使用して、これらのケースをすべてキャッチします。

Source code in pydantic/root_model.py
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
def model_dump(  # type: ignore
    self,
    *,
    mode: Literal['json', 'python'] | str = 'python',
    include: Any = None,
    exclude: Any = None,
    context: dict[str, Any] | None = None,
    by_alias: bool = False,
    exclude_unset: bool = False,
    exclude_defaults: bool = False,
    exclude_none: bool = False,
    round_trip: bool = False,
    warnings: bool | Literal['none', 'warn', 'error'] = True,
    serialize_as_any: bool = False,
) -> Any:
    """このメソッドは、型チェッカーの戻り値の型をより正確に取得するためだけに含まれています。
    実際には上書きが必要ないので、この`if TYPE_CHECKING:`ブロックに含まれています。

    引数の詳細については、`BaseModel.model_dump`のドキュメントを参照してください。

    一般に、`RootModelRootType`が`BaseModel`サブクラスではないと仮定すると、このメソッドの戻り値の型は`RootModelRootType`になります。`RootModelRootType`が`BaseModel`サブクラスである場合、戻り値の型は`dict[str, Any]`になります。これは`model_dump`呼び出しが再帰的であるためです。カスタムシリアライザの場合、戻り値の型は別のものになることもあります。
    したがって、ここでは"Any"を使用して、これらのケースをすべてキャッチします。
    """
    ...