Closed
Description
class SubModel(BaseModel):
v1: str = "default"
v2: bytes = b"hello"
v3: int
class Settings(BaseSettings):
model_config = SettingsConfigDict(
cli_prog_name="prog1",
cli_parse_args=True,
env_prefix="MYTEST_")
v0: str = "ok"
sub_model: SubModel = SubModel(v1="top default", v3=3)
sys.argv = [
'example.py',
"-h"
]
Settings()
It show help:
...
--sub_model.v1 str (default: default)
--sub_model.v2 bytes (default: b'hello')
--sub_model.v3 int (required)
This is apparently wrong, because the default values:
sys.argv = [
'example.py',
]
print(Settings())
#> v0='ok' sub_model=SubModel(v1='top default', v2=b'hello', v3=3)
The help message should use the actual top level default values instead of the sub model's own default values.
We expect:
...
--sub_model.v1 str (default: top default)
--sub_model.v2 bytes (default: b'hello')
--sub_model.v3 int (default: 3)