code: def clean(self, value):
  		
  
  		# If the value is None and it's optional, return as is
  		if value is None and self._optional:
  			return None
  
  		# If the value is not a dict
  		if not isinstance(value, dict):
  			raise ValueError('value')
  
  		# Recurse and return it
  		return {str(self._key.clean(k)):self._node.clean(v) for k,v in iteritems(value)}
docs: Clean
  
  		Makes sure both the key and value are properly stored in their correct
  		representation
  
  		Arguments:
  			value {mixed} -- The value to clean
  
  		Raises:
  			ValueError
  
  		Returns:
  			mixed