code: def extract_docstring(self):
          
          lines = open(self.filename).readlines()
          start_row = 0
          if lines[0].startswith('#!'):
              lines.pop(0)
              start_row = 1
  
          docstring = ''
          first_par = ''
          line_iter = lines.__iter__()
          tokens = tokenize.generate_tokens(lambda: next(line_iter))
          for tok_type, tok_content, _, (erow, _), _ in tokens:
              tok_type = token.tok_name[tok_type]
              if tok_type in ('NEWLINE', 'COMMENT', 'NL', 'INDENT', 'DEDENT'):
                  continue
              elif tok_type == 'STRING':
                  docstring = eval(tok_content)
                  # If the docstring is formatted with several paragraphs,
                  # extract the first one:
                  paragraphs = '\n'.join(line.rstrip()
                                         for line in docstring.split('\n')
                                         ).split('\n\n')
                  if len(paragraphs) > 0:
                      first_par = paragraphs[0]
              break
  
          thumbloc = None
          for i, line in enumerate(docstring.split("\n")):
              m = re.match(r"^_thumb: (\.\d+),\s*(\.\d+)", line)
              if m:
                  thumbloc = float(m.group(1)), float(m.group(2))
                  break
          if thumbloc is not None:
              self.thumbloc = thumbloc
              docstring = "\n".join([l for l in docstring.split("\n")
                                     if not l.startswith("_thumb")])
  
          self.docstring = docstring
          self.short_desc = first_par
          self.end_line = erow + 1 + start_row
docs: Extract a module-level docstring