From 361f7aff55da264df5bb5bb44d0d75ef04b0e4b3 Mon Sep 17 00:00:00 2001 From: Mark Harviston Date: Sun, 28 May 2017 00:44:05 -0700 Subject: [PATCH] if a default_setter has a field argument pass the field name to that argument --- cerberus/validator.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cerberus/validator.py b/cerberus/validator.py index 336c0e64..8e812541 100644 --- a/cerberus/validator.py +++ b/cerberus/validator.py @@ -785,12 +785,17 @@ def _normalize_default_setter(self, mapping, schema, field): {'type': 'callable'}, {'type': 'string'} ]} """ + import inspect if 'default_setter' in schema[field]: setter = schema[field]['default_setter'] if isinstance(setter, _str_type): setter = self.__get_rule_handler('normalize_default_setter', setter) - mapping[field] = setter(mapping) + argspec = inspect.getfullargspec(setter) + if 'field' in argspec.args or 'field' in argspec.kwonlyargs: + mapping[field] = setter(mapping, field=field) + else: + mapping[field] = setter(mapping) # # Validating