From 40b13a869b0c6bfbacf4498fc834dc9052d8b363 Mon Sep 17 00:00:00 2001 From: Diego Gaustein Date: Wed, 13 Feb 2013 20:34:23 -0300 Subject: [PATCH] Make is_simple_callable consider fields which have default arguments --- rest_framework/fields.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 327008fb1..abc5fd44c 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -24,10 +24,14 @@ def is_simple_callable(obj): """ True if the object is a callable that takes no arguments. """ - return ( - (inspect.isfunction(obj) and not inspect.getargspec(obj)[0]) or - (inspect.ismethod(obj) and len(inspect.getargspec(obj)[0]) <= 1) - ) + try: + args, _, _, defaults = inspect.getargspec(obj) + except TypeError: + return False + else: + len_args = len(args) if inspect.isfunction(obj) else len(args) - 1 + len_defaults = len(defaults) if defaults else 0 + return len_args <= len_defaults def get_component(obj, attr_name):