@@ -33,10 +33,10 @@ def _evaluate(self, globalns: Dict, localns: Dict) -> Any:
3333 ref = _ForwardRef (self .arg )
3434 return ref ._eval_type (globalns , localns )
3535
36- if sys . version_info > ( 3 , 10 ) :
37- from types import Union as types_Union
38- else :
39- types_Union = None
36+ try :
37+ from types import UnionType # type: ignore # python 3.10 or above
38+ except ImportError :
39+ UnionType = None
4040
4141if False :
4242 # For type annotation
@@ -114,7 +114,7 @@ def restify(cls: Optional[Type]) -> str:
114114 return ':class:`%s`' % INVALID_BUILTIN_CLASSES [cls ]
115115 elif inspect .isNewType (cls ):
116116 return ':class:`%s`' % cls .__name__
117- elif types_Union and isinstance (cls , types_Union ):
117+ elif UnionType and isinstance (cls , UnionType ):
118118 if len (cls .__args__ ) > 1 and None in cls .__args__ :
119119 args = ' | ' .join (restify (a ) for a in cls .__args__ if a )
120120 return 'Optional[%s]' % args
@@ -340,7 +340,7 @@ def _stringify_py37(annotation: Any) -> str:
340340 elif hasattr (annotation , '__origin__' ):
341341 # instantiated generic provided by a user
342342 qualname = stringify (annotation .__origin__ )
343- elif types_Union and isinstance (annotation , types_Union ): # types.Union (for py3.10+)
343+ elif UnionType and isinstance (annotation , UnionType ): # types.Union (for py3.10+)
344344 qualname = 'types.Union'
345345 else :
346346 # we weren't able to extract the base type, appending arguments would
0 commit comments