SILENT KILLERPanel

Current Path: > > opt > cloudlinux > venv > lib > python3.11 > site-packages >


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/cloudlinux/venv/lib/python3.11/site-packages/

NameTypeSizeLast ModifiedActions
GitPython-3.1.32.dist-info Directory - -
Jinja2-3.0.3.dist-info Directory - -
Mako-1.2.4.dist-info Directory - -
MarkupSafe-2.1.3.dist-info Directory - -
PyJWT-2.8.0.dist-info Directory - -
PyMySQL-1.1.0.dist-info Directory - -
PyVirtualDisplay-3.0.dist-info Directory - -
PyYAML-6.0.1.dist-info Directory - -
__pycache__ Directory - -
_distutils_hack Directory - -
_pytest Directory - -
_yaml Directory - -
aiohttp Directory - -
aiohttp-3.9.2.dist-info Directory - -
aiohttp_jinja2 Directory - -
aiohttp_jinja2-1.5.dist-info Directory - -
aiohttp_security Directory - -
aiohttp_security-0.4.0.dist-info Directory - -
aiohttp_session Directory - -
aiohttp_session-2.9.0.dist-info Directory - -
aiosignal Directory - -
aiosignal-1.3.1.dist-info Directory - -
alembic Directory - -
alembic-1.11.1.dist-info Directory - -
annotated_types Directory - -
annotated_types-0.6.0.dist-info Directory - -
astroid Directory - -
astroid-2.15.6.dist-info Directory - -
attr Directory - -
attrs Directory - -
attrs-23.1.0.dist-info Directory - -
backports Directory - -
certifi Directory - -
certifi-2023.7.22.dist-info Directory - -
cffi Directory - -
cffi-1.15.1.dist-info Directory - -
chardet Directory - -
chardet-5.2.0.dist-info Directory - -
charset_normalizer Directory - -
charset_normalizer-2.1.1.dist-info Directory - -
cl_dom_collector Directory - -
clcagefslib Directory - -
clcommon Directory - -
clconfig Directory - -
clconfigure Directory - -
cldashboard Directory - -
clevents Directory - -
clflags Directory - -
cllicense Directory - -
cllimits Directory - -
cllimits_validator Directory - -
cllimitslib_v2 Directory - -
cllvectl Directory - -
clpackages Directory - -
clquota Directory - -
clselect Directory - -
clselector Directory - -
clsentry Directory - -
clsummary Directory - -
clveconfig Directory - -
clwizard Directory - -
configparser-5.0.2.dist-info Directory - -
contextlib2 Directory - -
contextlib2-21.6.0.dist-info Directory - -
coverage Directory - -
coverage-7.2.7.dist-info Directory - -
cryptography Directory - -
cryptography-41.0.2.dist-info Directory - -
ddt-1.4.4.dist-info Directory - -
dill Directory - -
dill-0.3.7.dist-info Directory - -
distlib Directory - -
distlib-0.3.8.dist-info Directory - -
docopt-0.6.2.dist-info Directory - -
dodgy Directory - -
dodgy-0.2.1.dist-info Directory - -
filelock Directory - -
filelock-3.13.1.dist-info Directory - -
flake8 Directory - -
flake8-5.0.4.dist-info Directory - -
flake8_polyfill Directory - -
flake8_polyfill-1.0.2.dist-info Directory - -
frozenlist Directory - -
frozenlist-1.4.0.dist-info Directory - -
future Directory - -
future-0.18.3.dist-info Directory - -
git Directory - -
gitdb Directory - -
gitdb-4.0.10.dist-info Directory - -
guppy Directory - -
guppy3-3.1.3.dist-info Directory - -
hc_json_rpc_client Directory - -
hc_json_rpc_client-1.0.1.dist-info Directory - -
idna Directory - -
idna-3.4.dist-info Directory - -
iniconfig Directory - -
iniconfig-2.0.0.dist-info Directory - -
isort Directory - -
isort-5.12.0.dist-info Directory - -
jinja2 Directory - -
jsonschema Directory - -
jsonschema-3.2.0.dist-info Directory - -
jwt Directory - -
lazy_object_proxy Directory - -
lazy_object_proxy-1.9.0.dist-info Directory - -
libfuturize Directory - -
libpasteurize Directory - -
lve_stats-2.0.dist-info Directory - -
lve_utils Directory - -
lvemanager Directory - -
lvestats Directory - -
lxml Directory - -
lxml-4.9.2.dist-info Directory - -
mako Directory - -
markupsafe Directory - -
mccabe-0.7.0.dist-info Directory - -
mock Directory - -
mock-5.1.0.dist-info Directory - -
multidict Directory - -
multidict-6.0.4.dist-info Directory - -
numpy Directory - -
numpy-1.25.1.dist-info Directory - -
numpy.libs Directory - -
packaging Directory - -
packaging-23.1.dist-info Directory - -
past Directory - -
pep8_naming-0.10.0.dist-info Directory - -
pip Directory - -
pip-25.0.1.dist-info Directory - -
pkg_resources Directory - -
platformdirs Directory - -
platformdirs-3.11.0.dist-info Directory - -
pluggy Directory - -
pluggy-1.2.0.dist-info Directory - -
prettytable Directory - -
prettytable-3.8.0.dist-info Directory - -
prometheus_client Directory - -
prometheus_client-0.8.0.dist-info Directory - -
prospector Directory - -
prospector-1.10.2.dist-info Directory - -
psutil Directory - -
psutil-5.9.5.dist-info Directory - -
psycopg2 Directory - -
psycopg2_binary-2.9.6.dist-info Directory - -
psycopg2_binary.libs Directory - -
pycodestyle-2.9.1.dist-info Directory - -
pycparser Directory - -
pycparser-2.21.dist-info Directory - -
pydantic Directory - -
pydantic-2.4.2.dist-info Directory - -
pydantic_core Directory - -
pydantic_core-2.10.1.dist-info Directory - -
pydocstyle Directory - -
pydocstyle-6.3.0.dist-info Directory - -
pyfakefs Directory - -
pyfakefs-5.2.3.dist-info Directory - -
pyflakes Directory - -
pyflakes-2.5.0.dist-info Directory - -
pylint Directory - -
pylint-2.17.4.dist-info Directory - -
pylint_celery Directory - -
pylint_celery-0.3.dist-info Directory - -
pylint_django Directory - -
pylint_django-2.5.3.dist-info Directory - -
pylint_flask Directory - -
pylint_flask-0.6.dist-info Directory - -
pylint_plugin_utils Directory - -
pylint_plugin_utils-0.7.dist-info Directory - -
pylve-2.1-py3.11.egg-info Directory - -
pymysql Directory - -
pyparsing Directory - -
pyparsing-3.0.9.dist-info Directory - -
pyrsistent Directory - -
pyrsistent-0.19.3.dist-info Directory - -
pytest Directory - -
pytest-7.4.0.dist-info Directory - -
pytest_check Directory - -
pytest_check-2.5.3.dist-info Directory - -
pytest_snapshot Directory - -
pytest_snapshot-0.9.0.dist-info Directory - -
pytest_subprocess Directory - -
pytest_subprocess-1.5.0.dist-info Directory - -
pytest_tap Directory - -
pytest_tap-3.5.dist-info Directory - -
python_pam-1.8.4.dist-info Directory - -
pyvirtualdisplay Directory - -
raven Directory - -
raven-6.10.0.dist-info Directory - -
requests Directory - -
requests-2.31.0.dist-info Directory - -
requirements_detector Directory - -
requirements_detector-1.2.2.dist-info Directory - -
schema-0.7.5.dist-info Directory - -
semver Directory - -
semver-3.0.1.dist-info Directory - -
sentry_sdk Directory - -
sentry_sdk-1.29.2.dist-info Directory - -
setoptconf Directory - -
setoptconf_tmp-0.3.1.dist-info Directory - -
setuptools Directory - -
setuptools-78.1.0.dist-info Directory - -
simplejson Directory - -
simplejson-3.19.1.dist-info Directory - -
six-1.16.0.dist-info Directory - -
smmap Directory - -
smmap-5.0.0.dist-info Directory - -
snowballstemmer Directory - -
snowballstemmer-2.2.0.dist-info Directory - -
sqlalchemy Directory - -
sqlalchemy-1.3.24.dist-info Directory - -
ssa Directory - -
svgwrite Directory - -
svgwrite-1.4.3.dist-info Directory - -
tap Directory - -
tap_py-3.2.1.dist-info Directory - -
testfixtures Directory - -
testfixtures-7.1.0.dist-info Directory - -
toml Directory - -
toml-0.10.2.dist-info Directory - -
tomlkit Directory - -
tomlkit-0.11.8.dist-info Directory - -
typing_extensions-4.8.0.dist-info Directory - -
unshare-0.22.dist-info Directory - -
urllib3 Directory - -
urllib3-2.0.4.dist-info Directory - -
vendors_api Directory - -
virtualenv Directory - -
virtualenv-20.21.1.dist-info Directory - -
wcwidth Directory - -
wcwidth-0.2.6.dist-info Directory - -
wmt Directory - -
wrapt Directory - -
wrapt-1.15.0.dist-info Directory - -
yaml Directory - -
yarl Directory - -
yarl-1.9.2.dist-info Directory - -
_cffi_backend.cpython-311-x86_64-linux-gnu.so File 274048 bytes April 17 2025 13:11:30.
_pyrsistent_version.py File 23 bytes April 17 2025 13:10:58.
cl_proc_hidepid.py File 4638 bytes June 05 2025 09:53:15.
clcontrollib.py File 52970 bytes June 05 2025 09:53:15.
cldetectlib.py File 18565 bytes June 05 2025 09:53:15.
cldiaglib.py File 46943 bytes June 05 2025 09:53:15.
clhooklib.py File 1296 bytes July 11 2025 17:46:23.
cli_utils.py File 1698 bytes June 05 2025 09:53:15.
cllicenselib.py File 9322 bytes June 05 2025 09:53:15.
clsetuplib.py File 4452 bytes June 05 2025 09:53:15.
clsudo.py File 14761 bytes June 23 2025 12:47:48.
configparser.py File 1546 bytes April 17 2025 13:10:58.
ddt.py File 12733 bytes April 17 2025 13:10:58.
distutils-precedence.pth File 151 bytes April 17 2025 13:10:58.
docopt.py File 19946 bytes April 17 2025 13:10:58.
hc_lve_profiler.py File 6353 bytes May 22 2025 11:14:48.
lveapi.py File 19994 bytes June 05 2025 09:53:15.
lvectllib.py File 105010 bytes June 05 2025 09:53:15.
lvestat.py File 6997 bytes June 23 2025 12:47:48.
mccabe.py File 10654 bytes April 17 2025 13:10:58.
pam.py File 7556 bytes April 17 2025 13:10:58.
pep8ext_naming.py File 19052 bytes April 17 2025 13:10:58.
py.py File 263 bytes April 17 2025 13:10:58.
pycodestyle.py File 103501 bytes April 17 2025 13:10:58.
pylve.cpython-311-x86_64-linux-gnu.so File 26088 bytes March 18 2025 16:24:34.
remove_ubc.py File 5864 bytes June 05 2025 09:53:15.
schema.py File 30221 bytes April 17 2025 13:10:58.
secureio.py File 19278 bytes June 23 2025 12:47:48.
simple_rpm.so File 11560 bytes June 23 2025 12:23:46.
six.py File 34549 bytes April 17 2025 13:10:58.
typing_extensions.py File 103397 bytes June 07 2025 10:31:54.
unshare.cpython-311-x86_64-linux-gnu.so File 8368 bytes April 17 2025 13:11:30.

