Skip to content

Commit

Permalink
Merge pull request #9513 from tk0miya/9512_types.UnionTypes
Browse files Browse the repository at this point in the history
Fix #9512: sphinx-build: crashed with the HEAD of Python 3.10
  • Loading branch information
tk0miya committed Jul 29, 2021
2 parents f590268 + 8b2031c commit 36e06d6
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
2 changes: 2 additions & 0 deletions CHANGES
Expand Up @@ -46,6 +46,8 @@ Features added
Bugs fixed
----------

* #9512: sphinx-build: crashed with the HEAD of Python 3.10

Testing
--------

Expand Down
12 changes: 6 additions & 6 deletions sphinx/util/typing.py
Expand Up @@ -33,10 +33,10 @@ def _evaluate(self, globalns: Dict, localns: Dict) -> Any:
ref = _ForwardRef(self.arg)
return ref._eval_type(globalns, localns)

if sys.version_info > (3, 10):
from types import Union as types_Union
else:
types_Union = None
try:
from types import UnionType # type: ignore # python 3.10 or above
except ImportError:
UnionType = None

if False:
# For type annotation
Expand Down Expand Up @@ -114,7 +114,7 @@ def restify(cls: Optional[Type]) -> str:
return ':class:`%s`' % INVALID_BUILTIN_CLASSES[cls]
elif inspect.isNewType(cls):
return ':class:`%s`' % cls.__name__
elif types_Union and isinstance(cls, types_Union):
elif UnionType and isinstance(cls, UnionType):
if len(cls.__args__) > 1 and None in cls.__args__:
args = ' | '.join(restify(a) for a in cls.__args__ if a)
return 'Optional[%s]' % args
Expand Down Expand Up @@ -340,7 +340,7 @@ def _stringify_py37(annotation: Any) -> str:
elif hasattr(annotation, '__origin__'):
# instantiated generic provided by a user
qualname = stringify(annotation.__origin__)
elif types_Union and isinstance(annotation, types_Union): # types.Union (for py3.10+)
elif UnionType and isinstance(annotation, UnionType): # types.Union (for py3.10+)
qualname = 'types.Union'
else:
# we weren't able to extract the base type, appending arguments would
Expand Down

0 comments on commit 36e06d6

Please sign in to comment.