def METHOD_NAME(self, rank):
    """
    Find and return the DrainInfo object for rank ``rank``
    """
    if rank not in self.all:
        raise ValueError("invalid rank {rank}")
    return next((i for i in self.drain_info if rank in i.ranks), None)