docs: def _new_open_bin(self, remaining_rect):
          """
          Extract the next bin where at least one of the rectangles in
          rem
  
          Arguments:
              remaining_rect (dict): rectangles not placed yet
  
          Returns:
              PackingAlgorithm: Initialized empty packing bin.
              None: No bin big enough for the rectangle was found
          """
          factories_to_delete = set() #
          new_bin = None
  
          for key, binfac in self._empty_bins.items():
  
              # Only return the new bin if at least one of the remaining 
              # rectangles fit inside.
              a_rectangle_fits = False
              for _, rect in remaining_rect.items():
                  if binfac.fits_inside(rect[0], rect[1]):
                      a_rectangle_fits = True
                      break
  
              if not a_rectangle_fits:
                  factories_to_delete.add(key)
                  continue
             
              # Create bin and add to open_bins
              new_bin = binfac.new_bin()
              if new_bin is None:
                  continue
              self._open_bins.append(new_bin)
  
              # If the factory was depleted mark for deletion
              if binfac.is_empty():
                  factories_to_delete.add(key)
         
              break
  
          # Delete marked factories
          for f in factories_to_delete:
              del self._empty_bins[f]
  
          return new_bin