Fix #8023: evaluate_signature() does not work properly in python3.9

Since 3.9b5, ForwardRef._evalute() also takes an additional argument
`recursive_guard`.  As a result, sphinx.util.inspect:evaluate_signature()
does not work properly.  This adds a simple wrapper evalute_forwardref()
to allow evaluating ForwardRefs in py3.9.
This commit is contained in:
Takeshi KOMIYA 2020-08-01 17:59:02 +09:00
parent 6084c44b50
commit 76e12a59ff

View File

@ -499,7 +499,7 @@ def evaluate_signature(sig: inspect.Signature, globalns: Dict = None, localns: D
"""Evaluate unresolved type annotations in a signature object.""" """Evaluate unresolved type annotations in a signature object."""
def evaluate_forwardref(ref: ForwardRef, globalns: Dict, localns: Dict) -> Any: def evaluate_forwardref(ref: ForwardRef, globalns: Dict, localns: Dict) -> Any:
"""Evaluate a forward reference.""" """Evaluate a forward reference."""
if sys.version_info > (3, 10): if sys.version_info > (3, 9):
return ref._evaluate(globalns, localns, frozenset()) return ref._evaluate(globalns, localns, frozenset())
else: else:
return ref._evaluate(globalns, localns) return ref._evaluate(globalns, localns)