                  "%s(%r) is invalid. First parameter to ManyToManyField must be "
                  "either a model, a model name, or the string %r" %
                  (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
              )
              # Class names must be ASCII in Python 2.x, so we forcibly coerce it
              # here to break early if there's a problem.
              to = str(to)
  
          if symmetrical is None:
              symmetrical = (to == RECURSIVE_RELATIONSHIP_CONSTANT)
  
          if through is not None:
 
</s> remove             assert isinstance(to, six.string_types), (
 </s> add             assert isinstance(to, str), ( </s> remove             assert isinstance(to, six.string_types), (
 </s> add             assert isinstance(to, str), ( </s> remove         if isinstance(file, six.string_types) or file is None:
 </s> add         if isinstance(file, str) or file is None: </s> remove         if self.flags and not isinstance(self.regex, six.string_types):
 </s> add         if self.flags and not isinstance(self.regex, str): </s> remove         if not isinstance(index, (slice,) + six.integer_types):
 </s> add         if not isinstance(index, (int, slice)):
                  "%s(%r) is invalid. First parameter to ManyToManyField must be "
                  "either a model, a model name, or the string %r" %
                  (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
              )



  
          if symmetrical is None:
              symmetrical = (to == RECURSIVE_RELATIONSHIP_CONSTANT)
  
          if through is not None:
keep keep keep keep replace replace replace keep keep keep keep keep
 Refs #23919 -- Removed six.<various>_types usage

Thanks Tim Graham and Simon Charette for the reviews. 
django/db/models/fields/related.py