code: def coalesce_headers(cls, header_lines):
          
  
          header_lines = [list(hl) for hl in header_lines if bool(hl)]
  
          if len(header_lines) == 0:
              return []
  
          if len(header_lines) == 1:
              return header_lines[0]
  
          # If there are gaps in the values of a line, copy them forward, so there
          # is some value in every position
          for hl in header_lines:
              last = None
              for i in range(len(hl)):
                  hli = text_type(hl[i])
                  if not hli.strip():
                      hl[i] = last
                  else:
                      last = hli
  
          headers = [' '.join(text_type(col_val).strip() if col_val else '' for col_val in col_set)
                     for col_set in zip(*header_lines)]
  
          headers = [slugify(h.strip()) for h in headers]
  
          return headers
docs: Collects headers that are spread across multiple lines into a single row