code: def parse(self, source, update=True, **params):
          
          scanner = INIScanner(source)
          scanner.scan()
  
          section = self.default_section
          name = None
  
          for token in scanner.tokens:
              if token[0] == 'KEY_VALUE':
                  name, value = re.split('[=:]', token[1], 1)
                  name, value = name.strip(), value.strip()
                  if not update and name in self[section]:
                      continue
                  self[section][name] = value
  
              elif token[0] == 'SECTION':
                  section = token[1].strip('[]')
  
              elif token[0] == 'CONTINUATION':
                  if not name:
                      raise SyntaxError(
                          "SyntaxError[@char {0}: {1}]".format(
                              token[2], "Bad continuation."))
                  self[section][name] += '\n' + token[1].strip()
docs: Parse INI source as string.
  
          :param source: Source of INI
          :param update: Replace already defined items