This file is indexed.

/usr/lib/python3/dist-packages/plainbox/impl/box.py is in python3-plainbox 0.25-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
 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
# This file is part of Checkbox.
#
# Copyright 2012-2014 Canonical Ltd.
# Written by:
#   Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
#
# Checkbox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3,
# as published by the Free Software Foundation.
#
# Checkbox 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Checkbox.  If not, see <http://www.gnu.org/licenses/>.
"""
:mod:`plainbox.impl.box` -- command line interface
==================================================

.. warning::

    THIS MODULE DOES NOT HAVE STABLE PUBLIC API
"""
import collections
import logging
import os

from plainbox import __version__ as plainbox_version
from plainbox.i18n import gettext as _
from plainbox.impl.applogic import PlainBoxConfig
from plainbox.impl.clitools import LazyLoadingToolMixIn
from plainbox.impl.commands import PlainBoxToolBase
from plainbox.impl.logging import setup_logging
from plainbox.impl.secure.plugins import LazyPlugInCollection


logger = logging.getLogger("plainbox.box")


class PlainBoxTool(LazyLoadingToolMixIn, PlainBoxToolBase):
    """
    Command line interface to PlainBox
    """

    def get_command_collection(self):
        p = "plainbox.impl.commands."
        return LazyPlugInCollection(collections.OrderedDict([
            ('run', (p + "cmd_run:RunCommand", self._load_providers,
                     self._load_config)),
            ('session', (p + "cmd_session:SessionCommand",
                         self._load_providers)),
            ('device', (p + "cmd_device:DeviceCommand",)),
            ('self-test', (p + "cmd_selftest:PlainboxSelfTestCommand",)),
            ('check-config', (p + "cmd_check_config:CheckConfigCommand",
                              self._load_config,)),
            ('dev', (p + "dev:DevCommand", self._load_providers,
                     self._load_config)),
            ('startprovider', (p + "cmd_startprovider:StartProviderCommand",)),
        ]))

    @classmethod
    def get_exec_name(cls):
        """
        Get the name of this executable
        """
        return "plainbox"

    @classmethod
    def get_exec_version(cls):
        """
        Get the version reported by this executable
        """
        return cls.format_version_tuple(plainbox_version)

    def create_parser_object(self):
        parser = super().create_parser_object()
        parser.prog = self.get_exec_name()
        # TRANSLATORS: '--help' and '--version' are not translatable,
        # but '[options]' and '<command>' are.
        parser.usage = _("{0} [--help] [--version] | [options] <command>"
                         " ...").format(self.get_exec_name())
        return parser

    @classmethod
    def get_config_cls(cls):
        """
        Get the Config class that is used by this implementation.

        This can be overridden by subclasses to use a different config
        class that is suitable for the particular application.
        """
        return PlainBoxConfig

    def get_gettext_domain(self):
        return "plainbox"

    def get_locale_dir(self):
        return os.getenv("PLAINBOX_LOCALE_DIR", None)


class StubBoxTool(PlainBoxTool):
    """
    Command line interface to StubBox

    The 'stubbox' executable is just just like plainbox but it contains the
    special stubbox provider with representative test jobs.
    """

    @classmethod
    def get_exec_name(cls):
        return "stubbox"

    def _load_providers(self):
        logger.info("Loading stubbox provider...")
        from plainbox.impl.providers.special import get_stubbox
        from plainbox.impl.providers.special import get_exporters
        return [get_stubbox(), get_exporters()]


def main(argv=None):
    raise SystemExit(PlainBoxTool().main(argv))


def stubbox_main(argv=None):
    raise SystemExit(StubBoxTool().main(argv))


def get_parser_for_sphinx():
    return PlainBoxTool().construct_parser()


# Setup logging before anything else starts working.
# If we do it in main() or some other place then unit tests will see
# "leaked" log files which are really closed when the runtime shuts
# down but not when the tests are finishing
setup_logging()