

def extract_docstring(self):
    ' Extract a module-level docstring\n        '
    lines = open(self.filename).readlines()
    start_row = 0
    if lines[0].startswith('#!'):
        lines.pop(0)
        start_row = 1
    docstring = ''
    first_par = ''
    tokens = tokenize.generate_tokens(lines.__iter__().next)
    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)
            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('^_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)

dataset/ETHPy150Open scikit-beam/scikit-beam/doc/sphinxext/plot_generator.py ExampleGenerator.extract_docstring/original