-
-
Notifications
You must be signed in to change notification settings - Fork 108
Closed
Labels
Description
Thank you for this wonderful addition to pydantic.
However, the following snippet
from pydantic_settings import BaseSettings, CliApp
class Cat(BaseSettings):
meow: str = "meow"
class Dog(BaseSettings):
bark: str = "bark"
class Car(BaseSettings):
driver: Cat | Dog = Cat()
CliApp.run(Car)raises
Traceback (most recent call last):
File "/Users/fuchur/Documents/24/git_sync/config-comparison/union_type_issues.py", line 14, in <module>
CliApp.run(Car)
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/main.py", line 516, in run
return CliApp._run_cli_cmd(model_cls(**model_init_data), cli_cmd_method_name, is_required=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/main.py", line 168, in __init__
**__pydantic_self__._settings_build_values(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/main.py", line 362, in _settings_build_values
cli_settings = CliSettingsSource[Any](
^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/miniconda3/envs/confexp/lib/python3.11/typing.py", line 1289, in __call__
result = self.__origin__(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/sources.py", line 1163, in __init__
self._connect_root_parser(
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/sources.py", line 1572, in _connect_root_parser
self._add_parser_args(
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/sources.py", line 1685, in _add_parser_args
self._add_parser_submodels(
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/sources.py", line 1787, in _add_parser_submodels
self._add_parser_args(
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/sources.py", line 1653, in _add_parser_args
kwargs['help'] = self._help_format(field_name, field_info, model_default)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic_settings/sources.py", line 1898, in _help_format
default = f'(default: {getattr(model_default, field_name)})'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/miniconda3/envs/confexp/lib/python3.11/site-packages/pydantic/main.py", line 856, in __getattr__
raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}')
AttributeError: 'Cat' object has no attribute 'bark'