docs: def add_rect(self, width, height, rid=None):     
          """
          Add rectangle of widthxheight dimensions.
  
          Arguments:
              width (int, float): Rectangle width
              height (int, float): Rectangle height
              rid: Optional rectangle user id
  
          Returns:
              Rectangle: Rectangle with placemente coordinates
              None: If the rectangle couldn be placed.
          """
          assert(width > 0 and height >0)
  
          # Obtain the best section to place the rectangle.
          section, rotated = self._select_fittest_section(width, height)
          if not section:
              return None
          
          if rotated:
              width, height = height, width
          
          # Remove section, split and store results
          self._sections.remove(section)
          self._split(section, width, height)
         
          # Store rectangle in the selected position
          rect = Rectangle(section.x, section.y, width, height, rid)
          self.rectangles.append(rect)
          return rect