首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能使用Pydantic而不是水核心python包中的结构化Con图中的数据?

是否有可能使用Pydantic而不是水核心python包中的结构化Con图中的数据?
EN

Stack Overflow用户
提问于 2022-01-09 08:22:38
回答 2查看 1.8K关注 0票数 5

最近,我开始使用九头蛇来管理我的应用程序中的信任。我使用结构化Con图为.yaml配置文件创建模式。Hyda中的结构化Con图使用数据集进行类型检查。但是,我也想对我在结构化Con图(类似于)中指定的一些参数使用某种验证器。

你知道是否可以在某种程度上使用毕达汀来达到这个目的?当我尝试使用Pydantic时,OmegaConf抱怨道:

代码语言:javascript
复制
omegaconf.errors.ValidationError: Input class 'SomeClass' is not a structured config. did you forget to decorate it as a dataclass?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-15 06:15:09

对于那些想知道这到底是如何工作的人,下面是一个例子:

代码语言:javascript
复制
import hydra
from hydra.core.config_store import ConfigStore
from omegaconf import OmegaConf
from pydantic.dataclasses import dataclass
from pydantic import validator


@dataclass
class MyConfigSchema:
    some_var: float

    @validator("some_var")
    def validate_some_var(cls, some_var: float) -> float:
        if some_var < 0:
            raise ValueError(f"'some_var' can't be less than 0, got: {some_var}")
        return some_var


cs = ConfigStore.instance()
cs.store(name="config_schema", node=MyConfigSchema)


@hydra.main(config_path="/path/to/configs", config_name="config")
def my_app(config: MyConfigSchema) -> None:
    # The 'validator' methods will be called when you run the line below
    OmegaConf.to_object(config)


if __name__ == "__main__":    
    my_app()

config.yaml

代码语言:javascript
复制
defaults:
  - config_schema

some_var: -1  # this will raise a ValueError
票数 6
EN

Stack Overflow用户

发布于 2022-01-10 05:58:24

请参阅pydantic.dataclasses.dataclass,它是标准库数据类型的插入替代,有一些额外的类型检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70639556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档