class_docstr: Class for tracking options.
  
  Functions like a dict, but allows us to track the history of arguments as they are
  set.
class_docstr_tok: ["Class","for","tracking","options",".","Functions","like","a","dict",",","but","allows","us","to","track","the","history","of","arguments","as","they","are","set","."]
code: def log(self, header="Opt"):
      from parlai.core.params import print_git_commit
  
      logging.info(header + ":")
      for key in sorted(self.keys()):
          valstr = str(self[key])
          if valstr.replace(" ", "").replace("\n", "") != valstr:
              # show newlines as escaped keys, whitespace with quotes, etc
              valstr = repr(valstr)
          logging.info(f"    {key}: {valstr}")
      print_git_commit()
  
imports: from __future__ import annotations
  import copy
  import json
  import pickle
  import traceback
  import os
  import pkg_resources
  import parlai.utils.logging
  from typing import List
  from parlai.utils.io import PathManager
label_desc: Use image node_id 12 for calling the Opt obj's underlying member method code with example usage: obj.log(header) without return types