@classmethod
def sort(cls, items, metric, verbose=False, **kwargs):
    """
        Sort `items` with respect to `metric` such that the result has minimal loss according to
        `Solver.loss`.
        
        Parameters
        ----------
        items : sequence of 2-sequences
            The sequence to be sorted. Each item must be represented by two values
            (``item[0], item[1]``) which in turn must be compatible with the given metric.
            E.g.: ``[(0.1, 0.3), (0.2, 0.6), (0.4, 0.5), ...]``.
        metric : dominosort.metrics.Metric
            The metric to be used for computing differences between items' heads and tails.
            ``difference = metric(x[1], y[0])`` for two items `x`, `y`.
        verbose : bool, default=True
        **kwargs
            Additional arguments for the `scipy.optimize.linprog` solver. Those arguments are
            passed as the ``options`` keyword argument.
            
        Returns
        -------
        sorted : list
            The sorted items.
            
        Raises
        ------
        UserWarning
            Issues a warning via `warnings.warn` if no optimal sort order could be determined.
            This can be the case if for example the number of iterations for the underlying
            solver is too small. The warning contains as a message the most recent message
            from the solver. In this case the given `items` are returned.
        """
    raise NotImplementedError
