class_docstr: A class to manage the history along iterations of a solver
  
  Attributes
  ----------
  print_order : `list` or `str`
      The list of values to print along iterations
  
  values : `dict`
      A `dict` containing the history. Key is the value name and
      values are the values taken along the iterations
  
  last_values : `dict`
      A `dict` containing all the last history values
  
  _minimum_col_width : `int`
      Minimal size of a column when printing the history
  
  _minimizer : `None` or `numpy.ndarray`
      The minimizer of the objective. `None` if not specified.
      This is useful to compute a distance to the optimum.
  
  _minimum : `None` or `float`
      The minimal (optimal) value of the objective. `None` if not
      specified. This is useful to compute a distance to the optimum.
  
  _print_style : `list` or `str`
      The display style of all printed numbers
  
  _history_func : `dict`
      A dict given for all values the function to be applied before
      saving and displaying in history. This is useful for computing
      the sparsity, the rank, among other things, of the iterates
      along iterations of the solver
  
  _n_iter : `int`
      The current iteration number
  
  _col_widths : `list` or `int`
      A list containing the computed width of each column used for
      printing the history, based on the name length of the column
docstr: Update the history along the iterations.
  
  For each keyword argument, we apply the history function corresponding
  to this keyword, and use its results in the history
docstr_tok: ["Update","the","history","along","the","iterations",".","For","each","keyword","argument",",","we","apply","the","history","function","corresponding","to","this","keyword",",","and","use","its","results","in","the","history"]
code: def _update(self, **kwargs):
      """Update the history along the iterations.
  
      For each keyword argument, we apply the history function corresponding
      to this keyword, and use its results in the history
      """
      self._n_iter = kwargs["n_iter"]
      history_func = self._history_func
      # We loop on both, history functions and kerword arguments
      keys = set(kwargs.keys()).union(set(history_func.keys()))
      for key in keys:
          # Either it has a corresponding history function which we
          # apply on all keywords
          if key in history_func:
              func = history_func[key]
              self.values[key].append(func(**kwargs))
          # Either we only record the value
          else:
              value = kwargs[key]
              self.values[key].append(value)
  
imports: from collections import defaultdict
  import dill
  import numpy
  from tick.base import Base
  from numpy.linalg import norm
label_desc: Use image node_id 3 for calling the History obj's underlying member method code with example usage: obj._update() without return types