          from django.db.models.options import Options
  
          # This partial takes a single optional argument named "sender".
          partial_method = partial(method, receiver, **kwargs)
          if isinstance(sender, six.string_types):
              apps = apps or Options.default_apps
              apps.lazy_model_operation(partial_method, make_model_tuple(sender))
          else:
              return partial_method(sender)
  
 
</s> remove             if isinstance(reply_to, six.string_types):
 </s> add             if isinstance(reply_to, str): </s> remove             if isinstance(bcc, six.string_types):
 </s> add             if isinstance(bcc, str): </s> remove             if isinstance(cc, six.string_types):
 </s> add             if isinstance(cc, str): </s> remove from django.utils import six
 </s> add  </s> remove         elif isinstance(unique, six.string_types):
 </s> add         elif isinstance(unique, str):
        if isinstance(sender, str):
          from django.db.models.options import Options
  
          # This partial takes a single optional argument named "sender".
          partial_method = partial(method, receiver, **kwargs)
        if isinstance(sender, str):
              apps = apps or Options.default_apps
              apps.lazy_model_operation(partial_method, make_model_tuple(sender))
          else:
              return partial_method(sender)
  
keep keep keep keep 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/signals.py