在Python中从数据类生成YAML方案

问题描述 投票:0回答:1

假设我有以下数据类

@dataclass
class MyStocksConf:
    File: str = r'buydicnk.cache'
    SrcFile: str = "example_mystock.csv"
    PortofolioName: str = "My Portfolio"
    Use: Union[UseCache, int] = UseCache.USEIFAVALIABLE

我有一个类配置,它是一个数据类并包含它(和其他类)。

如果重要的话,我使用 ruamel.yaml 注册自定义类。 尽管我最终加载它是不安全的。

我想在 YAML 中拥有 IntelliSense(使用 yaml-ls)。为此,我需要生成一个方案。这个方案应该与此完全匹配:

MyStocks:
 !MyStocksConf
 File: buydicnk.cache
 PortofolioName: My Portfolio
 SrcFile: C:\Users\...\.compare_my_stocks
 Use: !UseCache DONT

UseCache的定义:

@to_yaml
class UseCache(int,Enum):
    DONT=0
    USEIFAVALIABLE=1
    FORCEUSE=2

我如何从我的类定义生成这样的方案?

我想要方案中的类型。如果它是一个枚举,则还强制枚举该枚举的成员。其他事情对于方案生成器来说是未知的,尽管可以说可以从字段的描述中推断出描述。

python yaml intellisense ruamel.yaml
1个回答
0
投票

Pydantic 支持生成方案。您可以使用它(BaseModel)而不是普通的数据类。

from pydantic import TypeAdapter

adapter = TypeAdapter(List[int])
print(adapter.json_schema())
#> {'items': {'type': 'integer'}, 'type': 'array'}

摘自 https://docs.pydantic.dev/latest/usage/json_schema/

请注意,据我所知,JSON 方案是用于验证 YAML 的方案。

© www.soinside.com 2019 - 2024. All rights reserved.