docs: def mutate_stream (instream, outstream):
      """Python 3 compat note: we're assuming `stream` gives bytes not unicode."""
  
      chunk = None
      key = None
      data = None
      misclines = []
  
      for fullline in instream:
          line = fullline.split ('#', 1)[0]
  
          m = sectionre.match (line)
          if m is not None:
              # New chunk
              if chunk is not None:
                  if key is not None:
                      chunk.data.set_one (key, data.strip ().decode ('utf8'))
                      key = data = None
                  yield chunk
                  chunk.emit (outstream)
  
              chunk = FileChunk ()
              for miscline in misclines:
                  chunk._addLine (miscline, None)
              misclines = []
              chunk.data.section = m.group (1)
              chunk._addLine (fullline, None)
              continue
  
          if len (line.strip ()) == 0:
              if key is not None:
                  chunk.data.set_one (key, data.strip ().decode ('utf8'))
                  key = data = None
              if chunk is not None:
                  chunk._addLine (fullline, None)
              else:
                  misclines.append (fullline)
              continue
  
          m = escre.match (fullline)
          if m is not None:
              if chunk is None:
                  raise InifileError ('key seen without section!')
              if key is not None:
                  chunk.data.set_one (key, data.strip ().decode ('utf8'))
              key = m.group (1)
              data = m.group (2).replace (r'\"', '"').replace (r'\n', '\n').replace (r'\\', '\\')
              chunk.data.set_one (key, data.decode ('utf8'))
              chunk._addLine (fullline, key)
              key = data = None
              continue
  
          m = keyre.match (line)
          if m is not None:
              if chunk is None:
                  raise InifileError ('key seen without section!')
              if key is not None:
                  chunk.data.set_one (key, data.strip ().decode ('utf8'))
              key = m.group (1)
              data = m.group (2)
              if not data[-1].isspace ():
                  data += ' '
              chunk._addLine (fullline, key)
              continue
  
          if line[0].isspace () and key is not None:
              data += line.strip () + ' '
              chunk._addLine (fullline, key)
              continue
  
          raise InifileError ('unparsable line: ' + line[:-1])
  
      if chunk is not None:
          if key is not None:
              chunk.data.set_one (key, data.strip ().decode ('utf8'))
          yield chunk
          chunk.emit (outstream)