This file is indexed.

/usr/lib/python3/dist-packages/pylint_flask/__init__.py is in python3-pylint-flask 0.5-2.

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
'''pylint_flask module'''

from astroid import MANAGER
from astroid import nodes
import re


def register(_):
    '''register is expected by pylint for plugins, but we are creating a
    transform, not registering a checker.
    '''
    pass


def copy_node_info(src, dest):
    """Copy information from src to dest

    Every node in the AST has to have line number information.  Get
    the information from the old stmt."""
    for attr in ['lineno', 'fromlineno', 'tolineno',
                 'col_offset', 'parent']:
        if hasattr(src, attr):
            setattr(dest, attr, getattr(src, attr))


def mark_transformed(node):
    '''Mark a node as transformed so we don't process it multiple times.'''
    node.pylint_flask_was_transformed = True


def is_transformed(node):
    '''Return True if `node` was already transformed.'''
    return getattr(node, 'pylint_flask_was_transformed', False)


def make_non_magical_flask_import(flask_ext_name):
    '''Convert a flask.ext.admin into flask_admin.'''
    match = re.match(r'flask\.ext\.(.*)', flask_ext_name)
    if match is None:
        raise LookupError("Module name `{}` doesn't match"
                          "`flask.ext` style import.")
    from_name = match.group(1)
    actual_module_name = 'flask_{}'.format(from_name)
    return actual_module_name


def transform_flask_from_import(node):
    '''Translates a flask.ext from-style import into a non-magical import.

    Translates:
        from flask.ext import wtf, bcrypt as fcrypt
    Into:
        import flask_wtf as wtf, flask_bcrypt as fcrypt

    '''
    new_names = []
    # node.names is a list of 2-tuples. Each tuple consists of (name, as_name).
    # So, the import would be represented as:
    #
    #    from flask.ext import wtf as ftw, admin
    #
    # node.names = [('wtf', 'ftw'), ('admin', None)]
    for (name, as_name) in node.names:
        actual_module_name = 'flask_{}'.format(name)
        new_names.append((actual_module_name, as_name or name))

    new_node = nodes.Import()
    copy_node_info(node, new_node)
    new_node.names = new_names
    mark_transformed(new_node)
    return new_node


def is_flask_from_import(node):
    '''Predicate for checking if we have the flask module.'''
    # Check for transformation first so we don't double process
    return not is_transformed(node) and node.modname == 'flask.ext'

MANAGER.register_transform(nodes.From,
                           transform_flask_from_import,
                           is_flask_from_import)


def transform_flask_from_long(node):
    '''Translates a flask.ext.wtf from-style import into a non-magical import.

    Translates:
        from flask.ext.wtf import Form
        from flask.ext.admin.model import InlineFormAdmin
    Into:
        from flask_wtf import Form
        from flask_admin.model import InlineFormAdmin

    '''
    actual_module_name = make_non_magical_flask_import(node.modname)
    new_node = nodes.From(actual_module_name, node.names, node.level)
    copy_node_info(node, new_node)
    mark_transformed(new_node)
    return new_node


def is_flask_from_import_long(node):
    '''Check if an import is like `from flask.ext.wtf import Form`.'''
    # Check for transformation first so we don't double process
    return not is_transformed(node) and node.modname.startswith('flask.ext.')

MANAGER.register_transform(nodes.From,
                           transform_flask_from_long,
                           is_flask_from_import_long)


def transform_flask_bare_import(node):
    '''Translates a flask.ext.wtf bare import into a non-magical import.

    Translates:
        import flask.ext.admin as admin
    Into:
        import flask_admin as admin
    '''

    new_names = []
    for (name, as_name) in node.names:
        match = re.match(r'flask\.ext\.(.*)', name)
        from_name = match.group(1)
        actual_module_name = 'flask_{}'.format(from_name)
        new_names.append((actual_module_name, as_name))

    new_node = nodes.Import()
    copy_node_info(node, new_node)
    new_node.names = new_names
    mark_transformed(new_node)
    return new_node


def is_flask_bare_import(node):
    '''Check if an import is like `import flask.ext.admin as admin`.'''
    return (not is_transformed(node) and
            any(['flask.ext' in pair[0] for pair in node.names]))

MANAGER.register_transform(nodes.Import,
                           transform_flask_bare_import,
                           is_flask_bare_import)