Reading File: //opt/cloudlinux/venv/lib/python3.11/site-packages//mccabe.py

""" Meager code path measurement tool.
    Ned Batchelder
    http://nedbatchelder.com/blog/200803/python_code_complexity_microtool.html
    MIT License.
"""
from __future__ import with_statement

import optparse
import sys
import tokenize

from collections import defaultdict
try:
    import ast
    from ast import iter_child_nodes
except ImportError:   # Python 2.5
    from flake8.util import ast, iter_child_nodes

__version__ = '0.7.0'


class ASTVisitor(object):
    """Performs a depth-first walk of the AST."""

    def __init__(self):
        self.node = None
        self._cache = {}

    def default(self, node, *args):
        for child in iter_child_nodes(node):
            self.dispatch(child, *args)

    def dispatch(self, node, *args):
        self.node = node
        klass = node.__class__
        meth = self._cache.get(klass)
        if meth is None:
            className = klass.__name__
            meth = getattr(self.visitor, 'visit' + className, self.default)
            self._cache[klass] = meth
        return meth(node, *args)

    def preorder(self, tree, visitor, *args):
        """Do preorder walk of tree using visitor"""
        self.visitor = visitor
        visitor.visit = self.dispatch
        self.dispatch(tree, *args)  # XXX *args make sense?


