code: def delimiter_groups(line, begin_delim=begin_delim,
                       end_delim=end_delim):
      
      text = []
      line = iter(line)
      while True:
          # First build and yield an unsplittable group
          for item in line:
              text.append(item)
              if item in begin_delim:
                  break
          if not text:
              break
          yield text
  
          # Now build and yield a splittable group
          level = 0
          text = []
          for item in line:
              if item in begin_delim:
                  level += 1
              elif item in end_delim:
                  level -= 1
                  if level < 0:
                      yield text
                      text = [item]
                      break
              text.append(item)
          else:
              assert not text, text
              break
docs: Split a line into alternating groups.
         The first group cannot have a line feed inserted,
         the next one can, etc.