code: def _extract_lines(filename, f_globals, line_no, around):
      
      current_line = linecache.getline(filename, line_no, f_globals)
      if not current_line:
          # No data on this line
          return ""
  
      lines = []
      # Add some lines before
      for pre_line_no in range(line_no - around, line_no):
          pre_line = linecache.getline(filename, pre_line_no, f_globals)
          lines.append("{0}".format(pre_line.rstrip()))
  
      # The line itself
      lines.append("{0}".format(current_line.rstrip()))
  
      # Add some lines after
      for pre_line_no in range(line_no + 1, line_no + around + 1):
          pre_line = linecache.getline(filename, pre_line_no, f_globals)
          lines.append("{0}".format(pre_line.rstrip()))
  
      # Smart left strip
      minimal_tab = None
      for line in lines:
          if line.strip():
              tab = len(line) - len(line.lstrip())
              if minimal_tab is None or tab < minimal_tab:
                  minimal_tab = tab
  
      if minimal_tab > 0:
          lines = [line[minimal_tab:] for line in lines]
  
      # Add some place for a marker
      marked_line = ">> {0}".format(lines[around])
      lines = ["   {0}".format(line) for line in lines]
      lines[around] = marked_line
      lines.append("")
      return lines
docs: Extracts a block of lines from the given file
  
      :param filename: Name of the source file
      :param f_globals: Globals of the frame of the current code
      :param line_no: Current line of code
      :param around: Number of line to print before and after the current one