class PathNode(object):
    def __init__(self, name, look="circle"):
        self.name = name
        self.look = look

    def to_dot(self):
        print('node [shape=%s,label="%s"] %d;' % (
            self.look, self.name, self.dot_id()))

    def dot_id(self):
        return id(self)


class PathGraph(object):
    def __init__(self, name, entity, lineno, column=0):
        self.name = name
        self.entity = entity
        self.lineno = lineno
        self.column = column
        self.nodes = defaultdict(list)

    def connect(self, n1, n2):
        self.nodes[n1].append(n2)
        # Ensure that the destination node is always counted.
        self.nodes[n2] = []

    def to_dot(self):
        print('subgraph {')
        for node in self.nodes:
            node.to_dot()
        for node, nexts in self.nodes.items():
            for next in nexts:
                print('%s -- %s;' % (node.dot_id(), next.dot_id()))
        print('}')

    def complexity(self):
        """ Return the McCabe complexity for the graph.
            V-E+2
        """
        num_edges = sum([len(n) for n in self.nodes.values()])
        num_nodes = len(self.nodes)
        return num_edges - num_nodes + 2


class PathGraphingAstVisitor(ASTVisitor):
    """ A visitor for a parsed Abstract Syntax Tree which finds executable
        statements.
    """

    def __init__(self):
        super(PathGraphingAstVisitor, self).__init__()
        self.classname = ""
        self.graphs = {}
        self.reset()

    def reset(self):
        self.graph = None
        self.tail = None

    def dispatch_list(self, node_list):
        for node in node_list:
            self.dispatch(node)

    def visitFunctionDef(self, node):

        if self.classname:
            entity = '%s%s' % (self.classname, node.name)
        else:
            entity = node.name

        name = '%d:%d: %r' % (node.lineno, node.col_offset, entity)

        if self.graph is not None:
            # closure
            pathnode = self.appendPathNode(name)
            self.tail = pathnode
            self.dispatch_list(node.body)
            bottom = PathNode("", look='point')
            self.graph.connect(self.tail, bottom)
            self.graph.connect(pathnode, bottom)
            self.tail = bottom
        else:
            self.graph = PathGraph(name, entity, node.lineno, node.col_offset)
            pathnode = PathNode(name)
            self.tail = pathnode
            self.dispatch_list(node.body)
            self.graphs["%s%s" % (self.classname, node.name)] = self.graph
            self.reset()

    visitAsyncFunctionDef = visitFunctionDef

    def visitClassDef(self, node):
        old_classname = self.classname
        self.classname += node.name + "."
        self.dispatch_list(node.body)
        self.classname = old_classname

    def appendPathNode(self, name):
        if not self.tail:
            return
        pathnode = PathNode(name)
        self.graph.connect(self.tail, pathnode)
        self.tail = pathnode
        return pathnode

    def visitSimpleStatement(self, node):
        if node.lineno is None:
            lineno = 0
        else:
            lineno = node.lineno
        name = "Stmt %d" % lineno
        self.appendPathNode(name)

    def default(self, node, *args):
        if isinstance(node, ast.stmt):
            self.visitSimpleStatement(node)
        else:
            super(PathGraphingAstVisitor, self).default(node, *args)

    def visitLoop(self, node):
        name = "Loop %d" % node.lineno
        self._subgraph(node, name)

    visitAsyncFor = visitFor = visitWhile = visitLoop

    def visitIf(self, node):
        name = "If %d" % node.lineno
        self._subgraph(node, name)

    def _subgraph(self, node, name, extra_blocks=()):
        """create the subgraphs representing any `if` and `for` statements"""
        if self.graph is None:
            # global loop
            self.graph = PathGraph(name, name, node.lineno, node.col_offset)
            pathnode = PathNode(name)
            self._subgraph_parse(node, pathnode, extra_blocks)
            self.graphs["%s%s" % (self.classname, name)] = self.graph
            self.reset()
        else:
            pathnode = self.appendPathNode(name)
            self._subgraph_parse(node, pathnode, extra_blocks)

    def _subgraph_parse(self, node, pathnode, extra_blocks):
        """parse the body and any `else` block of `if` and `for` statements"""
        loose_ends = []
        self.tail = pathnode
        self.dispatch_list(node.body)
        loose_ends.append(self.tail)
        for extra in extra_blocks:
            self.tail = pathnode
            self.dispatch_list(extra.body)
            loose_ends.append(self.tail)
        if node.orelse:
            self.tail = pathnode
            self.dispatch_list(node.orelse)
            loose_ends.append(self.tail)
        else:
            loose_ends.append(pathnode)
        if pathnode:
            bottom = PathNode("", look='point')
            for le in loose_ends:
                self.graph.connect(le, bottom)
            self.tail = bottom

    def visitTryExcept(self, node):
        name = "TryExcept %d" % node.lineno
        self._subgraph(node, name, extra_blocks=node.handlers)

    visitTry = visitTryExcept

    def visitWith(self, node):
        name = "With %d" % node.lineno
        self.appendPathNode(name)
        self.dispatch_list(node.body)

    visitAsyncWith = visitWith


