3939from dotenv import dotenv_values
4040from pydantic import AliasChoices , AliasPath , BaseModel , Json , RootModel , Secret , TypeAdapter
4141from 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
4343from pydantic ._internal ._utils import deep_update , is_model_class , lenient_issubclass
4444from pydantic .dataclasses import is_pydantic_dataclass
4545from 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