Replaced django.utils.inspect.getargspec() with inspect.getfullargspec().

This commit is contained in:
Alexander Allakhverdiyev 2017-04-27 17:42:49 -07:00 committed by Tim Graham
parent 60dce33ab1
commit 620e9dd31a
3 changed files with 6 additions and 30 deletions

View File

@ -49,16 +49,15 @@ times with multiple contexts)
'<html></html>'
"""
import inspect
import logging
import re
from inspect import getcallargs, getfullargspec
from django.template.context import ( # NOQA: imported for backwards compatibility
BaseContext, Context, ContextPopException, RequestContext,
)
from django.utils.formats import localize
from django.utils.html import conditional_escape, escape
from django.utils.inspect import getargspec
from django.utils.safestring import SafeData, mark_safe
from django.utils.text import (
get_text_list, smart_split, unescape_string_literal,
@ -715,7 +714,7 @@ class FilterExpression:
# Check to see if a decorator is providing the real function.
func = getattr(func, '_decorated_function', func)
args, _, _, defaults = getargspec(func)
args, _, _, defaults, _, _, _ = getfullargspec(func)
alen = len(args)
dlen = len(defaults or [])
# Not enough OR Too many
@ -865,7 +864,7 @@ class Variable:
current = current()
except TypeError:
try:
inspect.getcallargs(current)
getcallargs(current)
except TypeError: # arguments *were* required
current = context.template.engine.string_if_invalid # invalid method call
else:

View File

@ -1,8 +1,8 @@
import functools
from importlib import import_module
from inspect import getfullargspec
from django.utils.html import conditional_escape
from django.utils.inspect import getargspec
from django.utils.itercompat import is_iterable
from .base import Node, Template, token_kwargs
@ -106,7 +106,7 @@ class Library:
return 'world'
"""
def dec(func):
params, varargs, varkw, defaults = getargspec(func)
params, varargs, varkw, defaults, _, _, _ = getfullargspec(func)
function_name = (name or getattr(func, '_decorated_function', func).__name__)
@functools.wraps(func)
@ -143,7 +143,7 @@ class Library:
return {'choices': choices}
"""
def dec(func):
params, varargs, varkw, defaults = getargspec(func)
params, varargs, varkw, defaults, _, _, _ = getfullargspec(func)
function_name = (name or getattr(func, '_decorated_function', func).__name__)
@functools.wraps(func)

View File

@ -1,29 +1,6 @@
import inspect
def getargspec(func):
sig = inspect.signature(func)
args = [
p.name for p in sig.parameters.values()
if p.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD
]
varargs = [
p.name for p in sig.parameters.values()
if p.kind == inspect.Parameter.VAR_POSITIONAL
]
varargs = varargs[0] if varargs else None
varkw = [
p.name for p in sig.parameters.values()
if p.kind == inspect.Parameter.VAR_KEYWORD
]
varkw = varkw[0] if varkw else None
defaults = [
p.default for p in sig.parameters.values()
if p.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD and p.default is not p.empty
] or None
return args, varargs, varkw, defaults
def get_func_args(func):
sig = inspect.signature(func)
return [