Skip to content

Commit 5cdeee5

Browse files
committed
Metavar fix.
1 parent f76c7fe commit 5cdeee5

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

pydantic_settings/sources.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
from dotenv import dotenv_values
4040
from pydantic import AliasChoices, AliasPath, BaseModel, Json, RootModel, Secret, TypeAdapter
4141
from pydantic._internal._repr import Representation
42-
from pydantic._internal._typing_extra import WithArgsTypes, origin_is_union, typing_base
42+
from pydantic._internal._typing_extra import WithArgsTypes, is_type_alias_type, origin_is_union, typing_base
4343
from pydantic._internal._utils import deep_update, is_model_class, lenient_issubclass
4444
from pydantic.dataclasses import is_pydantic_dataclass
4545
from pydantic.fields import FieldInfo
@@ -1986,7 +1986,7 @@ def _metavar_format_recurse(self, obj: Any) -> str:
19861986
return '...'
19871987
elif isinstance(obj, Representation):
19881988
return repr(obj)
1989-
elif isinstance(obj, typing_extensions.TypeAliasType):
1989+
elif isinstance(obj, typing.ForwardRef) or is_type_alias_type(obj):
19901990
return str(obj)
19911991

19921992
if not isinstance(obj, (typing_base, WithArgsTypes, type)):
@@ -1999,9 +1999,12 @@ def _metavar_format_recurse(self, obj: Any) -> str:
19991999
elif lenient_issubclass(obj, Enum):
20002000
return self._metavar_format_choices([val.name for val in obj])
20012001
elif isinstance(obj, WithArgsTypes):
2002+
if hasattr(obj, '__qualname__'):
2003+
obj_qualname = obj.__qualname__
2004+
else:
2005+
obj_qualname = str(obj).replace('typing.', '').replace('typing_extensions.', '').split('[')[0]
20022006
return self._metavar_format_choices(
2003-
list(map(self._metavar_format_recurse, self._get_modified_args(obj))),
2004-
obj_qualname=obj.__qualname__ if hasattr(obj, '__qualname__') else str(obj),
2007+
list(map(self._metavar_format_recurse, self._get_modified_args(obj))), obj_qualname=obj_qualname
20052008
)
20062009
elif obj is type(None):
20072010
return self.cli_parse_none_str

0 commit comments

Comments
 (0)