docs: def _select_position(self, w, h): 
          """
          Select the position where the y coordinate of the top of the rectangle
          is lower, if there are severtal pick the one with the smallest x 
          coordinate
          """
          fitn = ((m.y+h, m.x, w, h, m) for m in self._max_rects 
                  if self._rect_fitness(m, w, h) is not None)
          fitr = ((m.y+w, m.x, h, w, m) for m in self._max_rects 
                  if self._rect_fitness(m, h, w) is not None)
  
          if not self.rot:
              fitr = []
  
          fit = itertools.chain(fitn, fitr)
          
          try:
              _, _, w, h, m = min(fit, key=first_item)
          except ValueError:
              return None, None
  
          return Rectangle(m.x, m.y, w, h), m