This file is indexed.

/usr/lib/python2.7/dist-packages/simpleparse/error.py is in python-simpleparse 2.2.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""Definition of the ParserSyntaxError raised on parse failure"""
from simpleparse.stt.TextTools.TextTools import countlines

class ParserSyntaxError( SyntaxError ):
    """Sub-class of SyntaxError for use by SimpleParse parsers

    Every instance will have the following attributes:
        buffer -- pointer to the source buffer
        position -- integer position in buffer where error occured or -1
        production -- the production which failed
        expected -- string (currently taken from grammar) describing
            what production/element token failed to match
    the following will be calculated in order to display
    human-friendly error messages:
        line -- ~ text line-number or -1
        lineChar -- ~ character on line where parsing failed or -1
    
    """
    buffer = ""
    position = -1
    line = -1
    production = ""
    expected = ""
    error_message = None
    DEFAULTTEMPLATE = """Failed parsing production "%(production)s" @pos %(position)s (~line %(line)s:%(lineChar)s).\nExpected syntax: %(expected)s\nGot text: %(text)s"""
    def __str__( self ):
        """Create a string representation of the error"""
        if self.error_message:
            return '%s: %s'%( self.__class__.__name__, self.messageFormat(self.error_message) )
        else:
            return '%s: %s'%( self.__class__.__name__, self.messageFormat() )
    def messageFormat( self, template=None):
        """Create a default message for this syntax error"""
        if template is None:
            template = self.DEFAULTTEMPLATE
        line, lineChar = self.getLineCoordinate()
        variables = {
            "production": self.production,
            "position": self.position,
            "line": line,
            "lineChar": lineChar,
            "expected": self.expected or "UNKNOWN",
            "text": repr(self.buffer[ self.position:self.position+50 ]),
        }
        return template % variables
    def getLineCoordinate( self ):
        """Get (line number, line character) for the error"""
        lineChar = self.buffer.rfind('\n', 0, self.position)
        if lineChar == -1: # was no \n before the current position
            lineChar = self.position
            line = 1
        else:
            line = countlines( self.buffer[:lineChar] )
            lineChar = self.position-lineChar
        return line, lineChar