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
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