          """
          Deserialize primitives -> objects.
          """
          if hasattr(data, '__iter__') and not isinstance(data, (dict, six.text_type)):
              # TODO: error data when deserializing lists
              return [self.from_native(item, None) for item in data]
  
          self._errors = {}
          if data is not None or files is not None:
              attrs = self.restore_fields(data, files)
              attrs = self.perform_validation(attrs)
 
</s> remove             # TODO: error data when deserializing lists
            if many:
                ret = [self.from_native(item, None) for item in data]
 </s> add  </s> remove         self.assertEqual(serializer.errors, {'non_field_errors': ['Invalid data']})
 </s> add         self.assertTrue(isinstance(serializer.errors, list))

        self.assertEqual(
            serializer.errors,
            [
                (0, {'non_field_errors': ['Invalid data']}),
                (1, {'non_field_errors': ['Invalid data']}),
                (2, {'non_field_errors': ['Invalid data']})
            ]
        )
            object_list = list()
            error_list = list()
            for count, item in enumerate(data):
                obj = self.from_native(item, None)
                if self._errors:
                    error_list.append((count, self._errors))
                object_list.append(obj)
            if not error_list:
                return object_list

            self._errors = error_list
            return None
          """
          Deserialize primitives -> objects.
          """
          if hasattr(data, '__iter__') and not isinstance(data, (dict, six.text_type)):
            object_list = list()
            error_list = list()
            for count, item in enumerate(data):
                obj = self.from_native(item, None)
                if self._errors:
                    error_list.append((count, self._errors))
                object_list.append(obj)
            if not error_list:
                return object_list

            self._errors = error_list
            return None
            object_list = list()
            error_list = list()
            for count, item in enumerate(data):
                obj = self.from_native(item, None)
                if self._errors:
                    error_list.append((count, self._errors))
                object_list.append(obj)
            if not error_list:
                return object_list

            self._errors = error_list
            return None
  
          self._errors = {}
          if data is not None or files is not None:
              attrs = self.restore_fields(data, files)
              attrs = self.perform_validation(attrs)
keep keep keep keep replace replace keep keep keep keep keep
 Errors during deserializing lists now return a list of tuples with
index of bad item in data plus usual errors dict 
rest_framework/serializers.py