diff -r 2979f5ce6a0c lib/Django-1.5/django/template/base.py --- a/lib/Django-1.5/django/template/base.py Fri Jul 17 14:29:12 2015 -0700 +++ b/lib/Django-1.5/django/template/base.py Tue Aug 25 14:17:04 2015 +0300 @@ -1,8 +1,9 @@ from __future__ import absolute_import, unicode_literals import re +import sys from functools import partial -from inspect import getargspec +import inspect from django.conf import settings from django.template.context import (Context, RequestContext, @@ -71,6 +72,31 @@ # uninitialised. invalid_var_format_string = None +def getargspec(func): + if sys.version_info[0] < 3 or (sys.version_info[0] == 3 and sys.version_info[1] < 6): + return inspect.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 + class TemplateSyntaxError(Exception): pass