Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
eventlog.py64 linesDownload Raw Back to console
1import collections2 3import urwid4 5from mitmproxy import log6from mitmproxy.tools.console import layoutwidget7 8 9class LogBufferWalker(urwid.SimpleListWalker):10    pass11 12 13class EventLog(urwid.ListBox, layoutwidget.LayoutWidget):14    keyctx = "eventlog"15    title = "Events"16 17    def __init__(self, master):18        self.master = master19        self.walker = LogBufferWalker(collections.deque(maxlen=self.master.events.size))20 21        master.events.sig_add.connect(self.add_event)22        master.events.sig_refresh.connect(self.refresh_events)23        self.master.options.subscribe(24            self.refresh_events, ["console_eventlog_verbosity"]25        )26        self.refresh_events()27 28        super().__init__(self.walker)29 30    def load(self, loader):31        loader.add_option(32            "console_focus_follow", bool, False, "Focus follows new flows."33        )34 35    def set_focus(self, index):36        if 0 <= index < len(self.walker):37            super().set_focus(index)38 39    def keypress(self, size, key):40        if key == "m_end":41            self.set_focus(len(self.walker) - 1)42        elif key == "m_start":43            self.set_focus(0)44        return super().keypress(size, key)45 46    def add_event(self, entry: log.LogEntry):47        if log.log_tier(self.master.options.console_eventlog_verbosity) < log.log_tier(48            entry.level49        ):50            return51        txt = f"{entry.level}: {entry.msg}"52        if entry.level in ("error", "warn", "alert"):53            e = urwid.Text((entry.level, txt))54        else:55            e = urwid.Text(txt)56        self.walker.append(e)57        if self.master.options.console_focus_follow:58            self.walker.set_focus(len(self.walker) - 1)59 60    def refresh_events(self, *_) -> None:61        self.walker.clear()62        for event in self.master.events.data:63            self.add_event(event)64 
codekingpro/portable-devtools · Team Ai