code: def fit(self, X, y=None, **fit_params):
          
          # quic-specific outputs
          self.opt_ = None
          self.cputime_ = None
          self.iters_ = None
          self.duality_gap_ = None
  
          # these must be updated upon self.fit()
          self.sample_covariance_ = None
          self.lam_scale_ = None
          self.is_fitted_ = False
  
          self.path_ = _validate_path(self.path)
          X = check_array(X, ensure_min_features=2, estimator=self)
          X = as_float_array(X, copy=False, force_all_finite=False)
          self.init_coefs(X)
          if self.method == "quic":
              (
                  self.precision_,
                  self.covariance_,
                  self.opt_,
                  self.cputime_,
                  self.iters_,
                  self.duality_gap_,
              ) = quic(
                  self.sample_covariance_,
                  self.lam * self.lam_scale_,
                  mode=self.mode,
                  tol=self.tol,
                  max_iter=self.max_iter,
                  Theta0=self.Theta0,
                  Sigma0=self.Sigma0,
                  path=self.path_,
                  msg=self.verbose,
              )
          else:
              raise NotImplementedError("Only method='quic' has been implemented.")
  
          self.is_fitted_ = True
          return self
docs: Fits the inverse covariance model according to the given training
          data and parameters.
  
          Parameters
          -----------
          X : 2D ndarray, shape (n_features, n_features)
              Input data.
  
          Returns
          -------
          self