      def __len__(self):
          return len(self.object_list)
  
      def __getitem__(self, index):
          if not isinstance(index, (slice,) + six.integer_types):
              raise TypeError
          # The object_list is converted to a list so that if it was a QuerySet
          # it won't be a database hit per __getitem__.
          if not isinstance(self.object_list, list):
              self.object_list = list(self.object_list)
 
</s> remove         if not isinstance(index, six.integer_types + (slice,)):
 </s> add         if not isinstance(index, (int, slice)): </s> remove         if isinstance(index, six.integer_types):
 </s> add         if isinstance(index, int): </s> remove         if not isinstance(index, six.integer_types):
 </s> add         if not isinstance(index, int): </s> remove             # 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)
 </s> add  </s> remove                 s = six.text_type(s, encoding, errors)
 </s> add                 s = str(s, encoding, errors)
        if not isinstance(index, (int, slice)):
      def __len__(self):
          return len(self.object_list)
  
      def __getitem__(self, index):
        if not isinstance(index, (int, slice)):
              raise TypeError
          # The object_list is converted to a list so that if it was a QuerySet
          # it won't be a database hit per __getitem__.
          if not isinstance(self.object_list, list):
              self.object_list = list(self.object_list)
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/core/paginator.py