code: def filter_lines(code, line_spec):
      
      code_lines = code.splitlines()
  
      line_specs = [line_denom.strip() for line_denom in line_spec.split(',')]
  
      single_lines = set(map(int, filter(lambda line: '-' not in line, line_specs)))
      line_ranges = set(filter(lambda line: '-' in line, line_specs))
  
      for line_range in line_ranges:
          begin, end = line_range.split('-')
          if not begin:
              begin = 1
          if not end:
              end = len(code_lines)
          single_lines.update(range(int(begin), int(end) + 1))
  
      keep_lines = []
      for line_number, line in enumerate(code_lines, 1):
          if line_number in single_lines:
              keep_lines.append(line)
  
      return '\n'.join(keep_lines)
docs: Removes all lines not matching the line_spec.
  
      Args:
          code The code to filter
          line_spec The line specification. This should be a comma-separated
                    string of lines or line ranges, e.g. 1,2,5-12,15
                    If a line range starts with -, all lines up to this line are
                    included.
                    If a line range ends with -, all lines from this line on are
                    included.
                    All lines mentioned (ranges are inclusive) are used.
      Returns:
          Only the specified lines.