Используйте RootModel в качестве BaseSettings. ⇐ Python
-
Anonymous
Используйте RootModel в качестве BaseSettings.
Я хочу использовать следующую модель для своих настроек:
импортировать pydantic импортировать pydantic_settings класс Clustered(pydantic.BaseModel): is_clustered: typing.Literal[True] имя_сервера: ул класс NonClustered(pydantic.BaseModel): is_clustered: typing.Literal[False] = False # ??? Settings = pydantic_settings.RootSettings[Clustered | Некластеризованный] Но я не могу придумать, как это сделать, и множественное наследование не работает:
>>> Настройки класса(pydantic_settings.BaseSettings, pydantic.RootModel[NonClustered | Clustered]): pass ... Traceback (последний вызов последний): Файл «», строка 1, в Файл «/usr/local/lib/python3.12/site-packages/pydantic/_internal/_model_construction.py», строка 117, в __new__ cls: type[BaseModel] = super().__new__(mcs, cls_name, bases, namespace, **kwargs) # тип: игнорировать ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ Файл «», строка 106, в __new__ Файл «/usr/local/lib/python3.12/site-packages/pydantic/root_model.py», строка 50, в __init_subclass__ поднять PydanticUserError( pydantic.errors.PydanticUserError: RootModel не поддерживает настройку model_config['extra']`
Я хочу использовать следующую модель для своих настроек:
импортировать pydantic импортировать pydantic_settings класс Clustered(pydantic.BaseModel): is_clustered: typing.Literal[True] имя_сервера: ул класс NonClustered(pydantic.BaseModel): is_clustered: typing.Literal[False] = False # ??? Settings = pydantic_settings.RootSettings[Clustered | Некластеризованный] Но я не могу придумать, как это сделать, и множественное наследование не работает:
>>> Настройки класса(pydantic_settings.BaseSettings, pydantic.RootModel[NonClustered | Clustered]): pass ... Traceback (последний вызов последний): Файл «», строка 1, в Файл «/usr/local/lib/python3.12/site-packages/pydantic/_internal/_model_construction.py», строка 117, в __new__ cls: type[BaseModel] = super().__new__(mcs, cls_name, bases, namespace, **kwargs) # тип: игнорировать ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ Файл «», строка 106, в __new__ Файл «/usr/local/lib/python3.12/site-packages/pydantic/root_model.py», строка 50, в __init_subclass__ поднять PydanticUserError( pydantic.errors.PydanticUserError: RootModel не поддерживает настройку model_config['extra']`