code: def update(self, data, overwrite=None, overwrite_sections=True, overwrite_options=True):
          
          if overwrite is not None:
              overwrite_sections = overwrite
              overwrite_options = overwrite
  
          for section, _data in six.iteritems(data):
              if not self.has_section(section):
                  self.add_section(section)
              elif not overwrite_sections:
                  continue
  
              for option, value in six.iteritems(_data):
                  if overwrite_options or not self.has_option(section, option):
                      self.set(section, option, str(value))
docs: Updates the currently stored configuration with new *data*, given as a dictionary. When
          *overwrite_sections* is *False*, sections in *data* that are already present in the current
          config are skipped. When *overwrite_options* is *False*, existing options are not
          overwritten. When *overwrite* is not *None*, both *overwrite_sections* and
          *overwrite_options* are set to its value.