Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
debug.py147 linesDownload Raw Back to pyasn1
1#2# This file is part of pyasn1 software.3#4# Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>5# License: https://pyasn1.readthedocs.io/en/latest/license.html6#7import logging8import sys9 10from pyasn1 import __version__11from pyasn1 import error12 13__all__ = ['Debug', 'setLogger', 'hexdump']14 15DEBUG_NONE = 0x000016DEBUG_ENCODER = 0x000117DEBUG_DECODER = 0x000218DEBUG_ALL = 0xffff19 20FLAG_MAP = {21    'none': DEBUG_NONE,22    'encoder': DEBUG_ENCODER,23    'decoder': DEBUG_DECODER,24    'all': DEBUG_ALL25}26 27LOGGEE_MAP = {}28 29 30class Printer(object):31    # noinspection PyShadowingNames32    def __init__(self, logger=None, handler=None, formatter=None):33        if logger is None:34            logger = logging.getLogger('pyasn1')35 36        logger.setLevel(logging.DEBUG)37 38        if handler is None:39            handler = logging.StreamHandler()40 41        if formatter is None:42            formatter = logging.Formatter('%(asctime)s %(name)s: %(message)s')43 44        handler.setFormatter(formatter)45        handler.setLevel(logging.DEBUG)46        logger.addHandler(handler)47 48        self.__logger = logger49 50    def __call__(self, msg):51        self.__logger.debug(msg)52 53    def __str__(self):54        return '<python logging>'55 56 57class Debug(object):58    defaultPrinter = Printer()59 60    def __init__(self, *flags, **options):61        self._flags = DEBUG_NONE62 63        if 'loggerName' in options:64            # route our logs to parent logger65            self._printer = Printer(66                logger=logging.getLogger(options['loggerName']),67                handler=logging.NullHandler()68            )69 70        elif 'printer' in options:71            self._printer = options.get('printer')72 73        else:74            self._printer = self.defaultPrinter75 76        self._printer('running pyasn1 %s, debug flags %s' % (__version__, ', '.join(flags)))77 78        for flag in flags:79            inverse = flag and flag[0] in ('!', '~')80            if inverse:81                flag = flag[1:]82            try:83                if inverse:84                    self._flags &= ~FLAG_MAP[flag]85                else:86                    self._flags |= FLAG_MAP[flag]87            except KeyError:88                raise error.PyAsn1Error('bad debug flag %s' % flag)89 90            self._printer("debug category '%s' %s" % (flag, inverse and 'disabled' or 'enabled'))91 92    def __str__(self):93        return 'logger %s, flags %x' % (self._printer, self._flags)94 95    def __call__(self, msg):96        self._printer(msg)97 98    def __and__(self, flag):99        return self._flags & flag100 101    def __rand__(self, flag):102        return flag & self._flags103 104_LOG = DEBUG_NONE105 106 107def setLogger(userLogger):108    global _LOG109 110    if userLogger:111        _LOG = userLogger112    else:113        _LOG = DEBUG_NONE114 115    # Update registered logging clients116    for module, (name, flags) in LOGGEE_MAP.items():117        setattr(module, name, _LOG & flags and _LOG or DEBUG_NONE)118 119 120def registerLoggee(module, name='LOG', flags=DEBUG_NONE):121    LOGGEE_MAP[sys.modules[module]] = name, flags122    setLogger(_LOG)123    return _LOG124 125 126def hexdump(octets):127    return ' '.join(128        ['%s%.2X' % (n % 16 == 0 and ('\n%.5d: ' % n) or '', x)129         for n, x in zip(range(len(octets)), octets)]130    )131 132 133class Scope(object):134    def __init__(self):135        self._list = []136 137    def __str__(self): return '.'.join(self._list)138 139    def push(self, token):140        self._list.append(token)141 142    def pop(self):143        return self._list.pop()144 145 146scope = Scope()147 
codekingpro/portable-devtools · Team Ai