def parse_source(self):
try:<EOL><INDENT>self._raw_parse()<EOL><DEDENT>except (tokenize.TokenError, IndentationError):<EOL><INDENT>_, tokerr, _ = sys.exc_info()<EOL>msg, lineno = tokerr.args<EOL>raise NotPython(<EOL>"<STR_LIT>" %<EOL>(self.filename, msg, lineno)<EOL>)<EOL><DEDENT>excluded_lines = self.first_lines(self.excluded)<EOL>lines = self.first_lines(<EOL>self.statement_starts,<EOL>excluded_lines,<EOL>self.docstrings<EOL>)<EOL>return lines, excluded_lines<EOL>
Parse source text to find executable lines, excluded lines, etc.

        Return values are 1) a set of executable line numbers, and 2) a set of
        excluded line numbers.

        Reported line numbers are normalized to the first line of multi-line
        statements.