Closed
Description
Currently, there doesn't appear to be a way to have an optional positional argument when parsing settings from the CLI. This is a blocker for me, trying to migrate over from typer
.
Running the following will result in this error: pydantic_settings.sources.SettingsError: positional argument BaseMainCommand.value has a default value
from pydantic_settings import BaseSettings, CliPositionalArg, SettingsConfigDict
class Main(BaseSettings):
model_config = SettingsConfigDict(
cli_parse_args=True,
cli_enforce_required=True,
)
value: CliPositionalArg[int | None] = None
parsed = Main() # Error is raised here.
print(parsed.value)