#NEWLINE# def parse_source( self ) : #NEWLINE# #INDENT# 'Parse source text to find executable lines, excluded lines, etc.\n\n        Return values are 1) a set of executable line numbers, and 2) a set of\n        excluded line numbers.\n\n        Reported line numbers are normalized to the first line of multi-line\n        statements.\n\n        ' #NEWLINE# try : #NEWLINE# #INDENT# self . _raw_parse ( ) #NEWLINE# #UNINDENT# except ( tokenize . TokenError , IndentationError ) : #NEWLINE# #INDENT# ( _ , tokerr , _ ) = sys . exc_info ( ) #NEWLINE# ( msg , lineno ) = tokerr . args #NEWLINE# raise NotPython ( ( "Couldn't parse '%s' as Python source: '%s' at %s" % ( self . filename , msg , lineno ) ) ) #NEWLINE# #UNINDENT# excluded_lines = self . first_lines ( self . excluded ) #NEWLINE# lines = self . first_lines ( self . statement_starts , excluded_lines , self . docstrings ) #NEWLINE# return ( lines , excluded_lines )