This file is indexed.

/usr/share/pyshared/PyTango/group_reply_list.py is in python-pytango 7.2.2-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
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
################################################################################
##
## This file is part of PyTango, a python binding for Tango
## 
## http://www.tango-controls.org/static/PyTango/latest/doc/html/index.html
##
## Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain
## 
## PyTango is free software: you can redistribute it and/or modify
## it under the terms of the GNU Lesser General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
## 
## PyTango is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU Lesser General Public License for more details.
## 
## You should have received a copy of the GNU Lesser General Public License
## along with PyTango.  If not, see <http://www.gnu.org/licenses/>.
##
################################################################################

"""
This is an internal PyTango module.
"""

__all__ = []

__docformat__ = "restructuredtext"

from _PyTango import GroupReplyList
from _PyTango import GroupCmdReplyList
from _PyTango import GroupAttrReplyList

def __GroupReplyList__getitem(self, item):
    # Accessing an item in GroupReplyList and friends makes a C++ copy
    # of the item calling the copy constructor. But the copy constructor
    # of GroupReply is not fair: It extracts the data from the original
    # object!! So, we will only call the original getitem once, the
    # successive calls will just return the cached object.
    # GroupReplyList could be changed to use proxies to the internal
    # c++ object with the apropriate parameter to the
    # boost::vector_indexing_suite, but when the value is extracted
    # it is not anymore in any C++ object but in the python object, so
    # we must still keep it.
    
    # Slices support
    if isinstance(item, slice):
        return [self.__getitem__(x) for x in xrange(*item.indices(len(self)))]
    
    # We want to get the same cache value for x[-1] as for x[len(x)-1]
    if item < 0:
        item = item + len(self)
    
    # Try to get from cache
    try:
        return self.__listCache[item]
    except AttributeError:
        # The GroupReplyList object is created without the
        # cache attribute, so it is created here
        self.__listCache = dict()
    except KeyError:
        # The decision wheter we are out of bounds or it's just a cache
        # miss will be taken by original_getitem
        pass

    r = self.__GroupReplyList_original_getitem(item)
    self.__listCache[item] = r
    return r

def __GroupReplyList__iter(self):
    # Same problem as getitem. In this case it is easier for me to just
    # reimplement __iter__ in terms of __getitem__
    for x in xrange(len(self)):
        yield self[x]

def __init_GroupReplyList():
    GroupReplyList.__GroupReplyList_original_getitem = GroupReplyList.__getitem__
    GroupReplyList.__getitem__ = __GroupReplyList__getitem

    GroupCmdReplyList.__GroupReplyList_original_getitem = GroupCmdReplyList.__getitem__
    GroupCmdReplyList.__getitem__ = __GroupReplyList__getitem

    GroupAttrReplyList.__GroupReplyList_original_getitem = GroupAttrReplyList.__getitem__
    GroupAttrReplyList.__getitem__ = __GroupReplyList__getitem

    GroupReplyList.__iter__ = __GroupReplyList__iter
    GroupCmdReplyList.__iter__ = __GroupReplyList__iter
    GroupAttrReplyList.__iter__ = __GroupReplyList__iter

def __doc_GroupReplyList():
    pass

def init(doc=True):
    __init_GroupReplyList()
    if doc:
        __doc_GroupReplyList()