| Server IP : 123.56.80.60 / Your IP : 216.73.216.78 Web Server : Apache/2.4.54 (Win32) OpenSSL/1.1.1s PHP/7.4.33 mod_fcgid/2.3.10-dev System : Windows NT iZhx3sob14hnz7Z 10.0 build 14393 (Windows Server 2016) i586 User : SYSTEM ( 0) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files/python/Lib/site-packages/pluggy/ |
Upload File : |
"""
Tracing utils
"""
class TagTracer(object):
def __init__(self):
self._tags2proc = {}
self._writer = None
self.indent = 0
def get(self, name):
return TagTracerSub(self, (name,))
def _format_message(self, tags, args):
if isinstance(args[-1], dict):
extra = args[-1]
args = args[:-1]
else:
extra = {}
content = " ".join(map(str, args))
indent = " " * self.indent
lines = ["%s%s [%s]\n" % (indent, content, ":".join(tags))]
for name, value in extra.items():
lines.append("%s %s: %s\n" % (indent, name, value))
return "".join(lines)
def _processmessage(self, tags, args):
if self._writer is not None and args:
self._writer(self._format_message(tags, args))
try:
processor = self._tags2proc[tags]
except KeyError:
pass
else:
processor(tags, args)
def setwriter(self, writer):
self._writer = writer
def setprocessor(self, tags, processor):
if isinstance(tags, str):
tags = tuple(tags.split(":"))
else:
assert isinstance(tags, tuple)
self._tags2proc[tags] = processor
class TagTracerSub(object):
def __init__(self, root, tags):
self.root = root
self.tags = tags
def __call__(self, *args):
self.root._processmessage(self.tags, args)
def get(self, name):
return self.__class__(self.root, self.tags + (name,))