code: def parse_params(self,
                     eps=2.0,
                     nb_iter=None,
                     xi=1e-6,
                     clip_min=None,
                     clip_max=None,
                     num_iterations=None,
                     **kwargs):
      
      # Save attack-specific parameters
      self.eps = eps
      if num_iterations is not None:
        warnings.warn("`num_iterations` is deprecated. Switch to `nb_iter`."
                      " The old name will be removed on or after 2019-04-26.")
        # Note: when we remove the deprecated alias, we can put the default
        # value of 1 for nb_iter back in the method signature
        assert nb_iter is None
        nb_iter = num_iterations
      del num_iterations
      if nb_iter is None:
        nb_iter = 1
      self.num_iterations = nb_iter
      self.xi = xi
      self.clip_min = clip_min
      self.clip_max = clip_max
      if len(kwargs.keys()) > 0:
        warnings.warn("kwargs is unused and will be removed on or after "
                      "2019-04-26.")
      return True
docs: Take in a dictionary of parameters and applies attack-specific checks
      before saving them as attributes.
  
      Attack-specific parameters:
  
      :param eps: (optional float )the epsilon (input variation parameter)
      :param nb_iter: (optional) the number of iterations
        Defaults to 1 if not specified
      :param xi: (optional float) the finite difference parameter
      :param clip_min: (optional float) Minimum input component value
      :param clip_max: (optional float) Maximum input component value
      :param num_iterations: Deprecated alias for `nb_iter`