code: def humanize_error(data, validation_error, max_sub_error_length=MAX_VALIDATION_ERROR_ITEM_LENGTH):
      
      if isinstance(validation_error, MultipleInvalid):
          return '\n'.join(sorted(
              humanize_error(data, sub_error, max_sub_error_length)
              for sub_error in validation_error.errors
          ))
      else:
          offending_item_summary = repr(_nested_getitem(data, validation_error.path))
          if len(offending_item_summary) > max_sub_error_length:
              offending_item_summary = offending_item_summary[:max_sub_error_length - 3] + '...'
          return '%s. Got %s' % (validation_error, offending_item_summary)
docs: Provide a more helpful + complete validation error message than that provided automatically
      Invalid and MultipleInvalid do not include the offending value in error messages,
      and MultipleInvalid.__str__ only provides the first error.