From 343b055ba79e9929ab58607fe141612c1041eea6 Mon Sep 17 00:00:00 2001 From: Elephant Liu Date: Tue, 19 Apr 2016 15:43:00 +0800 Subject: [PATCH] fix_inspect_deprecated_warning: inspect.getargspec is deprecated since Python 3.0. --- rest_framework/fields.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 2a08e09ff..f8a8e01b9 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -56,10 +56,18 @@ def is_simple_callable(obj): if not (function or method): return False - args, _, _, defaults = inspect.getargspec(obj) - len_args = len(args) if function else len(args) - 1 - len_defaults = len(defaults) if defaults else 0 - return len_args <= len_defaults + if six.PY2: + args, _, _, defaults = inspect.getargspec(obj) + len_args = len(args) if function else len(args) - 1 + len_defaults = len(defaults) if defaults else 0 + return len_args <= len_defaults + else: + sig = inspect.signature(obj) + for name, param in sig.parameters.items(): + if param.default is not inspect.Parameter.empty: + return False + + return True def get_attribute(instance, attrs):