@@ -1238,20 +1238,13 @@ def get_type_hints(obj, globalns=None, localns=None, include_extras=False):
12381238 hint = typing .get_type_hints (obj , globalns = globalns , localns = localns )
12391239 if sys .version_info < (3 , 11 ):
12401240 _clean_optional (obj , hint , globalns , localns )
1241- # types from get_type_hints might not be from a cached version
1242- # In 3.8 eval_type does not handle all Optional[ForwardRef] correctly
1243- # this also returns cached versions of Union and Optional
12441241 if sys .version_info < (3 , 9 ):
1242+ # In 3.8 eval_type does not handle all Optional[ForwardRef] correctly
1243+ # this also returns cached versions of Union
12451244 hint = {
1246- k : (
1247- t
1248- if get_origin (t ) not in (Union , Optional )
1249- else (
1250- Optional [t .__args__ [0 ]]
1251- if get_origin (t ) == Optional
1252- else Union [t .__args__ ]
1253- )
1254- )
1245+ k : (t
1246+ if get_origin (t ) != Union
1247+ else Union [t .__args__ ])
12551248 for k , t in hint .items ()
12561249 }
12571250 if include_extras :
@@ -1316,8 +1309,7 @@ def _clean_optional(obj, hints, globalns=None, localns=None):
13161309 original_evaluated = typing ._eval_type (original_value , globalns , localns )
13171310 if sys .version_info < (3 , 9 ) and get_origin (original_evaluated ) is Union :
13181311 # Union[str, None, "str"] is not reduced to Union[str, None]
1319- container = Optional if original_evaluated ._name == "Optional" else Union
1320- original_evaluated = container [original_evaluated .__args__ ]
1312+ original_evaluated = Union [original_evaluated .__args__ ]
13211313 # Compare if values differ
13221314 if original_evaluated != value :
13231315 hints [name ] = original_evaluated
0 commit comments