code: def sort(self, column, order=Qt.AscendingOrder):
          
          reverse = (order==Qt.DescendingOrder)
          if column == 0:
              self.sizes = sort_against(self.sizes, self.keys, reverse)
              self.types = sort_against(self.types, self.keys, reverse)
              try:
                  self.keys.sort(reverse=reverse)
              except:
                  pass
          elif column == 1:
              self.keys[:self.rows_loaded] = sort_against(self.keys, self.types,
                                                          reverse)
              self.sizes = sort_against(self.sizes, self.types, reverse)
              try:
                  self.types.sort(reverse=reverse)
              except:
                  pass
          elif column == 2:
              self.keys[:self.rows_loaded] = sort_against(self.keys, self.sizes,
                                                          reverse)
              self.types = sort_against(self.types, self.sizes, reverse)
              try:
                  self.sizes.sort(reverse=reverse)
              except:
                  pass
          elif column == 3:
              values = [self._data[key] for key in self.keys]
              self.keys = sort_against(self.keys, values, reverse)
              self.sizes = sort_against(self.sizes, values, reverse)
              self.types = sort_against(self.types, values, reverse)
          self.beginResetModel()
          self.endResetModel()
docs: Overriding sort method