code: def regularizer_diagonal(self, X, *regularizer):
          r
          regularizer = repeat(None) if regularizer is () else regularizer
          regs, _ = zip(*(b.regularizer_diagonal(X, r)
                          for b, r in zip(self.bases, regularizer)))
  
          if self.__slices is None:
              baseinds = self.__base_locations(X)
              self.__slices = [slice(b, e)
                               for b, e in zip(baseinds[:-1], baseinds[1:])]
  
          return np.concatenate(regs), self.__slices
docs: r"""
          Get the diagonal of the prior variance on the weights (regularizer).
  
          This also returns a slice into the regression weights to which all of
          the concatenated bases' regularizers applies.
  
          Parameters
          ----------
          X : ndarray
              (N, d) array of observations where N is the number of samples, and
              d is the dimensionality of X.
          *regularizer :
              use these values instead of the values passed into the ``Basis``
              constructors for each regularizer. These are applied to each basis
              in the concatentation in the order they were concatenated.
  
          Returns
          -------
          ndarray :
              an array of shape (D,) that is the diagonal of the prior variance
              of the weights, :math:`\boldsymbol\Lambda` in :math:`\mathbf{w}
              \sim \mathcal{N}(\mathbf{0}, \boldsymbol\Lambda)`.
          list of slices:
              the slices into the regression weights that each regularizer
              applies to.