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
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)."""
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):
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 = []
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)
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):
# 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,