class McCabeChecker(object):
    """McCabe cyclomatic complexity checker."""
    name = 'mccabe'
    version = __version__
    _code = 'C901'
    _error_tmpl = "C901 %r is too complex (%d)"
    max_complexity = -1

    def __init__(self, tree, filename):
        self.tree = tree

    @classmethod
    def add_options(cls, parser):
        flag = '--max-complexity'
        kwargs = {
            'default': -1,
            'action': 'store',
            'type': int,
            'help': 'McCabe complexity threshold',
            'parse_from_config': 'True',
        }
        config_opts = getattr(parser, 'config_options', None)
        if isinstance(config_opts, list):
            # Flake8 2.x
            kwargs.pop('parse_from_config')
            parser.add_option(flag, **kwargs)
            parser.config_options.append('max-complexity')
        else:
            parser.add_option(flag, **kwargs)

    @classmethod
    def parse_options(cls, options):
        cls.max_complexity = int(options.max_complexity)

    def run(self):
        if self.max_complexity < 0:
            return
        visitor = PathGraphingAstVisitor()
        visitor.preorder(self.tree, visitor)
        for graph in visitor.graphs.values():
            if graph.complexity() > self.max_complexity:
                text = self._error_tmpl % (graph.entity, graph.complexity())
                yield graph.lineno, graph.column, text, type(self)


