From 76e12a59ff21d4c104d25ecfde05a5659a5993ba Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 1 Aug 2020 17:59:02 +0900 Subject: [PATCH] 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. --- sphinx/util/inspect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py index 4bb320939..a5c64f882 100644 --- a/sphinx/util/inspect.py +++ b/sphinx/util/inspect.py @@ -499,7 +499,7 @@ def evaluate_signature(sig: inspect.Signature, globalns: Dict = None, localns: D """Evaluate unresolved type annotations in a signature object.""" def evaluate_forwardref(ref: ForwardRef, globalns: Dict, localns: Dict) -> Any: """Evaluate a forward reference.""" - if sys.version_info > (3, 10): + if sys.version_info > (3, 9): return ref._evaluate(globalns, localns, frozenset()) else: return ref._evaluate(globalns, localns)