In one of my newer projects I plan to use pydantic-settings paired with pydanclick for a declarative way to load settings from cli args and other sources such as pyproject.toml at the same time.
When thinking about it I noticed there could be cases where I don't want users to configure things from a specific source. For instance a --clean or --clear for creating a clean build in a build tool should only be possible via cli args in my opinion. Taking in this arg from other sources could lead to potentially destructive behaviour.
I think using an annotation would be the best way to implement this. I imagined it as something like this:
from pydantic_settings import BaseSettings, SettingsFieldOpts
from typing import Annotated
class BuildCmdSettings(BaseSettings):
clean: Annotated[bool, SettingsFieldOpts(disable_sources=["PyprojectTomlConfigSettingsSource"])] = False
SettingsFieldOpts would be a new type which could hold more options for a field if needed in the future.
In one of my newer projects I plan to use
pydantic-settingspaired withpydanclickfor a declarative way to load settings from cli args and other sources such aspyproject.tomlat the same time.When thinking about it I noticed there could be cases where I don't want users to configure things from a specific source. For instance a
--cleanor--clearfor creating a clean build in a build tool should only be possible via cli args in my opinion. Taking in this arg from other sources could lead to potentially destructive behaviour.I think using an annotation would be the best way to implement this. I imagined it as something like this:
SettingsFieldOpts would be a new type which could hold more options for a field if needed in the future.