This file is indexed.

/usr/share/pyshared/pyke/user_question.py is in python-pyke 1.1.1-3.

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
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# $Id: user_question.py 081917d30609 2010-03-05 mtnyogi $
# coding=utf-8
# 
# Copyright © 2008 Bruce Frederiksen
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

r'''
    This uses a parser object which is expected to have the following methods:

        - get_token(check_token=None)
        - parse_match()
        - parse_alternatives()
        - parse_review()
'''

from string import Template

class user_question(object):
    match = None
    review = None

    def __init__(self, format):
        self.format = Template(format)

    def __repr__(self):
        head = "<%s" % self.__class__.__name__
        if self.match: head += self.repr_match()
        head += ": %s" % repr(self.format.template)
        if self.review:
            head += " %s" % ' ! '.join(repr(m) for m, text in self.review)
        return head + ">"

    def repr_match(self):
        return "(%s)" % repr(self.match)

    def parse(self, parser):
        self.parse_args(parser)
        self.review = parser.parse_review()

    def parse_args(self, parser): pass

    def set_question_base(self, question_base):
        self.question_base = question_base

    def get_ask_module(self):
        return self.question_base.get_ask_module()

    def ask(self, format_params):
        ask_fn = getattr(self.get_ask_module(),
                         'ask_' + self.__class__.__name__)
        if self.review:
            review = tuple((match, template.substitute(format_params))
                           for match, template in self.review)
        else:
            review = None
        arg2 = self.prepare_arg2(format_params)
        if arg2:
            return ask_fn(self.format.substitute(format_params), arg2,
                          review=review)
        return ask_fn(self.format.substitute(format_params),
                      review=review)

    def prepare_arg2(self, format_params):
        return self.match

class yn(user_question):
    pass

class match_args(user_question):
    def parse_args(self, parser):
        token, value = parser.get_token()
        if token == 'lparen':
            self.match = parser.parse_match()
            parser.get_token('rparen')
        else:
            parser.push_token()

class integer(match_args): pass

class float(match_args): pass

class number(match_args): pass

class string(match_args): pass

class select_1(user_question):
    def repr_match(self):
        return "(%s)" % ' '.join(repr(t) + ':' for t, text in self.match)

    def parse(self, parser):
        self.match, self.review = parser.parse_alternatives()

    def prepare_arg2(self, format_params):
        return tuple((tag, label.substitute(format_params))
                     for tag, label in self.match)

class select_n(select_1): pass