code: def _compile_dimension_size(self, base_index, array,
                                  property, sized_elements):
          
          sort_index = base_index + 2
          sized_elements.sort(key=lambda x: x[sort_index])
          for element_data in sized_elements:
              start, end = element_data[base_index], element_data[sort_index]
              end += start
              element, size = element_data[4:6]
  
              # Find the total current size of the set
              set_size = sum(array[start:end]) + (end-start-1)*self.margin
  
              # Work out the extra space we need
              extra_space_needed = getattr(size, property) - set_size
              if extra_space_needed < 0: continue
  
              # Distribute it among the entries
              extra_space_each = extra_space_needed / (end-start)
              for index in range(start, end):
                  array[index] += extra_space_each
docs: Build one set of col widths or row heights.