This file is indexed.

/usr/share/pyshared/bike/query/getReferencesToModule.py is in bicyclerepair 0.9-6.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
from __future__ import generators
from bike.query.common import Match, globalScanForMatches, getScopeForLine, MatchFinder
from getTypeOf import getTypeOf, getTypeOfExpr
import compiler
import re

def getReferencesToModule(root, fqn):
    
    modulename = fqn.split(".")[-1]
    moduleobj = getTypeOf(root, fqn)
    moduleRefFinder = ModuleRefFinder(moduleobj)
    
    for ref in globalScanForMatches(moduleRefFinder, modulename):
        yield ref

        
class ModuleRefFinder(MatchFinder):
    def __init__(self, targetmodule):
        self.targetmodule = targetmodule

    def visitName(self, node):
        if node.name == self.targetmodule.name:
            if getTypeOfExpr(self.scope, node) == self.targetmodule:
                self.appendMatch(node.name)
        self.popWordsUpTo(node.name)

    def visitImport(self, node):
        for name, alias in node.names:
            if name.split(".")[-1] == self.targetmodule.name:
                if getTypeOf(self.scope, name) == self.targetmodule:
                    self.appendMatch(self.targetmodule.name)
            for nameelem in name.split("."):
                self.popWordsUpTo(nameelem)
            if alias is not None:
                self.popWordsUpTo(alias)

    def visitGetattr(self, node):
        for c in node.getChildNodes():
            self.visit(c)
        if node.attrname == self.targetmodule.name:
            if getTypeOfExpr(self.scope, node) == self.targetmodule:
                self.appendMatch(self.targetmodule.name)
        self.popWordsUpTo(node.attrname)

    def visitFrom(self, node):
        for elem in node.modname.split("."):
            if elem == self.targetmodule.name:
                getTypeOf(self.scope, elem) == self.targetmodule
                self.appendMatch(self.targetmodule.name)
            self.popWordsUpTo(elem)
            
        for name, alias in node.names:
            if name == self.targetmodule.name:
                if alias and \
                   getTypeOf(self.scope, alias) == self.targetmodule:
                    self.appendMatch(self.targetmodule.name)
                elif getTypeOf(self.scope, name) == self.targetmodule:
                    self.appendMatch(self.targetmodule.name)
            if name != "*":
                self.popWordsUpTo(name)
            if alias is not None:
                self.popWordsUpTo(alias)