code: def fit(self, y, exogenous=None):
          
          # Since we don't fit any params here, we can just check the params
          _, _ = self._check_y_exog(y, exogenous, null_allowed=True)
  
          m = self.m
          k = self.k
          if k is None:
              k = m // 2
          if 2 * k > m or k < 1:
              raise ValueError("k must be a positive integer not greater "
                               "than m//2")
  
          # Compute the periods of all Fourier terms. Since R allows multiple
          # seasonality and we do not, we can do this much more simply.
          p = ((np.arange(k) + 1) / m).astype(np.float64)  # 1:K / m
  
          # If sinpi is 0... maybe blow up?
          # if abs(2 * p - round(2 * p)) < np.finfo(y.dtype).eps:  # min eps
  
          self.p_ = p
          self.k_ = k
          self.n_ = y.shape[0]
  
          return self
docs: Fit the transformer
  
          Computes the periods of all the Fourier terms. The values of ``y`` are
          not actually used; only the periodicity is used when computing Fourier
          terms.
  
          Parameters
          ----------
          y : array-like or None, shape=(n_samples,)
              The endogenous (time-series) array.
  
          exogenous : array-like or None, shape=(n_samples, n_features), optional
              The exogenous array of additional covariates. If specified, the
              Fourier terms will be column-bound on the right side of the matrix.
              Otherwise, the Fourier terms will be returned as the new exogenous
              array.