From 3c7449971cdd7731ce1421cca7869a8b7afe97bc Mon Sep 17 00:00:00 2001 From: Grabowski Date: Fri, 13 Nov 2020 15:28:53 +0100 Subject: [PATCH 1/2] Hotfix: TypeError: object of type 'dict_itemiterator' has no len() --- kafka/protocol/types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kafka/protocol/types.py b/kafka/protocol/types.py index d508b2605..b980c0554 100644 --- a/kafka/protocol/types.py +++ b/kafka/protocol/types.py @@ -182,7 +182,7 @@ def encode(self, items): if items is None: return Int32.encode(-1) return b''.join( - [Int32.encode(len(items))] + + [Int32.encode(len(list(items)))] + [self.array_of.encode(item) for item in items] ) From 6c20db681ab57f94fb1627424d79983605b94ddd Mon Sep 17 00:00:00 2001 From: Grabowski Date: Mon, 16 Nov 2020 10:03:46 +0100 Subject: [PATCH 2/2] Avoid looping over items 2x --- kafka/protocol/types.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kafka/protocol/types.py b/kafka/protocol/types.py index b980c0554..3dbd17413 100644 --- a/kafka/protocol/types.py +++ b/kafka/protocol/types.py @@ -181,9 +181,10 @@ def __init__(self, *array_of): def encode(self, items): if items is None: return Int32.encode(-1) + encoded_items = [self.array_of.encode(item) for item in items] return b''.join( - [Int32.encode(len(list(items)))] + - [self.array_of.encode(item) for item in items] + [Int32.encode(len(encoded_items))] + + encoded_items ) def decode(self, data):