code: def get_signature_candidate(lines):
      
      # non empty lines indexes
      non_empty = [i for i, line in enumerate(lines) if line.strip()]
  
      # if message is empty or just one line then there is no signature
      if len(non_empty) <= 1:
          return []
  
      # we don't expect signature to start at the 1st line
      candidate = non_empty[1:]
      # signature shouldn't be longer then SIGNATURE_MAX_LINES
      candidate = candidate[-SIGNATURE_MAX_LINES:]
  
      markers = _mark_candidate_indexes(lines, candidate)
      candidate = _process_marked_candidate_indexes(candidate, markers)
  
      # get actual lines for the candidate instead of indexes
      if candidate:
          candidate = lines[candidate[0]:]
          return candidate
  
      return []
docs: Return lines that could hold signature
  
      The lines should:
  
      * be among last SIGNATURE_MAX_LINES non-empty lines.
      * not include first line
      * be shorter than TOO_LONG_SIGNATURE_LINE
      * not include more than one line that starts with dashes