class_docstr: A markdown cell, that's been preprocessed (e.g. parsed into a Markdown AST).
docstr: Retrieve the lines corresponding to the 'sourcepos' range.
  
  Args:
      sourcepos: pair of pairs [[start line, start column], [end line, end column]], with one
          based lines and columns (the same as a commonmark's Node.sourcepos property)
docstr_tok: ["Retrieve","the","lines","corresponding","to","the","'sourcepos","'","range",".","Args",":","sourcepos",":","pair","of","pairs","[","[","start","line",",","start","column","]",",","[","end","line",",","end","column","]","]",",","with","one","based","lines","and","columns","(","the","same","as","a","commonmark","'s","Node.sourcepos","property",")"]
code: def lines(self, sourcepos):
      """
      Retrieve the lines corresponding to the 'sourcepos' range.
  
      Args:
          sourcepos: pair of pairs [[start line, start column], [end line, end column]], with one
              based lines and columns (the same as a commonmark's Node.sourcepos property)
      """
      one_based_start = sourcepos[0][0]
      # the commonmark sourcepos's are one based, so slicing needs an offset
      start = one_based_start - 1
      end = sourcepos[1][0] - 1
  
      # we want to include the end line
      lines = self._lines[start : end + 1]
      return number_lines(lines, one_based_start)
  
imports: import argparse
  import commonmark
  import nbformat
  import os
  import re
  import subprocess
  import sys
  import textwrap
  from pathlib import Path
label_desc: Use image node_id 2 for calling the MarkdownCell obj's underlying member method code with example usage: obj.lines(sourcepos) and returns: number_lines