diff options
Diffstat (limited to 'django/utils')
| -rw-r--r-- | django/utils/inspect.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/django/utils/inspect.py b/django/utils/inspect.py index 31f3cf994b..ac5e82ca14 100644 --- a/django/utils/inspect.py +++ b/django/utils/inspect.py @@ -1,10 +1,24 @@ import functools import inspect +from django.utils.version import PY314 + +if PY314: + import annotationlib + @functools.lru_cache(maxsize=512) def _get_func_parameters(func, remove_first): - parameters = tuple(inspect.signature(func).parameters.values()) + # As the annotations are not used in any case, inspect the signature with + # FORWARDREF to leave any deferred annotations unevaluated. + if PY314: + signature = inspect.signature( + func, annotation_format=annotationlib.Format.FORWARDREF + ) + else: + signature = inspect.signature(func) + + parameters = tuple(signature.parameters.values()) if remove_first: parameters = parameters[1:] return parameters |
