From 35136f99b09fd81580e5f9fc5c0265a2a136bc56 Mon Sep 17 00:00:00 2001 From: Abhilash Raj Date: Sat, 5 Jun 2021 10:32:45 -0700 Subject: [PATCH] More fixes. - Use logging instead of print to silence errors when possible. - Parse object types as string instead of bytes. --- qweechat/input.py | 2 +- qweechat/weechat/color.py | 10 +++++++--- qweechat/weechat/protocol.py | 22 +++++++++------------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/qweechat/input.py b/qweechat/input.py index 1ee7bd9..9d81c1f 100644 --- a/qweechat/input.py +++ b/qweechat/input.py @@ -32,7 +32,7 @@ class InputLineEdit(QtWidgets.QLineEdit): textSent = QtCore.Signal(str) def __init__(self, scroll_widget): - super().__init__(scroll_widget) + super().__init__() self.scroll_widget = scroll_widget self._history = [] self._history_index = -1 diff --git a/qweechat/weechat/color.py b/qweechat/weechat/color.py index d732006..b11bffc 100644 --- a/qweechat/weechat/color.py +++ b/qweechat/weechat/color.py @@ -21,6 +21,7 @@ # import re +import logging RE_COLOR_ATTRS = r'[*!/_|]*' RE_COLOR_STD = r'(?:%s\d{2})' % RE_COLOR_ATTRS @@ -75,6 +76,9 @@ WEECHAT_BASIC_COLORS = ( ('white', 0)) +log = logging.getLogger(__name__) + + class Color(): def __init__(self, color_options, debug=False): self.color_options = color_options @@ -92,7 +96,7 @@ class Color(): index = int(color) return '\x01(Fr%s)' % self.color_options[index] except: # noqa: E722 - print('Error decoding WeeChat color "%s"' % color) + log.debug('Error decoding WeeChat color "%s"' % color) return '' def _convert_terminal_color(self, fg_bg, attrs, color): @@ -100,7 +104,7 @@ class Color(): index = int(color) return '\x01(%s%s#%s)' % (fg_bg, attrs, self._rgb_color(index)) except: # noqa: E722 - print('Error decoding terminal color "%s"' % color) + log.debug('Error decoding terminal color "%s"' % color) return '' def _convert_color_attr(self, fg_bg, color): @@ -123,7 +127,7 @@ class Color(): return self._convert_terminal_color(fg_bg, attrs, WEECHAT_BASIC_COLORS[index][1]) except: # noqa: E722 - print('Error decoding color "%s"' % color) + log.debug('Error decoding color "%s"' % color) return '' def _attrcode_to_char(self, code): diff --git a/qweechat/weechat/protocol.py b/qweechat/weechat/protocol.py index 4a69378..4e1514d 100644 --- a/qweechat/weechat/protocol.py +++ b/qweechat/weechat/protocol.py @@ -147,7 +147,7 @@ class Protocol: if len(self.data) < 3: self.data = '' return '' - objtype = bytes(self.data[0:3]) + objtype = self.data[0:3].decode() self.data = self.data[3:] return objtype @@ -197,12 +197,9 @@ class Protocol: def _obj_str(self): """Read a string in data (length on 4 bytes + content).""" value = self._obj_len_data(4) - if value is None: - return None - try: - return value.decode() - except AttributeError: - return value + if value in ("", None): + return "" + return value.decode() def _obj_buffer(self): """Read a buffer in data (length on 4 bytes + data).""" @@ -227,8 +224,8 @@ class Protocol: Read a hashtable in data (type for keys + type for values + count + items). """ - type_keys = self._obj_type().decode() - type_values = self._obj_type().decode() + type_keys = self._obj_type() + type_values = self._obj_type() count = self._obj_int() hashtable = WeechatDict() for _ in range(count): @@ -247,7 +244,7 @@ class Protocol: keys_types = [] dict_keys = WeechatDict() for key in list_keys: - items = list(item for item in key.split(':')) + items = key.split(':') keys_types.append(items) dict_keys[items[0]] = items[1] items = [] @@ -258,7 +255,6 @@ class Protocol: for _ in enumerate(list_path): pointers.append(self._obj_ptr()) for key, objtype in keys_types: - objtype = objtype item[key] = self._obj_cb[objtype]() item['__path'] = pointers items.append(item) @@ -296,7 +292,7 @@ class Protocol: def _obj_array(self): """Read an array of values in data.""" - type_values = self._obj_type().decode() + type_values = self._obj_type() count_values = self._obj_int() values = [] for _ in range(count_values): @@ -328,7 +324,7 @@ class Protocol: # read objects objects = WeechatObjects(separator=separator) while len(self.data) > 0: - objtype = self._obj_type().decode() + objtype = self._obj_type() value = self._obj_cb[objtype]() objects.append(WeechatObject(objtype, value, separator=separator)) return WeechatMessage(size, size_uncompressed, compression,