def get_code_complexity(code, threshold=7, filename='stdin'):
    try:
        tree = compile(code, filename, "exec", ast.PyCF_ONLY_AST)
    except SyntaxError:
        e = sys.exc_info()[1]
        sys.stderr.write("Unable to parse %s: %s\n" % (filename, e))
        return 0

    complx = []
    McCabeChecker.max_complexity = threshold
    for lineno, offset, text, check in McCabeChecker(tree, filename).run():
        complx.append('%s:%d:1: %s' % (filename, lineno, text))

    if len(complx) == 0:
        return 0
    print('\n'.join(complx))
    return len(complx)


def get_module_complexity(module_path, threshold=7):
    """Returns the complexity of a module"""
    code = _read(module_path)
    return get_code_complexity(code, threshold, filename=module_path)


def _read(filename):
    if (2, 5) < sys.version_info < (3, 0):
        with open(filename, 'rU') as f:
            return f.read()
    elif (3, 0) <= sys.version_info < (4, 0):
        """Read the source code."""
        try:
            with open(filename, 'rb') as f:
                (encoding, _) = tokenize.detect_encoding(f.readline)
        except (LookupError, SyntaxError, UnicodeError):
            # Fall back if file encoding is improperly declared
            with open(filename, encoding='latin-1') as f:
                return f.read()
        with open(filename, 'r', encoding=encoding) as f:
            return f.read()


def main(argv=None):
    if argv is None:
        argv = sys.argv[1:]
    opar = optparse.OptionParser()
    opar.add_option("-d", "--dot", dest="dot",
                    help="output a graphviz dot file", action="store_true")
    opar.add_option("-m", "--min", dest="threshold",
                    help="minimum complexity for output", type="int",
                    default=1)

    options, args = opar.parse_args(argv)

    code = _read(args[0])
    tree = compile(code, args[0], "exec", ast.PyCF_ONLY_AST)
    visitor = PathGraphingAstVisitor()
    visitor.preorder(tree, visitor)

    if options.dot:
        print('graph {')
        for graph in visitor.graphs.values():
            if (not options.threshold or
                    graph.complexity() >= options.threshold):
                graph.to_dot()
        print('}')
    else:
        for graph in visitor.graphs.values():
            if graph.complexity() >= options.threshold:
                print(graph.name, graph.complexity())


if __name__ == '__main__':
    main(sys.argv[1:])

SILENT KILLER Tool