在我的 Config 类中:
class MyConfig(BaseSettings):
err_if_not_found: bool = False
model_config = SettingsConfigDict(
env_file=MyConfigs(err_if_not_found).configs,
env_prefix="MY_APP",
)
我有自己的类用于加载配置,如果设置了
err_if_not_found
,它支持选择性地抛出错误。
我真的不想重写 BaseSettings 构造函数,我想不管它,而不用担心在不破坏 pydantic 功能的情况下正确复制它。
有没有一个功能可以做这样的事情,我传入一个值,然后传递给一个函数或在
SettingsConfigDict
内部调用的东西:
MyConfig(err_if_not_found=True)
据我所知,Pydantic 不可能做到这一点。
我相信您能得到的最接近您所描述的内容是有两个类,一个类将
True
作为 SettingsConfigDict
中的标志值传递,另一个传递 False
中的标志值。比如:
class MyConfigBase(BaseSettings):
...
class MyConfigWithErrorIfNotFound(MyConfigBase):
model_config = SettingsConfigDict(
env_file=MyConfigs(err_if_not_found=True).configs,
env_prefix="MY_APP",
)
class MyConfigWithoutErrorIfNotFound(MyConfigBase):
model_config = SettingsConfigDict(
env_file=MyConfigs(err_if_not_found=True).configs,
env_prefix="MY_APP",
)